matlab——线性规划

前言

线性规划是数学规划中的一个重要分支,常用于解决如何利用现有资源来安排生产,以取得最大经济效益的问题。本文将粗略地介绍线性规划,matlab实现和常见变形。一、基本概念

一般线性规划问题地(数学)标准型为


\[max\quad z=\sum\limits_{j=1}^nc_jx_j, \\s.t \quady=
\begin{cases}
\sum\limits_{j=1}^na_{ij}x_j=b_i,i=1,2,...,m\\
x_j\geq0,j=1,2,...,n
\end{cases}
\tag{1}
\]


可行解:满足约束条件的解\(x=[x_1,...,x_n]^T\)

最优解:使目标函数达到最大值的可行解二、matlab实现

1.常用函数

matlab中规定线性规划的标准形式为:


\[\underset {x}{min}\ \pmb f^T\pmb x,\\s.t\quad \begin{cases}
\pmb{A\cdot x}\leq \pmb b,\\
Aeq \cdot \pmb x=beq\\
lb\leq x\leq ub
\end{cases}
\]


其中\(\pmb{f,x,b},beq,lb,ub\)为列向量, \(\pmb f\)称为价值向量,\(\pmb b\)称为资源向量;\(\pmb A,Aeq\)为矩阵。


matlab求线性规划的函数为

[x,fval]=linprog(f,A,b);[x,fval]=linprog(f,A,b,Aeq,beq);[x,fval]=linprog(f,A,b,Aeq,beq,lb,ub);//如果Aeq,beq不存在用[]代替1.2.3.


注意


(1)如果是求\(\underset {x}{max}\ \pmb f^T\pmb x\),则需转化为\(\underset {x}{min}\ \pmb {-f}^T\pmb x\),答案为函数求出来的值的相反数。


(2)在得到矩阵\(\pmb {A,b}\)前,要将所有不等式转化为\(\pmb {Ax}\leq \pmb b\)的形式。

2.常见变形


\[min\quad |x_1|+|x_2|+...+|x_n|,\\ s.t\quad \pmb {Ax\leq b}.\]


这看起来不是线性规划,但可以通过变换转化成线性规划问题。


注意到对任意\(x_i\),存在\(u_i,v_i\geq 0\)满足


\[x_i=u_i-v_i,|x_i|=u_i+v_i\\u_i=\frac{x_i+|x_i|}{2},v_i=\frac{|x_i|-x_i}{2}\]


记\(\pmb u=[u_1,...,u_n]^T,\pmb v=[v_1,...,v_n]^T\),于是上述问题转化为


\[min\quad \sum\limits_{i=1}^{n}(u_i+v_i),\\s.t\ \begin{cases}
\pmb{A\cdot (u-v)}\leq \pmb b,\\
\pmb {u,v}\geq 0.\\
\end{cases}
\]


改写成matlab形式


\[min\quad ,\left[ \begin{matrix} 1\\1\end{matrix}\right]^T\left[ \begin{matrix} \pmb u\\\pmb v\end{matrix}\right]\\s.t\ \begin{cases}
[A,-A]\cdot \left[ \begin{matrix} \pmb u\\\pmb v\end{matrix}\right],\\
\pmb {u,v}\geq 0.\\
\end{cases}
\]


code:

//z=|x1|+2|x2|+3|x3|+4|x4|f=1:4;f=[f,f]';A=[1,-1,-1,1;1,-1,1,-3;1,-1,-2,3];A=[A,-A];b=[-2;-1;-0.5];[y,z]=linprog(f,A,b,[],[],zeros(8,1));x=y(1:4)-y(5:end)z1.2.3.4.5.6.7.8.9.


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空