您的位置:首页 > 编程语言 > MATLAB

MATLAB_数学规划

2020-03-05 19:40 716 查看

用MATLAB解决数学规划问题

一、线性规划问题

1-实例

max  z=4x1+3x2 ,s.t.{2x1+x2≤10,x1+x2≤8,x2≤7,x1,x2≥0。 max\ \ z = 4x_1+3x_2\ , \\s.t. \begin{cases} 2x_1+x_2\leq10,\\ x_1+x_2\le8, \\ x_2\le7,\\ x_1,x_2\ge0。 \end{cases} max  z=4x1​+3x2​ ,s.t.⎩⎪⎪⎪⎨⎪⎪⎪⎧​2x1​+x2​≤10,x1​+x2​≤8,x2​≤7,x1​,x2​≥0。​

式中:x1,x2x_1,x_2x1​,x2​为决策变量,第一个式子为称为目标函数 ,s.t.s.t.s.t.(即subject to)称为约束条件

2-数学标准型:

max  z=∑j=0ncjxjs.t.{∑j=1naijxj=bi,i=1,2,…,m xj≥0,j=1,2,…,n max\ \ z=\sum_{j=0}^nc_jx_j \\ s.t. \begin{cases} \sum_{j=1}^na_{ij}x_j=b_i, &\text{$i$=1,2,\dots ,m } \\ x_j\ge0,&\text{$j$=1,2,\dots ,n} \end{cases} max  z=j=0∑n​cj​xj​s.t.{∑j=1n​aij​xj​=bi​,xj​≥0,​i=1,2,…,m j=1,2,…,n​
式中:bi≥0,i=1,2…,mb_i\ge0,i=1,2\dots,mbi​≥0,i=1,2…,m。

  • 可行解:满足约束条件的解 x=[x1,x2,⋯ ,xn]T\bm{x}=[x_1,x_2,\cdots,x_n]^{T}x=[x1​,x2​,⋯,xn​]T;使目标函数达到最大值的可行解称为最优解。
  • 可行域:所有可行解构成的集合称为问题的可行域,记为RRR。

3-MATLAB标准型

  1. Matlab中规定线性规划的标准形式为
    min  fTx,s.t.{A⋅x≤b,Aeq⋅x=beq,lb≤x≤up min\ \ \bm{f}^{T}\bm x, \\ s.t. \begin{cases} \bm A\cdot \bm x \le \bm b,\\ Aeq \cdot \bm x =beq, \\ \mathrm{lb}\le x\le \mathrm{up} \end{cases} min  fTx,s.t.⎩⎪⎨⎪⎧​A⋅x≤b,Aeq⋅x=beq,lb≤x≤up​
    式中:f,x,b,beq,lb,up\bm f,\bm x,\bm b,beq,\mathrm{lb,up}f,x,b,beq,lb,up为列向量,其中f\bm ff称为价值向量,b\bm bb称为资源向量;A,Aeq\bm A,AeqA,Aeq为矩阵。
  2. Matlab中求解线性规划问题的命令为
    [x,fval]=linprog(f,A,b,Aeq,beq,lb,ub) [x,\mathrm {fval}]=\mathrm{linprog(f,A,b,Aeq,beq,lb,ub)} [x,fval]=linprog(f,A,b,Aeq,beq,lb,ub)

4-可转换为线性规划的问题

5-例题

  • (1)求解下列线性规划问题
    max  z=2x1+3x2−5x3,s.t.{x1+x2+x3=7,2x1−5x2+x3≥10,x1+3x2+x3≤12,x1,x2,x3≥0。 max \; z=2x_1+3x_2-5x_3,\\ s.t.\begin{cases} x_1+x_2+x_3=7,\\ 2x_1-5x_2+x_3\ge10, \\ x_1+3x_2+x_3\le12,\\ x_1,x_2,x_3\ge0。\end{cases} maxz=2x1​+3x2​−5x3​,s.t.⎩⎪⎪⎪⎨⎪⎪⎪⎧​x1​+x2​+x3​=7,2x1​−5x2​+x3​≥10,x1​+3x2​+x3​≤12,x1​,x2​,x3​≥0。​

解:(1)化成Matlab标准型,即
min  w=−2x1−3x2+5x3,s.t.[−25−1131][x1x2x3]≤[−1012][111]⋅[x1x2x3]=7[x1x2x3]T≥[000]T min\; w=-2x_1-3x_2+5x_3,\\ s.t. \left[ \begin{array} {ccc} -2&5&-1\\ 1&3&1 \end{array} \right] \left[ \begin{array} {c} x_1\\x_2\\x_3 \end{array} \right] \le \left[ \begin{array} {c} -10\\ 12 \end{array} \right] \\ \left[ \begin{array} {c} 1&1&1 \end{array} \right] \cdot \left[ \begin{array} {c} x_1\\x_2\\x_3 \end{array} \right] =7 \\ \left[ \begin{array} {c} x_1&x_2&x_3 \end{array} \right] ^T \ge \left[ \begin{array} {c} 0&0&0 \end{array} \right]^T minw=−2x1​−3x2​+5x3​,s.t.[−21​53​−11​]⎣⎡​x1​x2​x3​​⎦⎤​≤[−1012​][1​1​1​]⋅⎣⎡​x1​x2​x3​​⎦⎤​=7[x1​​x2​​x3​​]T≥[0​0​0​]T
(2)求解的Matlab程序如下:

f=[-2;-3;5];

A=[-2,5,-1;1,3,1];

B=[-10;12];

a=[1,1,1];

b=7;

lb=zeros(3,1);
%生成3阶全0矩阵,即lb
[x,z]=linprog(f,A,B,a,b,lb);x;z=-z

  • 点赞
  • 收藏
  • 分享
  • 文章举报
Kristy_deng 发布了3 篇原创文章 · 获赞 1 · 访问量 83 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: