【MATLAB】规划问题

1 线性规划
1.1 线性规划的标准形式

MATLAB中规定线性规划的标准形式
min ⁡ x   f T x s . t . { A ⋅ x ≤ b A e q ⋅ x = b e q l b ≤ x ≤ u b \min\limits_{x}\ \boldsymbol{f}^{T}\boldsymbol{x}\quad s.t. \left\{\begin{aligned} &\boldsymbol{A}\cdot\boldsymbol{x}\leq\boldsymbol{b}\\ &\boldsymbol{Aeq}\cdot\boldsymbol{x}=\boldsymbol{beq}\\ &\boldsymbol{lb}\leq\boldsymbol{x}\leq\boldsymbol{ub}\\ \end{aligned}\right. xmin fTxs.t.AxbAeqx=beqlbxub
f \boldsymbol{f} f x \boldsymbol{x} x b \boldsymbol{b} b b e q \boldsymbol{beq} beq u b \boldsymbol{ub} ub是向量, A \boldsymbol{A} A A e q \boldsymbol{Aeq} Aeq是矩阵。

所以如果是要求最大值,例如 max ⁡ x   f T x s . t . A x ≥ b \max\limits_{x}\ \boldsymbol{f}^{T}\boldsymbol{x}\quad s.t. \quad \boldsymbol{A}\boldsymbol{x}\geq\boldsymbol{b} xmax fTxs.t.Axb,则应该化为 min ⁡ x   − f T x s . t . − A x ≤ − b \min\limits_{x}\ \boldsymbol{-f}^{T}\boldsymbol{x}\quad s.t. \quad \boldsymbol{-A}\boldsymbol{x}\leq\boldsymbol{-b} xmin fTxs.t.Axb

1.2 函数linprog

MATLAB中求解线性规划问题的基本函数是linprog。

调用形式

[x, fval, exitflag, output, lambda] = linprog(f, A, b, Aeq, beq, lb, ub, x0, options)

参数说明
x返回最优解
favl返回目标函数的值

exitflag返回是否收敛
output返回迭代次数
lambda
f对应目标函数 f ( x ) = f T ⋅ x f(x) = \boldsymbol{f^T}\cdot\boldsymbol{x} f(x)=fTx
Ab对应不等式约束 A ⋅ x ≤ b \boldsymbol{A}\cdot\boldsymbol{x}\leq\boldsymbol{b} Axb
Aeqbeq对应等式约束 A e q ⋅ x = b e q \boldsymbol{Aeq}\cdot\boldsymbol{x}=\boldsymbol{beq} Aeqx=beq

lbub分别是变量 x x x 的上下界
x0 x x x 的初始值
options是控制参数

1.3 例子

一个例子
求解线性规划问题:
min ⁡ f ( x ) = 2 x 1 + 3 x 2 + x 3 s . t . { x 1 + 4 x 2 + 2 x 3 ≥ 8 3 x 1 + 2 x 2 ≥ 6 x 1 , x 2 , x 3 ≥ 0 \min f(x) = 2x_1+3x_2+x_3\\s.t.\left\{ \begin{aligned} &x_1+4x_2+2x_3\geq 8\\ &3x_1+2x_2\geq 6\\ &x_1,x_2,x_3 \geq 0\\ \end{aligned} \right. minf(x)=2x1+3x2+x3s.t.x1+4x2+2x383x1+2x26x1,x2,x30
代码如下:

f = [2; 3; 1];
A = -[1, 4, 2; 3, 2, 0];
b = -[8; 6];
lb = [0; 0; 0];
[x, fval] = linprog(f, A, b, [], [], lb)

运行结果:

Optimization terminated.
x =
0.8066
1.7900
0.0166
fval =
7.0000

2 非线性规划
2.1 非线性规划的标准形式

min ⁡ f ( x ) s . t . { A x ≤ B A e q ⋅ x = B e q C ( x ) ≤ 0 C e q ( x ) = 0 l b ≤ x ≤ u b \min f(\boldsymbol x)\quad\quad s.t. \left\{\begin{aligned} &\boldsymbol{Ax} \leq \boldsymbol {B}\\ &Aeq\cdot\boldsymbol{x} = Beq\\ &\boldsymbol{C}(x) \leq 0\\ &Ceq(x) = 0\\ &\boldsymbol{lb} \leq \boldsymbol{x} \leq \boldsymbol{ub} \end{aligned}\right. minf(x)s.t.AxBAeqx=BeqC(x)0Ceq(x)=0lbxub

2.2 函数fmincon

调用形式

[x, fval, exitflag] = fmincon(fun, x0, A, B, Aeq, Beq, lb, ub, nonlcon, options)

参数说明
x返回最优解
favl返回目标函数的值

exitflag返回描述退出条件的exitflag。

3 整数规划
3.1 整数规划的定义

规划中的部分或全部变量限制为整数时,称为整数规划。若在线性规划模型中,变量限制为整数,则称为整数线性规划。

3.2 求解整数规划的方法

目前所流行的求解整数规划的方法,往往只适用于整数线性规划。
常见的整数规划问题的求解算法有:
       1)分枝定界法:可求纯或混合整数线性规划。
       2)割平面法:可求纯或混合整数线性规划。
       3)隐枚举法:用于求解0-1整数规划,有过滤隐枚举法和分枝隐枚举法。
       4)匈牙利法:解决指派问题(0-1规划特殊情形)。
       5)蒙特卡罗法:求解各种类型规划。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值