一、规划问题
1、线性规划
- 定义:线性规划是研究线性约束条件下线性目标函数的极值问题的数学理论和方法。
- 步骤:
- 根据影响所要达到目的的因素找到决策变量。
- 由决策变量和所在达到目的之间的函数关系确定目标函数。
- 由决策变量所受的限制条件确定决策变量所要满足的约束条件。
- 特点:目标函数是决策变量的线性函数。根据具体问题可以是最大化或最小化,二者统称为最优化。约束条件也是决策变量的线性函数。
from scipy import optimize
import numpy as np
'''
max z = 2x + 3y - 5z
x + y + z = 7
2x - 5y + z >= 10
x + 3y + z <= 12
x , y , z > 0
'''
c = np.array([2, 3, -5])
A = np.array([[-2, 5, -1], [1, 3, 1]])
B = np.array([-10, 12])
Aeq = np.array([[1, 1, 1]])
beq = np.array([7])
res = optimize.linprog(-c, A, B, Aeq, beq)
print(res)
'''
con: array([1.807134e-09])
fun: -14.571428565645057
message: 'Optimization terminated successfully.'
nit: 5
slack: array([-2.24586572e-10, 3.85714286e+00])
status: 0
return ufunc.reduce(obj, axis, dtype, out, **passkwargs)
success: True
x: array([6.42857143e+00, 5.71428571e-01, 2.35900788e-10])
'''
2、整数规划
- 定义:整数规划是指规划中的变量(全部或部分)限制为整数,若在线性模型中,变量限制为整数,则称为整数线性规划。目前所流行的求解整数规划的方法往往只适用于整数线性规划。
- 分类:在整数规划中,如果所有变量都限制为整数,则称为纯整数规划;如果仅一部分限制为整数,则称为混合整数规划。整数规划的一种特殊情形是0-1规划,它的变数仅限于0或1。
- 0-1规z划:问题中许多量具有不可分割的性质(最优调度的车辆数、设置的销售网点数…),或者问题的解必须满足一些特殊的约束条件(满足逻辑条件、顺序…),需引入逻辑变量(0-1变量)以表示“是”与“非”。这类问题的模型均为整数规划。
import numpy as np
import cvxpy as cp
n=3
c=np.array([3,1,3])
a=np.array([[-1,2,1],[0,4,-3],[1,-3,2]])
b=np.array([4