matlab——线性规划
@
前言
线性规划是数学规划中的一个重要分支,常用于解决如何利用现有资源来安排生产,以取得最大经济效益的问题。本文将粗略地介绍线性规划,matlab实现和常见变形。
一、基本概念
一般线性规划问题地(数学)标准型为
y=
\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中规定线性规划的标准形式为:
\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)如果是求\(\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.常见变形
\]
这看起来不是线性规划,但可以通过变换转化成线性规划问题。
注意到对任意\(x_i\),存在\(u_i,v_i\geq 0\)满足
\]
记\(\pmb u=[u_1,...,u_n]^T,\pmb v=[v_1,...,v_n]^T\),于是上述问题转化为
\begin{cases}
\pmb{A\cdot (u-v)}\leq \pmb b,\\
\pmb {u,v}\geq 0.\\
\end{cases}
\]
改写成matlab形式
\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)
z
参考书目
《数学建模算法与应用》
matlab——线性规划的更多相关文章
- Matlab线性规划
线性规划 线性规划的标准形式 \[\underset{x}{min}{\ c^Tx}\ s.t.\ Ax \leqslant b\] 例如,线性规划为: \[ \underset{x}{min ...
- Matlab 线性规划问题模型代码
线性规划问题的基本内容 线性规划解决的是自变量在一定的线性约束条件下,使得线性目标函数求得最大值或者最小值的问题. \[ \min z=\sum_{j=1}^{n} f_{j} x_{j} \] \[ ...
- MATLAB 线性规划实例应用
线性规划 线性规划函数 功能:求解线性规划问题 语法 x = linprog(f,A,b):求解问题 min fx,约束条件为 Ax <= b x = linprog(f,A,b,Aeq,beq ...
- matlab绘图--线性规划图解法示意
matlab绘图--线性规划图解法示意 图解法 matlab绘图 区域填充 线性规划问题: matlab绘图 L1=[4,0;4,4]; plot(L1(:,1),L1(:,2));hold on ...
- 小小知识点(四)——MATLAB如何画等高线图和线性规划约束方程
MATLAB程序: figure contourf(x,y,data) % 画等高线 hold on plot(x,y(x)) %画线性规划约束方程1 hold on plot(y,x(y)) %画线 ...
- 线性规划 Matlab
线性规划的 Matlab 解法 形式 s.t.( subject to) c和 x为n 维列向量, A. Aeq 为适当维数的矩阵,b .beq为适当维数的列向 量. 函数: linprog(c,A, ...
- Matlab的linprog解决简单线性规划问题
一个简单的线性规划问题,使用Matlab的linprog解决 假定有n种煤,各种煤的配比为x1,x2,x3,……首先需要满足下列两个约束条件,即 x1+x2+x3……+xn=1 x1≥0, x2≥0, ...
- yalmip + lpsolve + matlab 求解混合整数线性规划问题(MIP/MILP)
最近建立了一个网络流模型,是一个混合整数线性规划问题(模型中既有连续变量,又有整型变量).当要求解此模型的时候,发现matlab优化工具箱竟没有自带的可以求解这类问题的算法(只有bintprog求解器 ...
- MATLAB规划问题——线性规划和非线性规划
1.线性规划 求线性规划问题的最优解有两种方法,一种方法是使用linprog命令,另一种是使用optimtool工具箱,下面分别介绍这两种方法. ①linprog命令 一般情况下,Linprog命令的 ...
随机推荐
- TSR交通标志检测与识别
TSR交通标志检测与识别 说明: 传统图像处理算法的TSR集成在在ARM+DSP上运行,深度学习开发的TSR集成到FPGA上运行. 输入输出接口 Input: (1)图像视频分辨率(整型int) (2 ...
- Xilinx FPGA全局介绍
Xilinx FPGA全局介绍 现场可编程门阵列 (FPGA) 具有诸多特性,无论是单独使用,抑或采用多样化架构,皆可作为宝贵的计算资产:许多设计人员并不熟悉 FPGA,亦不清楚如何将这类器件整合到设 ...
- ARM系列处理器和架构
从一只ARM到另一只ARM! ARM处理器和架构 当前可用的处理器 ARM1 ARM2 ARM3 ARM4和5 ARM6 ARM7 ARM8 强壮有力的ARM ARM9 ARM10 ARM架构 v1 ...
- WordPress安装篇(5):源码编译安装LNMP并部署WordPress
与YUM方式安装相比,源码编译安装方式更灵活,安装过程中能自定义功能和参数,特别是在批量部署服务器又要求软件版本及配置一致时,源码编译安装的优势很明显.本文介绍如何通过源码编译方式安装Nginx1.1 ...
- 在VScode 中使用RT-Thread Studio初体验
前言 工欲善其事,必先利其器,VScode是什么东东,想必大家都非常熟悉了,丰富的插件,有好的开发界面,是很多程序开发者的不二之选,RT-Thread竟然也开发了Vscode插件,真的是非常的nice ...
- Java中最大的数据结构:LinkedHashMap了解一下?
前言 Map 家族数量众多,其中 HashMap 和 ConcurrentHashMap 用的最多,而 LinkedHashMap 似乎则是不怎么用的,但是他却有着顺序.两种,一种是添加顺序,一种是访 ...
- Java @FunctionalInterface注解-6
在学习 Lambda 表达式时,我们提到如果接口中只有一个抽象方法(可以包含多个默认方法或多个 static 方法),那么该接口就是函数式接口.@FunctionalInterface 就是用来指定某 ...
- csp-s模拟测试52-53
留坑.... 改完题再说吧. 留坑....最近考得什么鬼??模拟53T1 u(差分) 一道差分题????然而考场没有想到如何维护斜率上的差分,事后经miemeng和cyf的生(xuan)动(xue)讲 ...
- 【Javascript + Vue】实现随机生成迷宫图片
前言 成品预览:https://codesandbox.io/s/maze-vite-15-i7oik?file=/src/maze.js 不久前写了一篇文章介绍了如何解迷宫:https://www. ...
- UnityPlayerActivity.java使用或覆盖了已过时的 API。
Root\Temp\gradleOut\unityLibrary\src\main\java\com\unity3d\player\UnityPlayerActivity.java使用或覆盖了已过时的 ...