整数规划是线性规划的一个扩展,其中变量被限制为整数。在Python中,你可以使用多种库来解决整数规划问题,包括: K( Z E# M' x+ `
7 l' l J8 T! s6 u
1.PuLP:PuLP是一个优化建模库,可以用于线性规划、整数规划和混合整数规划。它提供了一种直观的方式来定义优化问题,并支持多种优化算法。
from pulp import LpMaximize, LpProblem, LpVariable, k$ O# w\" @% C9 E4 F9 O
! i0 f# i3 `0 J* t, s\" d7 ^
4 E5 C9 a% o1 o5 c# e6 W3 ^( n
7 N\" g- \9 u3 e6 ]- l; O; Z) r
# 创建问题/ r- h+ [+ _% N; v0 Y2 y* ~, J0 {
* a\" l- e( X4 M5 E
prob = LpProblem("Integer programming problem", LpMaximize) ' @. C m, F+ T/ A9 {1 z
, N; U0 f6 c! _: g8 K1 B, \\" o
* W/ ]; K! k J\" m7 J
X; I7 ], G6 d1 _# k/ n
# 定义变量 8 ~9 O. A0 V+ W/ n7 t
2 c$ M& J* l5 f4 P9 \' F
x = LpVariable("x", lowBound=0, cat="Integer")' H5 ^4 w# I9 ]8 G R6 u
! |. t2 b* y0 K7 j8 h
y = LpVariable("y", lowBound=0, cat="Integer") ; K; g) g0 X5 r: Z* S$ U. K
/ N( h, H& A' ^
) [3 P- B) v2 @ j
0 ` s2 y2 X, Z3 ^, w' y$ _
# 定义目标函数$ A\" R& d/ i1 c: i% }
, N7 k E0 w! W5 m' @. z\" }$ s1 K; k3 \
prob += 3 * x + 2 * y8 N3 Z s1 K; s7 }. w9 z/ i
. m0 s0 b4 @1 O7 R0 z
# r$ i h4 R2 _% w& |+ F
\" u, W2 [, E2 g/ ?
# 添加约束条件 & K$ d7 ~6 R$ N) [- C, f# ?
' x3 p% G0 V) \7 c ~# }, K& _& q
prob += 2 * x + y <= 6+ \! k9 k# Y# V; v
4 I8 b# @3 i9 j: z7 A
prob += x + 2 * y <= 8 : b' V( r: J9 f' o7 r: X( N\" P( H
, s/ O% p$ [! E$ {& l- A
3 C8 |: d/ l* Q& w; F
3 t. W* m* h: G8 O- `
# 求解问题 * i8 ~! |* q! a0 d# ~) w2 ~1 M% P
% \% G7 A& V8 k/ {
prob.solve()1 P0 D, |9 } V& f- y\" q& b
* G7 J) d/ n( ^# G0 U% B
\" D& k8 O4 g9 f S- U
( |7 r2 n- ^! l% S
# 输出结果 / t1 m4 l- r+ I
& n: }9 C- ]( x6 E: N7 h- @
print("Optimal value:", prob.objective.value()) ( K' J I, n, {! {5 g
( Q8 B* g b6 h( v0 R7 X4 C
for var in prob.variables(): Q$ `7 n: ?) v1 R5 M) O4 P