- General
- Upgrade pre-commit dependencies.
- Enhance bound propagation for
AvgPool2d
class. - Allow registering metadata to symbols via
symbol._metadata
attribute.
- General
- Fix the bugs in dynamic set assignments.
- Rewrite parts of GAMS Control API.
- Fix debugging level bug of NEOS backend.
- Fix license issue of big models that are solved with frozen solve.
- Allow loadRecordsFromGdx to domain forward.
- Upgrade gamspy_base and gamsapi dependencies.
- Enhance bound propagation for
MaxPool2d
andMinPool2d
classes.
- Testing
- Add bound propagation tests for
MaxPool2d
andMinPool2d
classes.
- Add bound propagation tests for
- Documentation
- Update embedding Neural Network documentation.
- General
- Fix implicit parameter validation bug.
- Migrate GAMSPy CLI to Typer.
- Threads can now create a container since we register the signal only to the main thread.
- Fix solver options bug in frozen solve.
- Synchronize after read.
- Upgrade gamspy_base and gamsapi dependencies.
- Add
--checkout-duration
and--renew
options togamspy install license
.
- Testing
- Lower the number of dices in the interrupt test and put a time limit to the solve.
- Add tests for piecewise linear functions.
- Documentation
- Install dependencies in the first cell of the example transportation notebook.
- Add Formulations page to list piecewise linear functions and nn formulations.
- General
- Resolve static code analysis issues to improve code quality.
- Return the value as a float if the given domain sets are all literals.
- Add an automation script to update pyproject.toml, switcher, version test, and the release notes.
- Allow propagating bounds of the output in the Linear class.
- Allow GAMS to find the available port and connect to it.
- Upgrade gamspy_base and gamsapi dependencies.
- Testing
- Set COVERAGE_CORE to sysmon to make use of the new sys.monitoring package in Python.
- Documentation
- Add an example demonstrating how to solve the Minimum Cost Multi-Commodity Flow Problem using Column Generation in GAMSPy.
- Remove non-negative variable type from the docs.
- Add plausible.js for analytics.
- Minor update in embedding nn documentation.
- Add descriptions and example code to formulations documentation.
- General
- Fix the bug in equality type traversal. Use post-traversal instead of in-order traversal.
- General
- Change the way to show limited variables in latex file.
- Overload rpower for operables.
- Support neg overload for Card and Ord operations.
- Fix the bug in new lag/lead syntax.
- Add a verification step for working directory path length.
- Add
map_value
function to the math library. - Allow conditioning on conditions.
- Upgrade gamspy_base and gamsapi dependencies.
- Documentation
- Add a section for limited variables.
- Add an example that shows how to read from another Container.
- General
- Fix non-zero return code issue in case there is an error in the script. In case the return code is non-zero, GAMSPy will not launch GAMS MIRO.
- Fix the behaviour of CTRL+C.
- Allow alternative
set +/- n
syntax for lead and lag operations. - Upgrade gamspy_base and gamsapi dependencies.
- Expose the filename and the line number of the solve to the listing file.
- Improve the performance of
load_from
argument of Container.
- Testing
- Add a new performance test which compares the performance of GAMS Transfer read and GAMSPy read.
- Documentation
- Add a favicon.
- General
- Allow printing the records of variable/equation attributes with a print(variable.attribute[domain].records) syntax.
- Allow printing the records of a subset of a parameter with print(parameter['literal'].records) syntax.
- Allow printing the records of a subset of a set with print(set['literal'].records) syntax.
- Update variable/equation attribute domains on addGamsCode call.
- Show log file instead of listing file on solve statements with NEOS backend.
- Add Linear layer formulation
- Fix minor bug of domain conflict in batched matrix multiplication
- Improve the error messages of the thrown exceptions in case the user provide a model option at Container creation time.
- Do not allow models with the same name to override each other.
- Testing
- Fix race conditions in the pipeline.
- Remove redundant setRecords in gapmin.py example.
- Add sq.py model to the test model suite.
- Update hansmge model.
- Fix lower bound in reshop model.
- Add tests for the Linear layer
- Add a script to measure the overhead of GAMSPy and Python in general for each model in the model library.
- Documentation
- Add documentation for the Linear layer
- General
- Do not create a GDX file when it's not necessary.
- Do not carry solver options from the previous solve to the new solve.
- Fix toGams bug of MathOp symbols.
- Use symbol< syntax of GAMS to handle domain forwarding.
- Add "same" and "valid" options for Conv2d padding.
- Update dependencies. gamspy_base -> 48.1.1 and gamsapi -> 48.1.0.
- Make minimum supported Python version 3.9 and add support for Python 3.13.
- Documentation
- Fix documented type of model.solve_status.
- Add num_equations attribute to the model page of user guide.
- Add synchronization docs to reference api.
- Testing
- Add one to one comparison tests with reference files in toGams tests.
- Add tests for "same" and "valid" padding options of Conv2d.
- General
- Fix solver installation bug in case of a solver installation before the license installation.
- Fix the validation bug on multiple operations in a row.
- Fix set attribute comparison bug.
- Testing
- Remove leftover files after running all tests.
- General
- Validate whether the solver is installed only for local backend.
- Change the default value of sense to Sense.FEASIBILITY.
- Support output in Container constructor.
- Fix debugging_level bug.
- Add additional checks for the validity of the license.
- Allow generateGamsString function only if the debugging level is set to "keep".
- Fix socket communication issue on license error.
- Distinguish GamspyException from FatalError. The user might catch GamspyException and continue but FatalError should never be caught.
- Fix singleton assignment bug.
- Allow an alternative syntax for variable/equation attributes (e.g. b[t].stage = 30).
- Add support for MaxPool2d/MinPool2d/AvgPool2d.
- Add support for flatten_dims for flattening n domains into 1 domain.
- Show class members groupwise in the table of contents (first methods, then properties).
- Use the new license server endpoint to verify the license type.
- Don't do extra unnecessary GAMSPy to GAMS synch after addGamsCode.
- Fix incorrect domain information of symbols created by addGamsCode
- Fix network license issue on NEOS Server.
- Replace non-utf8 bytes of stdout.
- Testing
- Remove license uninstall test to avoid crashing parallel tests on the same machine.
- Add tests for the generated solve strings for different type of problems.
- Add a test for Container output argument.
- Add tests for debugging_level.
- Add tests to verify the validity of the license.
- Add memory check script for the performance CI step.
- Add tests for the alternative syntax for variable/equation attributes.
- Add tests for pooling layers and flatten_dims
- Documentation
- Fix broken links in the documentation.
- Add a ci step to check doc links.
- Improve the wording of debugging document.
- Add pooling and flatten_dims docs.
- General
- Fix frozen solve with non-scalar symbols.
- Fix the definition update problem while redefining an equation with definition argument.
- Introduce default directories to keep license information on upgrade.
- Add --existing-solvers and --install-all-solvers options for gamspy install solver.
- Add --uninstall-all-solvers option for gamspy uninstall solver.
- Show license path on gamspy show license command.
- Simplify the implementation of the copy container operation.
- Add Conv2d formulation for convenience
- Map GAMSPy problem types to NEOS problem types before sending the job.
- Upgrade gamspy_base and gamsapi versions to 47.6.0.
- Testing
- Add test for the frozen solve with non-scalar symbols.
- Add a test to verify the behaviour of equation redefinition with definition argument.
- Test the usage of a license that is in one of the default paths.
- Fix the issue related to reading equation records from a gdx file.
- Add tests to verify the records after reading them from a gdx file.
- Add tests for installing/uninstalling solvers.
- Add tests to verify correctness of Conv2d formulation
- Add a test to verify GAMSPy -> NEOS mapping.
- Add an execution error test.
- Documentation
- Update the documentation of install/uninstall command line arguments.
- Add a section for NN formulations
- General
- Fix starting from a loadpoint for GAMS Engine backend.
- Fix solver options issue for GAMS Engine backend.
- Fix solver options issue for NEOS backend.
- Support external equation for GAMS Engine backend.
- Change the behaviour of expert synch mode.
- Update quick start guide with latex to pdf output.
- Fix quote issue in paths.
- Activation functions now return added equations as well.
- skip_intrinsic option added for log_softmax.
- Allow installing/uninstalling multiple solvers at once.
- Make miro_protect an option.
- Show a better help message on gamspy -h command.
- Fix missing links in api reference.
- Set default problem type as MIP instead of LP.
- Allow UniverseAlias in assignments.
- Add performance ci step to check model generation time difference.
- Update gamspy_base and gamsapi to 47.5.0.
- Documentation
- Add a warning about the manipulation of records via .records.
- Fix model attribute return type.
- Testing
- Add sat problem to the example models.
- General
- Include variable infeasibilities in model.computeInfeasibilities().
- Remove cone equation type.
- Fix empty space issue in paths.
- Documentation
- Add gamspy probe and gamspy retrieve to the cli reference page.
- Fix typo in miro docs.
- General
- Fix GAMS Engine get_logs return values according to the status code.
- Allow explicit port definition via environment variable to communicate with GAMS.
- Replace GamsWorkspace with GAMSPy workspace implementation.
- Remove unnecessary validation for system_directory.
- Better formatting for gamspy list solvers and gamspy list solvers -a.
- Change the structure installing licenses on offline machines.
- Fix UniverseAlias bug.
- Check standard locations for GAMS MIRO.
- Simplify toLatex output.
- Make name optional for addX syntax of adding symbols.
- Add mod overload for all operables.
- Fix domain forwarding issue when trying to forward records to the same set.
- Do not convert eps to zero by default.
- Add Sand and Sor operations.
- Ensure that external equations contain == operation.
- Testing
- Use the Container that is created in the setup phase instead of creating a new one.
- Remove unnecessary init files in tests.
- Add a test for invalid port.
- Explicitly close the Container for jobs executed by ProcessPoolExecutor.
- Add a test for long running jobs with network license.
- Add tests for gamspy probe and gamspy retrieve license.
- Add test to use UniverseAlias object as domain.
- Add tests to verify that symbol creation with no name is possible.
- Documentation
- Add what is gamspy page to docs.
- Update indexing docs.
- Add a link to model library on the landing page.
- Encourage the use of the Discourse platform instead of sending direct emails to [email protected].
- Add instructions on how to install a license on an offline machine.
- Update what is gamspy page model example.
- Change the order of symbol declaration and data specification in the quick start guide.
- Add equation listing, variable listing, and interoperabiltiy sections to quick start guide.
- Add gamspy.exceptions to the api reference.
- Change the order of indexing, lag-lead operations, ord-card operations and number.
- Add gamspy.NeosClient to the api reference.
- Add model attributes to docstring.
- General
- Retry login with exponential backoff in GAMS Engine backend.
- Allow to set all model attributes that can be set before solve in GAMS.
- Fix equation listing, variable listing parsing when listing file is specified.
- Testing
- Use contextmanager to create atomic conda environments.
- Add tests for model attribute options.
- Documentation
- Fix links in the api reference.
- Add an example that shows how to embed NN to an optimization problem.
- General
- Add container.in_miro flag to selectively load data.
- Parse error message after verifying the return code for engine backend.
- Fix the behaviour of Model if it's declared twice with objective function.
- Update the error message of license error.
- Fix output stream validation.
- Fix exception on solve in case listing file is specified.
- Add external equations support.
- Do not raise exception in case GAMS Engine returns 308 on get_logs call.
- Testing
- Add test for container.in_miro flag.
- Add tests to simulate Jupyter Notebook behaviour.
- Remove system_directory for tests.
- Add a test which specifies the listing file and fails because the license does not allow to run the model.
- Add tests for external equations support.
- Add traffic model to the model library.
- Documentation
- Document in_miro flag.
- Add docstring for setBaseEqual.
- Add section "External Equations" under Advanced documentation.
- Add section "Extrinsic Functions" under Advanced documentation.
- General
- Add getEquationListing function to be able to inspect generated equations.
- Add infeasibility threshold filter for equation listings.
- Add getVariableListing function to be able to inspect generated variables.
- Testing
- Add tests for getEquationListing function.
- Add tests for getVariableListing function.
- Test infeasibility threshold.
- Documentation
- Add docs for getEquationListing.
- Add docs for getVariableListing.
- General
- Add generate_name_dict option.
- Disable solution report by default.
- Fix the order of equations in toGams utility.
- Allow options in toGams.
- Add loadpoint option to start from a solution.
- Upgrade gamspy_base and gamsapi to 47.4.0.
- General
- Add SOS1 ReLU implementation.
- Add repr to all GAMSPy language constructs for better debugging.
- Give a warning in case the domain is not initialized by the time there is an attribute assigment.
- Allow indexing on alias symbols.
- Add reference_file option.
- Add selective loading for solve statements.
- Change default port to communicate with license server to 443.
- Fix installing licenses from a path.
- Documentation
- Add API docs for SOS1 ReLU implementation.
- Explain the working directory - debugging level relationship.
- Testing
- Add tests for SOS1 ReLU implementation.
- Shorten attribute assignments in model library (variable.l[...] = ... -> variable.l = ...).
- Add tests for indexing on alias symbols.
- Test selective loading for solve statements.
- Add new install license tests.
- Add a new model (coex) to the model library.
- General
- Introduce matrix multiplication operator
@
. - Add most common activation functions for machine learning.
- Improve domain checking.
- Write division with frac in toLatex function.
- Allow specifying port for the communication with GAMS license server with --port argument of GAMSPy CLI.
- Introduce matrix multiplication operator
- Documentation
- Add GAMSPy and Machine Learning section.
- Add ML examples.
- Give more information about the restrictions of frozen solve.
- Testing
- Add tests for different cases of matrix multiplication.
- Add tests for activation functions.
- Add tests for domain checking.
- Shorten refrigerator example model by folding repetitive code into loops.
- General
- Support .where syntax for Card and Ord.
- Return condition on where operations on the right instead of expression.
- Support custom streams for output redirection.
- Catch set is already under control errors early.
- Documentation
- Fix docstring of the Card operation.
- Add warning about non-professional licenses in addGamsCode docstring.
- Add an example to show how to redirect output to a custom stream.
- Testing
- Add tests for .where syntax for Card and Ord.
- Add tests to catch set is already under control errors.
- Add a test which redirects output to a custom stream.
- General
- Make all file read and writes with utf-8 encoding.
- Fix model instance record columns.
- Allow all iterables for equations argument of model.
- Fix the bug in socket connection messages.
- Testing
- Add a test to verify the columns of symbols in model instance solves.
- Test set difference for model equations argument.
- General
- Make trace file name dynamic to avoid race condition on parallel runs.
- Fix log options for GAMS Engine backend.
- Initial support for GAMSPy to Latex.
- Generate solver options file under container working directory instead of current directory.
- Fix implicit set issues for toGams function.
- Documentation
- Add links to the api reference for symbols and functions mentioned in the documentation.
- Minor documentation corrections.
- Testing
- Logout from GAMS Engine only on Python 3.12 to avoid unauthorized calls on parallel jobs.
- Add tests to verify the behaviour of different logoption values.
- Add tests for GAMSPy to Latex.
- General
- Fix hanging issue on Windows for GAMS Engine backend.
- Refactor toGams converter.
- Fix solver options file path bug.
- Testing
- Add more tests for GAMS MIRO.
- General
- Change default solvers to 'CONOPT', 'CONVERT', 'CPLEX', 'GUSS', 'IPOPT', 'IPOPTH', 'KESTREL', 'NLPEC', 'PATH', and 'SHOT'
- Fix the version of gamspy_base when "gamspy update" command is being executed.
- Fix the order issue for Alias in toGams function.
- Add exponential backoff for GAMS Engine logout api.
- Add symbol validation for Ord operation.
- Testing
- Update model library tests according to the new default solvers.
- Add a test to verify that modifiable symbols cannot be in conditions for model instance runs.
- Add new tests for symbol validation.
- General
- Set the records of objective value in model instance solves.
- Allow using an environment variable to set the GAMS system directory (given environment variable will override the system directory even if the user provides a system directory argument to Container).
- Use gdxSymbols commandline option instead of manually marking symbols dirty.
- Add memory_tick_interval, monitor_process_tree_memory, and profile_file options.
- Change the way to generate GAMS model from a GAMSPy model.
- Remove import_symbols argument for addGamsCode since it is not needed anymore.
- Documentation
- Redirect model library page to gamspy-examples Github repo.
- Update toGams docs.
- Update doctest of addGamsCode.
- Testing
- Add model instance tests that check the objective value.
- Update system directory test to adjust to the environment variable support.
- Add tests for profiling options.
- General
- Support output redirection for NEOS backend.
- Support GAMSPy to GAMS automatic conversion.
- Add support for old way of installing a license.
- Documentation
- Update model documentation to show how to redirect NEOS output to a file.
- Add examples to all public functions in API Reference.
- Testing
- Add a new model (knapsack) to the model library.
- General
- Communicate with GAMS executable via socket instead of spawning a new job everytime.
- Documentation
- Adjust debugging page according to the new .gms generation rules.
- Update installation page to adjust to the new licensing scheme.
- Testing
- Add new tests to verify correct license installation and listing solvers.
- General
- Fix equation/variable listing bug.
- Exclude autogen statements in generateGamsString raw.
- Upgrade gamspy_base and gamsapi versions to 47.1.0.
- Fix parameter equality bug in equations.
- Set upper bound of numpy version below 2 until gamsapi supports it.
- Documentation
- Fix the alignment of code section in debugging page.
- Testing
- Add test to verify the correctness of parameter equality in equations.
- General
- Do not open gdx file in case there is nothing to load.
- Fix solver capability check bug.
- Enable explicit expert synchronization for symbols.
- Fix dist function in math package. Testing
- Adapt generateGamsString tests to new the gdx load logic.
- Add test for the solver capability bug.
- Test explicit expert synchronization for symbols.
- General
- Do not pick the default solver if the given solver is not compatible with the problem type.
- Add extrinsic function support.
- Expose addGamsCode to user.
- Refactor the underlying implementation of options.
- Show better error messages.
- Fix number of arguments that log_gamma takes.
- Rename getStatement to getDeclaration.
- Testing
- Add tests for extrinsic functions.
- Test whether the given solver is capable of solving the problem type.
- Add an addGamsCode test for each problem type.
- Test Jupyter Notebooks in docs automatically.
- update log option tests.
- Documentation
- Remove unnecessary GTP functions from documentation
- Add a doctest for addGamsCode.
- Update the documentation on generating log files.
- General
- Add checks on model name.
- Adjust when to throw an exception and when to throw a warning for different SolveStatus values.
- Make autogenerated model attribute symbol names independent of the model name.
- Do not allow expressions and symbols to be used as truth values.
- Add deprecation message for getStatement and expose getDeclaration and getDefinition.
- Override repr and str of Container.
- Synchronize gamspy_base and gamsapi versions.
- Testing
- Test invalid model names.
- Add tests for expressions and symbols that are used as truth values.
- Add tests for repr and str of Container.
- General
- Set log and listing file option relative to os.cwd instead of workspace.working_directory.
- Simplify expression generation and fix incorrect expression data.
- Add logoption=4.
- Add show_raw option to the generateGamsString function.
- Testing
- Test relative path for listing file and log file creation options.
- Update log option tests.
- Add new tests for generateGamString.
- Documentation
- Remove the remnants of .definition and .assignment syntax from documentation.
- Fix the example in gamspy for gams users.
- Add notes about the equivalent operation in GAMS to .where syntax in GAMSPy.
- Update the documentation for debugging with generateGamsString.
- General
- Add infeasibility_tolerance as a model attribute.
- Make urllib3 a true dependency instead of an optional one.
- Do not suppress compiler listing by default.
- Improve the performance of model attribute loading.
- Load miro input symbols once.
- Fix license path for model instance.
- Documentation
- Add documentation about solver specific infeasibility options.
- General
- Fix dataframe column names of GAMS MIRO input tables.
- Catch solve status errors and throw necessary exceptions.
- pow returns sqrt instead of rPower if the exponent is 0.5.
- Deprecate delayed_execution mode.
- Replace pylint, flake8 and black with ruff.
- Implement /api/auth -> post, /api/auth/login -> post and /api/auth/logout -> post for GAMS Engine.
- Allow dumping log file to arbitrary path.
- Allow dumping listing file to arbitrary path.
- Allow dumping gdx file to arbitrary path.
- Disallow equation definitions without any equality sign.
- Add calculate_infeasibilities function for variables, equations and models.
- Add 'gamspy show license', and 'gamspy show base' commands.
- Replace del with atexit.register function.
- Testing
- Replace cta PandasExcelReader and PandasExcelWriter with new ExcelReader and ExcelWriter from GAMS Connect correspondingly.
- Add a new model (Nurses) to the model library and the Notebook examples.
- Add an AC optimal power flow (ACOPF) model to the model library.
- Add a test to verify the generated string for power where the exponent is 0.5.
- Add tests for /api/auth.
- Add a test for creating log file with arbitrary name.
- Add a test for creating lst file with arbitrary name.
- Add a test for creating gdx file with arbitrary name.
- Add tests for infeasibility calculations.
- Documentation
- Remove FAQ about Google Colab (it is resolved) and add FAQ about Windows Defender.
- Remove documentation for delayed execution mode.
- Add an example for providing solver options.
- Document CLI for gamspy show commands.
- General
- Implement GAMS MIRO integration.
- Update minimum gamsapi and gamspy_base version to 46.1.0.
- Testing
- Add tests for GAMS MIRO.
- Documentation
- Add documentation of GAMS MIRO integration.
- General
- Adapt debugging level to GAMS 46 debugging levels.
- Adapt getInstalledSolvers to renaming of SCENSOLVER
- Testing
- Add test for GAMS Engine extra model files with incorrect relative path.
- Update the results of model instance tests (CONOPT3 -> CONOPT4).
- General
- Fix relative path issue of GAMS Engine backend.
- Use $loadDC instead of $load to better catch domain violations.
- Bypass constructor while creating a Container copy.
- Do not execute_unload in case there is no dirty symbols to unload.
- Update the behavior of
gamspy install/uninstall license
. - Implement GAMS Engine Client and consolidate NeosClient and EngineClient into one argument in solve.
- Fix finding variables to mark in power and sameAs operations.
- Testing
- Add test for GAMS Engine extra model files with incorrect relative path.
- Add tests for new GAMS Engine Client.
- Add a test to catch domain violation.
- Remove declaration of objective variables and functions and add the equations into Python variables.
- Add a new test to verify the license installation/uninstallation behavior.
- Add a test to find variables in power operation.
- Documentation
- Add a note in model documentation to warn about relative path requirement of GAMS Engine.
- Add documentation for solving models asynchronously with GAMS Engine.
- Modify model library table generation script to add more information and better table styling.
- General
- Allow assigning VariableType enum or EquationType enum as an attribute after object creation for Equation and Variable.
- Fix running twice on symbol declaration with records
- Return better error messages for incorrectly provided solver, options, and output arguments.
- Fix missing uels_on_axes argument in setRecords.
- Start using pylint to improve code quality.
- Testing
- Add tests for assigning type to Variable and Equation after creation.
- Add models information at the top of each model's docstring.
- Add tests for setRecords with uels on axes.
- Documentation
- Add docs for translating GAMS Macros to GAMSPy.
- General
- Implement GAMS MIRO integration.
- Allow variable/equation attribute assignment without any index.
- Run GAMS on symbol declaration and setRecords.
- Add debugging_level argument to Container.
- Performance improvements (~25-30%).
- Testing
- Add tests for GAMS MIRO.
- Test scalar variable/equation assignment without any index.
- Test uel order.
- Documentation
- Add documentation of GAMS MIRO integration.
- Document assigning to scalar variable/equation.
- Update documentation of frozen solve (model instance in GAMS).
- Add documentation for debugging levels.
- General
- Support slices for indexing.
- Fix unary operator for expressions
- Fixes SpecialValues bug in expressions.
- Fix the bug for nonbinding equations.
- Fix discovery of variables in math operations.
- Fix literal while checking for domain validation.
- Testing
- Add tests for slicing and ellipsis.
- Add tests for unary operator applied to expressions.
- Add tests to verify the correctness of SpecialValues in expressions.
- Add more tests for nonbinding equations.
- Documentation
- Document indexing with slices and ellipsis.
- General
- Verify dimensionality of the symbol and the given indices to provide better error messages.
- Allow Model object to also accept tuple of equations.
- List available and installed solvers in alphabetically sorted order.
- Fix adding autogenerated equations twice.
- Generate unique names for the autogenerated variables and equations.
- Add str and repr to Model.
- Allow literals in sameAs operation.
- Make Number operable.
- Add more data validation functions.
- Clear autogenerated symbols from the container if there is an exception.
- Fix Alias bug while preparing modified symbols list.
- Testing
- Add tests to check if incompatible dimensionality throws exception.
- Test validation errors.
- Allow providing system directory for the tests via environment variable.
- Documentation
- Add documentation for
matches
argument of Model.
- Add documentation for
- General
- Expose GTP special values via gp.SpecialValues
- Fix NEOS bug when the previous workfile comes from another backend.
- Optimize read function of Container by assigning the symbols' attributes directly while casting.
- Remove autogenerated variable and equation from Container after each solve.
- Recover dirty and modified states if the write is invoked by the user.
- Do not expose cast_to_gamspy to user.
- Abstract backends to allow easier extension.
- Add compress, mode, eps_to_zero arguments to write
- Add load_records, mode, and encoding arguments to read
- Documentation
- Fix Variable attribute assignments in user guide.
- Add more examples in docstrings.
- Add docs for collecting the results of non-blocking NEOS Server solves.
- Testing
- Test the special value usage in assignments for Parameter, ImplicitParameter and Operation (Sum, Smax, Smin, Product).
- Add hansmpsge model to the model library.
- Add tests for the new arguments of write
- Add tests for the new arguments of read
- General
- Fix setRecords bug
- Run after an equation is defined
- Testing
- Fix incorrect order of setRecords in gapmin model
- Fix domain violation in the unit tests revealed by the execution of equation definitions in immediate mode.
- Use gams_math.sqr instead of custom sqr function in tests.
- General
- Fix the bug in writing only modified symbols.
- Return summary dataframe for all synchronous backends.
- Fix the bug in using set, alias attributes in conditions.
- Documentation
- Re-run notebooks to reflect the changes in solve summary.
- Testing
- Add tests for the returned summary dataframe from solve.
- Add tests for solve with trace options.
- General
- Fix missing atttributes of Alias such as .first, .last etc.
- Fix global option bug
- Display summary on Jupyter Notebook.
- Testing
- Add tests for Alias attributes.
- General
- Generate expression representation as soon as it is created to avoid tall recursions.
- Find variables in equations by iteratively traversing instead of doing recursion.
- Add NEOS Server as a backend to solve models.
- Fix domain for the equations that were specified in the constructor of the equation.
- Check if the container of domain symbols of a symbol match with the symbol's container.
- Check if the container is valid before running the model.
- Documentation
- Add documentation for NEOS backend.
- Testing
- Add NEOS Server as a backend to solve models.
- Add tests for NEOS backend.
- Add tests for equations that were defined in the constructor.
- Add tests for checking the containers of domain symbols.
- General
- Fix the issue of not setting options that are set to 0 (bug fix)
- Testing
- Remove duplicated equations in models for MCP models.
- General
- Fix not equals overload of Ord and Card operations (bug fix)
- Refactor generation of GAMS string
- Documentation
- Move doc dependencies to pyproject.toml
- General
- Allow creating log file in working directory.
- Forbid extra arguments for pydantic models (Options, EngineCofig)
- Documentation
- Update model options table
- Update jupyter notebook examples
- Testing
- Adapt tests to new Options class instead of using dictionary.
- General
- Write and read only dirty symbols instead of all symbols to improve performance (~30% improvement on running all model library models).
- Make gdx file names thread safe by using uuid.
- Documentation
- Fix api reference for inherited members.
- Make execution modes and debugging section of container documentation a separate page.
- Testing
- Add a new test for sending extra files to GAMS Engine.
- Add scripts/atomic_conda_env.py to avoid race condition for parallel builds in the pipeline.
- General
- Fix ellipsis syntax bug for variable and equation attributes
- Introduce Pydantic as a dependency for options and engine config validation
- Documentation
- Change reference API structure so that each class has its own page
- Testing
- Simplify reinstall.py script
- Add tests for options
- Update tests for symbol creation
- Initial release.