Pulp,用python来做线性规划
入门程序:
1
2
3
4
5
|
max: 2 * x1 + 5 * x2
约束:
1. 2 * x1 - x2 <= 4
2. x1 + 2 * x2 <= 9
3. -x1 + x2 <= 3
|
代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
from
pulp
import
*
prob
=
LpProblem(
'lptest'
, LpMaximize)
x1
=
LpVariable(
'x1'
, lowBound
=
0
)
x2
=
LpVariable(
'x2'
, lowBound
=
0
)
prob
+
=
2
*
x1
+
5
*
x2
prob
+
=
2
*
x1
-
x2 <
=
4
prob
+
=
x1
+
2
*
x2 <
=
9
prob
+
=
-
x1
+
x2 <
=
3
GLPK().solve(prob)
for
v
in
prob.variables():
print
v.name,
'='
, v.varValue
print
'objective ='
, value(prob.objective)
|
计算结果:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
GLPSOL: GLPK LP/MIP Solver, v4.45
Parameter(s) specified in the command line:
--cpxlp /tmp/3624-pulp.lp -o /tmp/3624-pulp.sol
Reading problem data from `/tmp/3624-pulp.lp'...
3 rows, 2 columns, 6 non-zeros
8 lines were read
GLPK Simplex Optimizer, v4.45
3 rows, 2 columns, 6 non-zeros
Preprocessing...
3 rows, 2 columns, 6 non-zeros
Scaling...
A: min|aij| = 1.000e+00 max|aij| = 2.000e+00 ratio = 2.000e+00
Problem data seem to be well scaled
Constructing initial basis...
Size of triangular part = 3
* 0: obj = 0.000000000e+00 infeas = 0.000e+00 (0)
* 2: obj = 2.200000000e+01 infeas = 0.000e+00 (0)
OPTIMAL SOLUTION FOUND
Time used: 0.0 secs
Memory used: 0.0 Mb (40571 bytes)
Writing basic solution to `/tmp/3624-pulp.sol'...
x1 = 1.0
x2 = 4.0
objective = 22.0
|