Skip to contents

The multimod package is under active but experimental development. This document outlines current capabilities, design scope, limitations, and roadmap for future enhancements.

🚀 Target Releases

v0.1: GAMS reader and writer, basic AST, LaTeX exporter (internal use)

v0.2: JuMP export and basic reader, full AST, model consistency checks

v0.3: Pyomo, GMPL export, basic readers, updated LaTeX exporter

v0.4: Data connection (energyRt), automated mapping parameters

v0.5: Parameter folding, equation simplification, equations to R-functions

v1.0: Polished release with tests, tutorials, CRAN-ready

Expected timeline: 6-12 months for v1.0 (starting from June 2025), with incremental releases every 1-3 months.


✔️ What’s Implemented

  • GAMS-style equation parsing into symbolic abstract syntax trees (AST)
  • Structured representation of:
    • Sets
    • Parameters
    • Variables
    • Mappings
    • Equations and constraints
  • Rendering of equations to:
    • GAMS
    • LaTeX
    • Julia/JuMP (in progress)
  • Expression tree visualization with visNetwork
  • Basic symbolic simplification
  • Integration with energyRt data structures

🔒 Current Limitations

  • Limited to linear programming (LP) models only
  • Designed closely around the energyRt models structure
  • Only GAMS input is currently supported
  • No general-purpose parsing of other languages like JuMP, Pyomo, or AMPL
  • Not intended to convert arbitrary code or full model definitions
  • No direct support for model data input/output formats

🎯 Project Philosophy

The goal of multimod is not to automate full model translation or parsing. Instead, it aims to:

  • Facilitate development and symbolic restructuring of optimization models
  • Act as a transparent intermediate representation for multi-language export
  • Assist with documentation and visualization of models

The symbolic structure enables users to adapt and refine models by hand, especially during development, testing, or educational use.


🧭 Potential Use Cases

  • Model prototyping and equation editing
  • Generation of readable documentation (e.g., LaTeX equation listings)
  • Translating symbolic equations across modeling languages (e.g., GAMS ⇄ JuMP ⇄ Pyomo)
  • Structural visualization for debugging or collaboration
  • Teaching optimization model structure and indexing concepts

🔜 Planned Features

  • Input parsing support for:
    • read_jump()
    • read_pyomo()
    • read_gmpl()
  • Output rendering to:
    • Pyomo, AMPL, GMPL
    • Equation simplification and data-driven dimensions reduction (“folding”)
  • (Potential) support for:
    • MPS, CPLEX, Gurobi, other formats
    • Nonlinear expressions
    • Integer/binary variables
    • Equation grouping, tagging, and metadata
  • Enhanced IDE or browser-based visualizations

🤝 Contributing & Sponsorship

The package is under active development. Contributions are welcome!

Ways to help:

  • Open issues for bugs, feature requests, or improvements
  • Propose support for new modeling targets
  • Share use cases or example models
  • Sponsor development of specific features (e.g., Pyomo exporter)

For contributions, visit: https://github.com/optimal2050/multimod
Contact: