@@ -24,16 +24,16 @@ Using Persistent Solvers
24
24
The first step in using a persistent solver is to create a Pyomo model
25
25
as usual.
26
26
27
- >>> import pyomo.environ as pe
28
- >>> m = pe .ConcreteModel()
29
- >>> m.x = pe .Var()
30
- >>> m.y = pe .Var()
31
- >>> m.obj = pe .Objective(expr = m.x** 2 + m.y** 2 )
32
- >>> m.c = pe .Constraint(expr = m.y >= - 2 * m.x + 5 )
27
+ >>> import pyomo.environ as pyo
28
+ >>> m = pyo .ConcreteModel()
29
+ >>> m.x = pyo .Var()
30
+ >>> m.y = pyo .Var()
31
+ >>> m.obj = pyo .Objective(expr = m.x** 2 + m.y** 2 )
32
+ >>> m.c = pyo .Constraint(expr = m.y >= - 2 * m.x + 5 )
33
33
34
34
You can create an instance of a persistent solver through the SolverFactory.
35
35
36
- >>> opt = pe .SolverFactory(' gurobi_persistent' ) # doctest: +SKIP
36
+ >>> opt = pyo .SolverFactory(' gurobi_persistent' ) # doctest: +SKIP
37
37
38
38
This returns an instance of :py:class: `GurobiPersistent `. Now we need
39
39
to tell the solver about our model.
@@ -48,7 +48,7 @@ variables and constraints. We can now solve the model.
48
48
We can also add or remove variables, constraints, blocks, and
49
49
objectives. For example,
50
50
51
- >>> m.c2 = pe .Constraint(expr = m.y >= m.x) # doctest: +SKIP
51
+ >>> m.c2 = pyo .Constraint(expr = m.y >= m.x) # doctest: +SKIP
52
52
>>> opt.add_constraint(m.c2) # doctest: +SKIP
53
53
54
54
This tells the solver to add one new constraint but otherwise leave
@@ -69,29 +69,29 @@ code will run without error, but the solver will have an extra
69
69
constraint. The solver will have both y >= -2*x + 5 and y <= x, which
70
70
is not what was intended!
71
71
72
- >>> m = pe .ConcreteModel() # doctest: +SKIP
73
- >>> m.x = pe .Var() # doctest: +SKIP
74
- >>> m.y = pe .Var() # doctest: +SKIP
75
- >>> m.c = pe .Constraint(expr = m.y >= - 2 * m.x + 5 ) # doctest: +SKIP
76
- >>> opt = pe .SolverFactory(' gurobi_persistent' ) # doctest: +SKIP
72
+ >>> m = pyo .ConcreteModel() # doctest: +SKIP
73
+ >>> m.x = pyo .Var() # doctest: +SKIP
74
+ >>> m.y = pyo .Var() # doctest: +SKIP
75
+ >>> m.c = pyo .Constraint(expr = m.y >= - 2 * m.x + 5 ) # doctest: +SKIP
76
+ >>> opt = pyo .SolverFactory(' gurobi_persistent' ) # doctest: +SKIP
77
77
>>> opt.set_instance(m) # doctest: +SKIP
78
78
>>> # WRONG:
79
79
>>> del m.c # doctest: +SKIP
80
- >>> m.c = pe .Constraint(expr = m.y <= m.x) # doctest: +SKIP
80
+ >>> m.c = pyo .Constraint(expr = m.y <= m.x) # doctest: +SKIP
81
81
>>> opt.add_constraint(m.c) # doctest: +SKIP
82
82
83
83
The correct way to do this is:
84
84
85
- >>> m = pe .ConcreteModel() # doctest: +SKIP
86
- >>> m.x = pe .Var() # doctest: +SKIP
87
- >>> m.y = pe .Var() # doctest: +SKIP
88
- >>> m.c = pe .Constraint(expr = m.y >= - 2 * m.x + 5 ) # doctest: +SKIP
89
- >>> opt = pe .SolverFactory(' gurobi_persistent' ) # doctest: +SKIP
85
+ >>> m = pyo .ConcreteModel() # doctest: +SKIP
86
+ >>> m.x = pyo .Var() # doctest: +SKIP
87
+ >>> m.y = pyo .Var() # doctest: +SKIP
88
+ >>> m.c = pyo .Constraint(expr = m.y >= - 2 * m.x + 5 ) # doctest: +SKIP
89
+ >>> opt = pyo .SolverFactory(' gurobi_persistent' ) # doctest: +SKIP
90
90
>>> opt.set_instance(m) # doctest: +SKIP
91
91
>>> # Correct:
92
92
>>> opt.remove_constraint(m.c) # doctest: +SKIP
93
93
>>> del m.c # doctest: +SKIP
94
- >>> m.c = pe .Constraint(expr = m.y <= m.x) # doctest: +SKIP
94
+ >>> m.c = pyo .Constraint(expr = m.y <= m.x) # doctest: +SKIP
95
95
>>> opt.add_constraint(m.c) # doctest: +SKIP
96
96
97
97
.. warning :: Components removed from a pyomo model must be removed
@@ -100,14 +100,14 @@ The correct way to do this is:
100
100
Additionally, unexpected behavior may result if a component is
101
101
modified before being removed.
102
102
103
- >>> m = pe .ConcreteModel() # doctest: +SKIP
104
- >>> m.b = pe .Block() # doctest: +SKIP
105
- >>> m.b.x = pe .Var() # doctest: +SKIP
106
- >>> m.b.y = pe .Var() # doctest: +SKIP
107
- >>> m.b.c = pe .Constraint(expr = m.b.y >= - 2 * m.b.x + 5 ) # doctest: +SKIP
108
- >>> opt = pe .SolverFactory(' gurobi_persistent' ) # doctest: +SKIP
103
+ >>> m = pyo .ConcreteModel() # doctest: +SKIP
104
+ >>> m.b = pyo .Block() # doctest: +SKIP
105
+ >>> m.b.x = pyo .Var() # doctest: +SKIP
106
+ >>> m.b.y = pyo .Var() # doctest: +SKIP
107
+ >>> m.b.c = pyo .Constraint(expr = m.b.y >= - 2 * m.b.x + 5 ) # doctest: +SKIP
108
+ >>> opt = pyo .SolverFactory(' gurobi_persistent' ) # doctest: +SKIP
109
109
>>> opt.set_instance(m) # doctest: +SKIP
110
- >>> m.b.c2 = pe .Constraint(expr = m.b.y <= m.b.x) # doctest: +SKIP
110
+ >>> m.b.c2 = pyo .Constraint(expr = m.b.y <= m.b.x) # doctest: +SKIP
111
111
>>> # ERROR: The constraint referenced by m.b.c2 does not
112
112
>>> # exist in the solver model.
113
113
>>> opt.remove_block(m.b) # doctest: +SKIP
@@ -117,12 +117,12 @@ the solver instance, modify it with Pyomo, and then add it back to the
117
117
solver instance. The only exception is with variables. Variables may
118
118
be modified and then updated with with solver:
119
119
120
- >>> m = pe .ConcreteModel() # doctest: +SKIP
121
- >>> m.x = pe .Var() # doctest: +SKIP
122
- >>> m.y = pe .Var() # doctest: +SKIP
123
- >>> m.obj = pe .Objective(expr = m.x** 2 + m.y** 2 ) # doctest: +SKIP
124
- >>> m.c = pe .Constraint(expr = m.y >= - 2 * m.x + 5 ) # doctest: +SKIP
125
- >>> opt = pe .SolverFactory(' gurobi_persistent' ) # doctest: +SKIP
120
+ >>> m = pyo .ConcreteModel() # doctest: +SKIP
121
+ >>> m.x = pyo .Var() # doctest: +SKIP
122
+ >>> m.y = pyo .Var() # doctest: +SKIP
123
+ >>> m.obj = pyo .Objective(expr = m.x** 2 + m.y** 2 ) # doctest: +SKIP
124
+ >>> m.c = pyo .Constraint(expr = m.y >= - 2 * m.x + 5 ) # doctest: +SKIP
125
+ >>> opt = pyo .SolverFactory(' gurobi_persistent' ) # doctest: +SKIP
126
126
>>> opt.set_instance(m) # doctest: +SKIP
127
127
>>> m.x.setlb(1.0 ) # doctest: +SKIP
128
128
>>> opt.update_var(m.x) # doctest: +SKIP
@@ -160,13 +160,13 @@ Persistent Solver Performance
160
160
In order to get the best performance out of the persistent solvers, use the
161
161
"save_results" flag:
162
162
163
- >>> import pyomo.environ as pe
164
- >>> m = pe .ConcreteModel()
165
- >>> m.x = pe .Var()
166
- >>> m.y = pe .Var()
167
- >>> m.obj = pe .Objective(expr = m.x** 2 + m.y** 2 )
168
- >>> m.c = pe .Constraint(expr = m.y >= - 2 * m.x + 5 )
169
- >>> opt = pe .SolverFactory(' gurobi_persistent' ) # doctest: +SKIP
163
+ >>> import pyomo.environ as pyo
164
+ >>> m = pyo .ConcreteModel()
165
+ >>> m.x = pyo .Var()
166
+ >>> m.y = pyo .Var()
167
+ >>> m.obj = pyo .Objective(expr = m.x** 2 + m.y** 2 )
168
+ >>> m.c = pyo .Constraint(expr = m.y >= - 2 * m.x + 5 )
169
+ >>> opt = pyo .SolverFactory(' gurobi_persistent' ) # doctest: +SKIP
170
170
>>> opt.set_instance(m) # doctest: +SKIP
171
171
>>> results = opt.solve(save_results = False ) # doctest: +SKIP
172
172
0 commit comments