线性规划
要点
- 每个模型都有若干个决策变量,决策变量的一组值代表一种方案,一般非负。
- 目标函数、约束条件是决策变量的线性函数。
术语 | 说明 |
---|---|
s.t. | subject to,约束条件 |
max | 最大值(最大规划) |
min | 最小值(最小规划) |
最优化 | 最大规化或最小规化 |
Matlab 求解
Matlab 只能解最小规划
函数原型
m
i
n
z
=
c
T
x
min z = c^Tx
minz=cTx
{
A
x
≤
b
A
e
q
∗
x
=
b
e
q
l
b
≤
x
≤
u
b
\begin{array}{l} \left \{ \begin{array}{l} Ax\leq b\\ Aeq * x = beq\\ lb \leq x \leq ub \end{array} \right.\\ \end{array}
⎩⎨⎧Ax≤bAeq∗x=beqlb≤x≤ub
% fval:目标函数最优值;x最优解
[x,fval]=linprog(c,A,b,Aeq,beq,lb,ub,x0,options)
参数 | 说明 |
---|---|
c | 目标函数系数向量 |
A;b | A ∗ x ≤ b A*x \leq b A∗x≤b;A 是一元线性约束条件不等式组的系数矩阵;b 是对应的常数项组成的列向量; |
Aeq;beq | A ∗ x = b A*x=b A∗x=b;A 是一元线性约束条件方程组的系数矩阵;b 是对应的常数项组成的列向量; |
lb | 决策变量的下界 |
ub | 决策变量的上界 |
x0 | 初迭代点 |
最大(max)规划转最小(min)规划
目标函数系数向量取相反值。
用例
m
a
x
z
=
2
x
1
+
3
x
2
+
5
x
3
{
2
x
1
−
5
x
2
+
x
3
≥
10
x
1
+
3
x
2
+
x
3
≤
12
x
1
,
x
2
,
x
3
≥
0
max z = 2x_1+3x_2+5x_3\\ \begin{array}{l} \left \{ \begin{array}{l} 2x_1 - 5x_2 + x_3 \geq 10\\ x_1 + 3x_2 + x_3 \leq 12\\ x_1,x_2,x_3 \geq 0 \end{array} \right.\\ \end{array}
maxz=2x1+3x2+5x3⎩⎨⎧2x1−5x2+x3≥10x1+3x2+x3≤12x1,x2,x3≥0
化为适合 Matlab 计算的形式
m
i
n
z
=
−
2
x
1
−
3
x
2
−
5
x
3
{
−
2
x
1
+
5
x
2
−
x
3
≤
−
10
x
1
+
3
x
2
+
x
3
≤
12
x
1
,
x
2
,
x
3
≥
0
min z = -2x_1-3x_2-5x_3 \\ \begin{array}{l} \left \{ \begin{array}{l} -2x_1 + 5x_2 - x_3 \leq -10\\ x_1 + 3x_2 + x_3\leq 12\\ x_1,x_2,x_3 \geq 0 \end{array} \right.\\ \end{array}
minz=−2x1−3x2−5x3⎩⎨⎧−2x1+5x2−x3≤−10x1+3x2+x3≤12x1,x2,x3≥0
c = [-2,-3,-5];
A=[-2 5 -1; 1 3 1;];
b=[-10;12];
Aeq = [1 1 1];
beq = 7;
lb = zeros(3,1);
[x,fval] = linprog(c,A,b,Aeq,beq,lb);
disp(x);
% 此处求出的是变化后的目标函数的最小值,需要求相反数得其最大值
disp(-fval);
Matlab 画图
线性规划好难画。再说
相关资料