我使用到的是python库中scipy。
'''
线性规划
'''
#目标函数的系数
# min z = 2x1+3x2-5x3
c = np.array([-2,-3,5])
#不等式限制条件的系数,转化为小于等于
# 2x1-5x2+x3 <= 10, x1+3x2+x3<=12
Aup = np.array([[-2,5,-1],[-1,-3,-1]]) #必须是二维
#右侧系数
bup = np.array([-10, 12])
#等式条件,左侧系数
# x1+x2+x3=7
Aeq = np.array([[1,1,1]]) #必须是二维
beq = np.array([7])
#x取值范围
x_bounds = [(0, None), (0, None), (0, None)]
res = optimize.linprog(c, A_ub=Aup, b_ub=bup, A_eq=Aeq, b_eq=beq, bounds=x_bounds)
如果是整型规划,仅需要修改linprog函数的参数即可。(0-1规划是特殊的整型规划,限制x取值范围在0,1),似乎整型规划里面没有等式?
res = optimize.linprog(c, A_ub=Aup, b_ub=bup, bounds=x_bounds, method='simplex',
options={'disp': True, 'presolve': True})