MATLAB_数学规划
用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∑ncjxjs.t.{∑j=1naijxj=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标准型
- 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为矩阵。 - 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.[−2153−11]⎣⎡x1x2x3⎦⎤≤[−1012][111]⋅⎣⎡x1x2x3⎦⎤=7[x1x2x3]T≥[000]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
- 点赞
- 收藏
- 分享
- 文章举报
- 数学建模 | MATLAB学习 | 非线性规划
- 数学规划模型的matlab求解
- [数学建模]线性规划与matlab解法
- [数学建模]线性规划与matlab,lingo解法
- 数学建模规划模型(转)
- 我做的是轨迹规划,有人能看懂这段matlab代码是什么意思么
- 线性规划(Matlab)丨线性规划问题与投资的收益和风险
- Matlab内置数学函数
- 数学建模入门-matlab实现偏微分方程数值解
- matlab 规划问题 利用蒙…
- 【转】matlab图像处理学习笔记-数学形态与二值图像操
- 数学建模 | MATLAB学习 | 蒙特卡洛算法
- MATLAB数学建模资料
- MATLAB符号数学解非线性方程组 -- 眼球反射模型
- [从头学数学] 第267节 [计算几何] 路径规划
- MATLAB学习的历程规划
- matlab 基本数学函数
- 基于蚁群算法的路径规划MATLAB代码 无错版
- 研究生数学建模比赛做的一些matlab脚本(2012基因那题)
- 初学数学建模软件MATLAB的笔记3