You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The alternative is to instantiate an algorithm-specific GDPopt solver:
40
+
41
+
.. code::
42
+
43
+
>>> SolverFactory('gdpopt.loa').solve(model)
44
+
45
+
In the above examples, GDPopt uses the GDPopt-LOA algorithm.
46
+
Other algorithms may be used by specifying them in the ``algorithm`` argument when using the generic solver or by instantiating the algorithm-specific GDPopt solvers. All GDPopt options are listed below.
37
47
38
48
.. note::
39
49
40
-
By default, GDPopt uses the GDPopt-LOA strategy.
41
-
Other strategies may be used by specifying the ``strategy`` argument during ``solve()``.
42
-
All GDPopt options are listed below.
50
+
The generic GDPopt solver allows minimal configuration outside of the arguments to the ``solve`` method. To avoid repeatedly specifying the same configuration options to the ``solve`` method, use the algorithm-specific solvers.
43
51
44
-
Logic-based Outer Approximation
45
-
-------------------------------
52
+
Logic-based Outer Approximation (LOA)
53
+
-------------------------------------
46
54
47
55
`Chen et al., 2018`_ contains the following flowchart, taken from the preprint version:
48
56
49
57
.. image:: gdpopt_flowchart.png
50
58
:scale:70%
51
59
52
-
An example which includes the modeling approach may be found below.
60
+
An example that includes the modeling approach may be found below.
53
61
54
62
.. doctest::
55
63
:skipif: not glpk_available
@@ -75,8 +83,8 @@ An example which includes the modeling approach may be found below.
The same algorithm can be used to solve GDPs involving nonconvex nonlinear constraints by solving the subproblems globally:
124
+
125
+
.. code::
126
+
127
+
>>> SolverFactory('gdpopt.gloa').solve(model)
128
+
129
+
.. warning::
130
+
131
+
The ``nlp_solver`` option must be set to a global solver for the solution returned by GDPopt to also be globally optimal.
132
+
133
+
Relaxation with Integer Cuts (RIC)
134
+
----------------------------------
135
+
136
+
Instead of outer approximation, GDPs can be solved using the same MILP relaxation as in the previous two algorithms, but instead of using the subproblems to generate outer-approximation cuts, the algorithm adds only no-good cuts for every discrete solution encountered:
137
+
138
+
.. code::
139
+
140
+
>>> SolverFactory('gdpopt.ric').solve(model)
141
+
142
+
Again, this is a global algorithm if the subproblems are solved globally, and is not otherwise.
143
+
144
+
.. note::
145
+
146
+
The RIC algorithm will not necessarily enumerate all discrete solutions as it is possible for the bounds to converge first. However, full enumeration is not uncommon.
147
+
148
+
Logic-based Branch-and-Bound (LBB)
149
+
----------------------------------
114
150
115
151
The GDPopt-LBB solver branches through relaxed subproblems with inactive disjunctions.
116
152
It explores the possibilities based on best lower bound,
@@ -139,7 +175,7 @@ To use the GDPopt-LBB solver, define your Pyomo GDP model as usual:
0 commit comments