Skip to content

v0.6.0

Latest

Choose a tag to compare

@github-actions github-actions released this 05 Nov 05:47
· 5 commits to master since this release
e3cb1e5

InfiniteOpt v0.6.0

Diff since v0.5.9

Breaking changes

  • NLPExpr is dropped in favor of JuMP.GenericNonlinearExpr
  • @register has been replaced with JuMP.@operator
  • map_nlp_to_ast has been discontinued
  • Optimizer model API has been replaced with the more general transformation backend API. For modelling, the syntax is largely the same, but accessing methods like optimizer_model_variable have been changed to transformation_variable. The old API is still supported via deprecation and users are encouraged to run Julia in deprecation mode to update their code.
  • DomainRestrictions have been replaced with DomainRestriction which enforces restrictions based on arbitrary Julia functions (similar to parameter functions). Please see the constraint guide in the documentation for details.
  • start_value_function and set_start_value_function have been dropped in favor of JuMP.start_value and JuMP.set_start_value.
  • Semi-infinite variables have been refactored internally to behave more consistently with point variables. The user API remains the same, though bounds and start values can now be specified.
  • Point variables inherit domain info from infinite variables in a more general way. Semi-infinite and point variables defined via macros define their own info that overwrites that of the infinite variable. Semi-infinite and point variables defined functionally only modify info if specified via domain modification methods (e.g., set_lower_bound, delete_lower_bound).
  • @infinite_parameter no longer supports DenseAxisArrays and SparseAxisArrays in favor of Array to significantly improve performance.
  • Collections.VectorTuple have been refactored to focus on tuples of Arrays and Numbers.
  • Core data structures have been modified to simply the code base; however, users are not encouraged work directly with core data objects.

Features

  • Trained machine learning models can be embedded via the InfiniteMathOptAI extension.
  • Transcribed values can be converted to interpolated functions via the InfiniteInterpolations extension.
  • Semi-infinite variables can now have bounds and start values.
  • Higher-order derivatives are now preserved to facilitate more accurate transformations.
  • Recursion is removed to handle deeply nested nonlinear expressions without stackoverflow errors
  • Non-JuMP models (e.g., ExaModels) can now be interfaced via the new transformation API.
  • set_parameter_value now preserves the backend for efficient resolves.
  • warmstart_backend_start_values efficiently warmstarts the backend for resolves.
  • Support is added for MOI.Parameter.
  • New examples have been added to the documentation.
  • Misc. bug fixes and documentation improvements.

Merged pull requests:

Closed issues:

  • Cannot Transcribe Scalar Measures/Derivatives of Dependent Infinite Parameters (#56)
  • Return Interpolated Value Functions (#82)
  • Point Variable Inheritance is Invalidated with Changes to Infinite Variable Info (#148)
  • Specify Exclusion Points for Constraints (#167)
  • Maintain Higher-Order Derivative Representations (#197)
  • Vector-Valued Nonlinear Functions (#229)
  • Restrict Infinite Parameters to only use Arrays (#233)
  • Allow Functional Bounds on Infinite Variables (#253)
  • Support Restrictions on Expressions (#347)
  • Can i write the InfiniteOpt's Model to file of nl? (#364)
  • [FEATURE] Query expression and parameter function names. (#367)
  • Deleting variables does not work when a constraint evaluates a variable at multiple time points (#376)
  • Update example documentation (#379)
  • Ability for Callback function during optimization run (#383)
  • Can't install/precompile InfiniteOpt (#388)