Initialization Module#3912
Conversation
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #3912 +/- ##
==========================================
- Coverage 90.10% 90.10% -0.01%
==========================================
Files 909 917 +8
Lines 108525 109014 +489
==========================================
+ Hits 97787 98224 +437
- Misses 10738 10790 +52
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
See #3878 for the changes I had to make to contrib.piecewise. |
|
Thanks for updating the imports, @blnicho! |
| baron_available = bool(_opt.check_available_solvers('baron')) | ||
| glpk_available = bool(_opt.check_available_solvers('glpk')) | ||
| gurobipy_available = bool(_opt.check_available_solvers('gurobi_direct')) | ||
| scip_available = bool(_opt.check_available_solvers('scip_direct')) |
There was a problem hiding this comment.
Can this maybe be named pyscip_available or pyscipopt_available? I think scip_available implies the long-time-existing command line version, but it's actually the Python interface that we are looking for.
| opts = {'SolutionLimit': 1} | ||
| else: | ||
| raise NotImplementedError( | ||
| 'Currently, the initialization module only works with new solver interface, so the global solvers are limited to ScipDirect, ScipPersistent, and GurobiDirectMINLP.' |
There was a problem hiding this comment.
| 'Currently, the initialization module only works with new solver interface, so the global solvers are limited to ScipDirect, ScipPersistent, and GurobiDirectMINLP.' | |
| 'Currently, the initialization module only works with new solver interfaces, so the global solvers are limited to ScipDirect, ScipPersistent, and GurobiDirectMINLP.' |
| # ____________________________________________________________________________________ | ||
|
|
||
| from pyomo.core.base.block import BlockData | ||
| import pyomo.environ as pe |
| from pyomo.core.base.block import BlockData | ||
| import pyomo.environ as pe | ||
| from pyomo.devel.initialization.bounds.bound_variables import ( | ||
| bound_all_nonlinear_variables, | ||
| ) | ||
| from pyomo.devel.initialization.utils import ( | ||
| fix_vars_with_equal_bounds, | ||
| shallow_clone, | ||
| get_vars, | ||
| ) | ||
| from pyomo.core.expr.visitor import identify_components | ||
| from pyomo.contrib.piecewise.piecewise_linear_expression import ( | ||
| PiecewiseLinearExpression, | ||
| ) | ||
| from pyomo.contrib.piecewise.piecewise_linear_function import PiecewiseLinearFunction | ||
| from pyomo.contrib.solver.common.results import SolutionStatus | ||
| from pyomo.common.collections import ComponentMap, ComponentSet | ||
| from typing import MutableMapping, Sequence, List | ||
| from pyomo.core.base.constraint import ConstraintData | ||
| from pyomo.core.expr.visitor import StreamBasedExpressionVisitor | ||
| from pyomo.common.numeric_types import native_numeric_types | ||
| from pyomo.core.expr.numvalue import NumericConstant | ||
| from pyomo.core.expr.numeric_expr import ( | ||
| NegationExpression, | ||
| PowExpression, | ||
| ProductExpression, | ||
| MonomialTermExpression, | ||
| DivisionExpression, | ||
| SumExpression, | ||
| LinearExpression, | ||
| UnaryFunctionExpression, | ||
| NPV_NegationExpression, | ||
| NPV_PowExpression, | ||
| NPV_ProductExpression, | ||
| NPV_DivisionExpression, | ||
| NPV_SumExpression, | ||
| NPV_UnaryFunctionExpression, | ||
| ) | ||
| from pyomo.core.expr.relational_expr import ( | ||
| EqualityExpression, | ||
| InequalityExpression, | ||
| RangedExpression, | ||
| ) | ||
| from pyomo.repn.util import ExitNodeDispatcher | ||
| from pyomo.core.base.var import ScalarVar, VarData | ||
| from pyomo.core.base.param import ScalarParam, ParamData | ||
| from pyomo.core.base.expression import ScalarExpression, ExpressionData | ||
| import math | ||
| from pyomo.contrib.solver.common.base import SolverBase | ||
| import logging | ||
| from pyomo.common.modeling import unique_component_name | ||
| from pyomo.devel.initialization.pwl_init import _minimize_infeasibility | ||
| from pyomo.contrib.fbbt.fbbt import fbbt | ||
| from pyomo.repn.linear import LinearRepnVisitor, LinearRepn | ||
| from pyomo.core.expr.visitor import identify_variables | ||
| from pyomo.common.dependencies import numpy as np | ||
| from pyomo.common.dependencies import attempt_import |
There was a problem hiding this comment.
Preferred import order (plus changed to pyo instead of pe).
| from pyomo.core.base.block import BlockData | |
| import pyomo.environ as pe | |
| from pyomo.devel.initialization.bounds.bound_variables import ( | |
| bound_all_nonlinear_variables, | |
| ) | |
| from pyomo.devel.initialization.utils import ( | |
| fix_vars_with_equal_bounds, | |
| shallow_clone, | |
| get_vars, | |
| ) | |
| from pyomo.core.expr.visitor import identify_components | |
| from pyomo.contrib.piecewise.piecewise_linear_expression import ( | |
| PiecewiseLinearExpression, | |
| ) | |
| from pyomo.contrib.piecewise.piecewise_linear_function import PiecewiseLinearFunction | |
| from pyomo.contrib.solver.common.results import SolutionStatus | |
| from pyomo.common.collections import ComponentMap, ComponentSet | |
| from typing import MutableMapping, Sequence, List | |
| from pyomo.core.base.constraint import ConstraintData | |
| from pyomo.core.expr.visitor import StreamBasedExpressionVisitor | |
| from pyomo.common.numeric_types import native_numeric_types | |
| from pyomo.core.expr.numvalue import NumericConstant | |
| from pyomo.core.expr.numeric_expr import ( | |
| NegationExpression, | |
| PowExpression, | |
| ProductExpression, | |
| MonomialTermExpression, | |
| DivisionExpression, | |
| SumExpression, | |
| LinearExpression, | |
| UnaryFunctionExpression, | |
| NPV_NegationExpression, | |
| NPV_PowExpression, | |
| NPV_ProductExpression, | |
| NPV_DivisionExpression, | |
| NPV_SumExpression, | |
| NPV_UnaryFunctionExpression, | |
| ) | |
| from pyomo.core.expr.relational_expr import ( | |
| EqualityExpression, | |
| InequalityExpression, | |
| RangedExpression, | |
| ) | |
| from pyomo.repn.util import ExitNodeDispatcher | |
| from pyomo.core.base.var import ScalarVar, VarData | |
| from pyomo.core.base.param import ScalarParam, ParamData | |
| from pyomo.core.base.expression import ScalarExpression, ExpressionData | |
| import math | |
| from pyomo.contrib.solver.common.base import SolverBase | |
| import logging | |
| from pyomo.common.modeling import unique_component_name | |
| from pyomo.devel.initialization.pwl_init import _minimize_infeasibility | |
| from pyomo.contrib.fbbt.fbbt import fbbt | |
| from pyomo.repn.linear import LinearRepnVisitor, LinearRepn | |
| from pyomo.core.expr.visitor import identify_variables | |
| from pyomo.common.dependencies import numpy as np | |
| from pyomo.common.dependencies import attempt_import | |
| import logging | |
| import math | |
| from typing import List, MutableMapping, Sequence | |
| import pyomo.environ as pyo | |
| from pyomo.common.collections import ComponentMap, ComponentSet | |
| from pyomo.common.dependencies import attempt_import | |
| from pyomo.common.dependencies import numpy as np | |
| from pyomo.common.modeling import unique_component_name | |
| from pyomo.common.numeric_types import native_numeric_types | |
| from pyomo.contrib.fbbt.fbbt import fbbt | |
| from pyomo.contrib.piecewise.piecewise_linear_expression import ( | |
| PiecewiseLinearExpression, | |
| ) | |
| from pyomo.contrib.piecewise.piecewise_linear_function import PiecewiseLinearFunction | |
| from pyomo.contrib.solver.common.base import SolverBase | |
| from pyomo.contrib.solver.common.results import SolutionStatus | |
| from pyomo.core.base.block import BlockData | |
| from pyomo.core.base.constraint import ConstraintData | |
| from pyomo.core.base.expression import ExpressionData, ScalarExpression | |
| from pyomo.core.base.param import ParamData, ScalarParam | |
| from pyomo.core.base.var import ScalarVar, VarData | |
| from pyomo.core.expr.numvalue import NumericConstant | |
| from pyomo.core.expr.numeric_expr import ( | |
| DivisionExpression, | |
| LinearExpression, | |
| MonomialTermExpression, | |
| NegationExpression, | |
| NPV_DivisionExpression, | |
| NPV_NegationExpression, | |
| NPV_PowExpression, | |
| NPV_ProductExpression, | |
| NPV_SumExpression, | |
| NPV_UnaryFunctionExpression, | |
| PowExpression, | |
| ProductExpression, | |
| SumExpression, | |
| UnaryFunctionExpression, | |
| ) | |
| from pyomo.core.expr.relational_expr import ( | |
| EqualityExpression, | |
| InequalityExpression, | |
| RangedExpression, | |
| ) | |
| from pyomo.core.expr.visitor import ( | |
| StreamBasedExpressionVisitor, | |
| identify_components, | |
| identify_variables, | |
| ) | |
| from pyomo.devel.initialization.bounds.bound_variables import ( | |
| bound_all_nonlinear_variables, | |
| ) | |
| from pyomo.devel.initialization.pwl_init import _minimize_infeasibility | |
| from pyomo.devel.initialization.utils import ( | |
| fix_vars_with_equal_bounds, | |
| get_vars, | |
| shallow_clone, | |
| ) | |
| from pyomo.repn.linear import LinearRepn, LinearRepnVisitor | |
| from pyomo.repn.util import ExitNodeDispatcher |
| from pyomo.core.base.block import BlockData | ||
| import pyomo.environ as pe | ||
| from pyomo.devel.initialization.bounds.bound_variables import ( | ||
| bound_all_nonlinear_variables, | ||
| ) | ||
| from pyomo.devel.initialization.utils import ( | ||
| fix_vars_with_equal_bounds, | ||
| shallow_clone, | ||
| get_vars, | ||
| ) | ||
| from pyomo.core.expr.visitor import identify_components | ||
| from pyomo.contrib.piecewise.piecewise_linear_expression import ( | ||
| PiecewiseLinearExpression, | ||
| ) | ||
| from pyomo.contrib.piecewise.piecewise_linear_function import PiecewiseLinearFunction | ||
| from pyomo.common.collections import ComponentMap, ComponentSet | ||
| from typing import MutableMapping, Sequence, List | ||
| from pyomo.core.base.constraint import ConstraintData | ||
| from pyomo.core.expr.visitor import StreamBasedExpressionVisitor | ||
| from pyomo.common.numeric_types import native_numeric_types | ||
| from pyomo.core.expr.numvalue import NumericConstant | ||
| from pyomo.core.expr.numeric_expr import ( | ||
| NegationExpression, | ||
| PowExpression, | ||
| ProductExpression, | ||
| MonomialTermExpression, | ||
| DivisionExpression, | ||
| SumExpression, | ||
| LinearExpression, | ||
| UnaryFunctionExpression, | ||
| NPV_NegationExpression, | ||
| NPV_PowExpression, | ||
| NPV_ProductExpression, | ||
| NPV_DivisionExpression, | ||
| NPV_SumExpression, | ||
| NPV_UnaryFunctionExpression, | ||
| ) | ||
| from pyomo.core.expr.relational_expr import ( | ||
| EqualityExpression, | ||
| InequalityExpression, | ||
| RangedExpression, | ||
| ) | ||
| from pyomo.repn.util import ExitNodeDispatcher | ||
| from pyomo.core.base.var import ScalarVar, VarData | ||
| from pyomo.core.base.param import ScalarParam, ParamData | ||
| from pyomo.core.base.expression import ScalarExpression, ExpressionData | ||
| import math | ||
| from pyomo.contrib.solver.common.base import SolverBase | ||
| import logging | ||
| from pyomo.common.modeling import unique_component_name | ||
| from pyomo.contrib.solver.common.results import SolutionStatus |
There was a problem hiding this comment.
| from pyomo.core.base.block import BlockData | |
| import pyomo.environ as pe | |
| from pyomo.devel.initialization.bounds.bound_variables import ( | |
| bound_all_nonlinear_variables, | |
| ) | |
| from pyomo.devel.initialization.utils import ( | |
| fix_vars_with_equal_bounds, | |
| shallow_clone, | |
| get_vars, | |
| ) | |
| from pyomo.core.expr.visitor import identify_components | |
| from pyomo.contrib.piecewise.piecewise_linear_expression import ( | |
| PiecewiseLinearExpression, | |
| ) | |
| from pyomo.contrib.piecewise.piecewise_linear_function import PiecewiseLinearFunction | |
| from pyomo.common.collections import ComponentMap, ComponentSet | |
| from typing import MutableMapping, Sequence, List | |
| from pyomo.core.base.constraint import ConstraintData | |
| from pyomo.core.expr.visitor import StreamBasedExpressionVisitor | |
| from pyomo.common.numeric_types import native_numeric_types | |
| from pyomo.core.expr.numvalue import NumericConstant | |
| from pyomo.core.expr.numeric_expr import ( | |
| NegationExpression, | |
| PowExpression, | |
| ProductExpression, | |
| MonomialTermExpression, | |
| DivisionExpression, | |
| SumExpression, | |
| LinearExpression, | |
| UnaryFunctionExpression, | |
| NPV_NegationExpression, | |
| NPV_PowExpression, | |
| NPV_ProductExpression, | |
| NPV_DivisionExpression, | |
| NPV_SumExpression, | |
| NPV_UnaryFunctionExpression, | |
| ) | |
| from pyomo.core.expr.relational_expr import ( | |
| EqualityExpression, | |
| InequalityExpression, | |
| RangedExpression, | |
| ) | |
| from pyomo.repn.util import ExitNodeDispatcher | |
| from pyomo.core.base.var import ScalarVar, VarData | |
| from pyomo.core.base.param import ScalarParam, ParamData | |
| from pyomo.core.base.expression import ScalarExpression, ExpressionData | |
| import math | |
| from pyomo.contrib.solver.common.base import SolverBase | |
| import logging | |
| from pyomo.common.modeling import unique_component_name | |
| from pyomo.contrib.solver.common.results import SolutionStatus | |
| import logging | |
| import math | |
| from typing import List, MutableMapping, Sequence | |
| import pyomo.environ as pyo | |
| from pyomo.common.collections import ComponentMap, ComponentSet | |
| from pyomo.common.modeling import unique_component_name | |
| from pyomo.common.numeric_types import native_numeric_types | |
| from pyomo.contrib.piecewise.piecewise_linear_expression import ( | |
| PiecewiseLinearExpression, | |
| ) | |
| from pyomo.contrib.piecewise.piecewise_linear_function import PiecewiseLinearFunction | |
| from pyomo.contrib.solver.common.base import SolverBase | |
| from pyomo.contrib.solver.common.results import SolutionStatus | |
| from pyomo.core.base.block import BlockData | |
| from pyomo.core.base.constraint import ConstraintData | |
| from pyomo.core.base.expression import ExpressionData, ScalarExpression | |
| from pyomo.core.base.param import ParamData, ScalarParam | |
| from pyomo.core.base.var import ScalarVar, VarData | |
| from pyomo.core.expr.numvalue import NumericConstant | |
| from pyomo.core.expr.numeric_expr import ( | |
| DivisionExpression, | |
| LinearExpression, | |
| MonomialTermExpression, | |
| NegationExpression, | |
| NPV_DivisionExpression, | |
| NPV_NegationExpression, | |
| NPV_PowExpression, | |
| NPV_ProductExpression, | |
| NPV_SumExpression, | |
| NPV_UnaryFunctionExpression, | |
| PowExpression, | |
| ProductExpression, | |
| SumExpression, | |
| UnaryFunctionExpression, | |
| ) | |
| from pyomo.core.expr.relational_expr import ( | |
| EqualityExpression, | |
| InequalityExpression, | |
| RangedExpression, | |
| ) | |
| from pyomo.core.expr.visitor import ( | |
| StreamBasedExpressionVisitor, | |
| identify_components, | |
| ) | |
| from pyomo.devel.initialization.bounds.bound_variables import ( | |
| bound_all_nonlinear_variables, | |
| ) | |
| from pyomo.devel.initialization.utils import ( | |
| fix_vars_with_equal_bounds, | |
| get_vars, | |
| shallow_clone, | |
| ) | |
| from pyomo.repn.util import ExitNodeDispatcher |
| # var_vals = tuple(i.value for i in expr.args) | ||
| # for v, val in zip(expr.args, var_vals): | ||
| # print(f'{str(v):<20}{val:<20.5f}{v.lb:<20.5f}{v.ub:<20.5f}{id(v):<20}') |
| import pyomo.environ as pe | ||
| from pyomo.common.collections import ComponentSet | ||
| from pyomo.core.base.block import BlockData | ||
| from pyomo.core.expr.visitor import identify_variables | ||
| import math |
There was a problem hiding this comment.
| import pyomo.environ as pe | |
| from pyomo.common.collections import ComponentSet | |
| from pyomo.core.base.block import BlockData | |
| from pyomo.core.expr.visitor import identify_variables | |
| import math | |
| import math | |
| import pyomo.environ as pyo | |
| from pyomo.common.collections import ComponentSet | |
| from pyomo.core.base.block import BlockData | |
| from pyomo.core.expr.visitor import identify_variables |
Fixes #3878
Summary/Motivation:
This PR adds a module to
develcalledinitialization. The goal of the module is to provide methods to help initialize nonconvex nonlinear programming problems.Changes proposed in this PR:
initializationmoduleLegal Acknowledgement
By contributing to this software project, I have read the contribution guide and agree to the following terms and conditions for my contribution: