【练习2021-10-10】求解一个简单的线性规划 MATLAB

例题:
求解线性规划问题
max ⁡ z = 2 x 1 + 3 x 2 − 5 x 3 \max z = 2x_1+3x_2-5x_3 maxz=2x1+3x25x3 s . t . s.t. s.t. x 1 + x 2 + x 3 = 7 x_1+x_2+x_3=7 x1+x2+x3=7 2 x 1 − 5 x 2 + x 3 ≥ 10 2x_1-5x_2+x_3≥10 2x15x2+x310 x 1 + 3 x 2 + x 3 ≤ 12 x_1+3x_2+x_3≤12 x1+3x2+x312 x 1 , x 2 , x 3 ≥ 0 x1,x2,x3≥0 x1,x2,x30

解:
1.原理
(s.t.意思是约束条件)
首先要知道的是线性规划的MATLAB标准模板是下图所示。
【练习2021-10-10】求解一个简单的线性规划 MATLAB_第1张图片
其中,x、c、b、beq、lb、ub是列向量;
A、Aeq是矩阵;
fval是价值向量。

所需要的做的就是把题目转化成标准型。MATLAB公式只能求最小值,模板中也是小于等于号,所以对应的,如果要求最大值,就需要加负号调整。

MATLAB中求解线性规划的命令为下图所示
在这里插入图片描述
其中,x返回的是决策向量的取值,fval返回的是目标函数的最优值;
c为价值向量,A、b对应的是线性不等式约束;
Aeq、beq对应的是线性等式约束;
lb、ub分别对应的是决策向量的下届向量和上界向量。

2.代码

f = [-2;-3;5]; 
a=[-2,5,-1;1,3,1];b=[-10;12];
aeq=[1,1,1];beq=7;
[x,y]=linprog(f,a,b,aeq,beq,zeros(3,1));
x,y=-y

下边是一个我的错误点,需要注意。
【练习2021-10-10】求解一个简单的线性规划 MATLAB_第2张图片
3.结果
【练习2021-10-10】求解一个简单的线性规划 MATLAB_第3张图片
返回值的含义是:
x 1 = 6.4286 , x 2 = 0.5714 , x 3 = 0 x_1=6.4286,x_2=0.5714,x_3= 0 x1=6.4286x2=0.5714x3=0时,有最优解 y = 14.5714 y=14.5714 y=14.5714

(注:本题出自b站BV1kC4y1a7Ee的P3)

你可能感兴趣的:(flag高高立起,matlab,线性代数,算法)