This PR makes some final additions to Plasmo.jl for v0.4.0. The key changes are:
More support for JuMP functions such as set_optimizer_attribute for MOI optimizers.
The ability to define the PlasmoOptimizerHook optimizer attribute in MOI optimizers. This attribute allows solvers to define custom functions for optimizing with an optigraph.
The ability to set custom solution values on optinodes. This is extremely useful for writing meta-algorithms that solve optinode or optigraph subproblems.
That addition of structure attributes which users and developers can query to check for solver-specific structures.
The ability to partition an optigraph into specific structures (e.g. partition_to_subgraphs! or partition_to_tree!)
Support for more graph representations for partitioning.
More design on optinode backends. We now support incremental changes as well as using multiple optimizers for individual optinodes. For intance, an optinode can be part of multiple optigraphs. A user can use value(graph,variable) to get a variable value for a specific optiraph, or just value(variable) to get the latest value on a variable.
This PR makes some final additions to Plasmo.jl for v0.4.0. The key changes are:
set_optimizer_attribute
for MOI optimizers.PlasmoOptimizerHook
optimizer attribute in MOI optimizers. This attribute allows solvers to define custom functions for optimizing with an optigraph.partition_to_subgraphs!
orpartition_to_tree!
)value(graph,variable)
to get a variable value for a specific optiraph, or justvalue(variable)
to get the latest value on a variable.