# 依赖: scipy >= 1.9 import numpy as np from scipy.optimize import LinearConstraint, Bounds, milp # 最大化 -> 目标取负;下面是一个 0-1 背包式问题 c = np.array([-8.0, -11.0]) A = np.array([[5.0, 7.0], [1.0, 0.0], [0.0, 1.0]]) con = LinearConstraint(A, -np.inf, np.array([40.0, 5.0, 4.0])) res = milp(c=c, constraints=[con], integrality=np.ones(2), bounds=Bounds(0, 1)) assert res.success, res.message print(f'最优值={-res.fun:.4f} 最优解={np.round(res.x)}')