Matlab 线性规划问题模型代码
线性规划问题的基本内容
线性规划解决的是自变量在一定的线性约束条件下,使得线性目标函数求得最大值或者最小值的问题。
\[ \min z=\sum_{j=1}^{n} f_{j} x_{j} \]
\[ \text { s.t. }\left\{\begin{array}{ll}{\sum_{j=1}^{n} a_{i j} x_{j} \leqslant b_{i}} & {(i=1,2, \cdots, m)} \\ {\sum_{j=1}^{n} a_{k j}^{\mathrm{eq}} x_{j} \leqslant b_{k}^{\mathrm{eq}}} & {(k=1,2, \cdots, h)} \\ {\mathrm{lb}_{j} \leqslant x_{j} \leqslant \mathrm{ub}_{j}} & {(j=1,2, \cdots, n)}\end{array}\right. \]
其中
价值系数向量为
\[ \mathbf{F}=\left(f_{1}, f_{2}, \cdots, f_{n}\right)^{\mathrm{T}} \]
决策变量向量为
\[\mathbf{X}=\left(x_{1}, x_{2}, \cdots, x_{n}\right)^{\mathrm{T}}\]
不等式约束系数矩阵为
\[\mathbf{A}=\left(\begin{array}{ccc}{a_{11}} & {\cdots} & {a_{1 n}} \\ {\vdots} & {\ddots} & {\vdots} \\ {a_{m 1}} & {\cdots} & {a_{m n}}\end{array}\right)\]
不等式右端常数向量为
\[\mathbf{B}=\left(b_{1}, b_{2}, \cdots, b_{n}\right)^{\mathrm{T}}\]
等式约束系数矩阵为
\[\mathbf{A}_{eq} = \left(\begin{array}{ccc}{a_{11}^{\mathrm{cq}}} & {\cdots} & {a_{1 n}^{\mathrm{cq}}} \\ {\vdots} & {\ddots} & {\vdots} \\ {a_{\mathrm{h1}}^{\mathrm{eq}}} & {\cdots} & {a_{\mathrm{hn}}^{\mathrm{eq}}}\end{array}\right)\]
等式右端常数向量为
\[\mathbf{B}_{\mathrm{eq}}=\left(b_{1}^{\mathrm{eq}}, b_{2}^{\mathrm{eq}}, \cdots, b_{\mathrm{h}}^{\mathrm{eq}}\right)^{\mathrm{T}}\]
决策变量下界向量为
\[\mathbf{L B}=\left(\mathrm{lb}_{1}, \mathrm{lb}_{2}, \cdots, \mathrm{lb}_{n}\right)^{\mathrm{T}}\]
决策变量上界变量为
\[\mathbf{UB}=\left(\mathrm{ub}_{1}, \mathrm{ub}_{2}, \cdots, \mathrm{ub}_{n}\right)^{\mathrm{T}}\]
当目标函数为最小值时,上述问题可以写成如下形式:
\[ \min z=\boldsymbol{F}^{\mathrm{T}} \boldsymbol{X} \]
\[ \text { s.t. }\left\{\begin{array}{l}{\mathbf{A}\mathbf{X} \leqslant \mathbf{B}} \\ {\mathbf{A}_{\mathrm{eq}} \mathbf{X}=\mathbf{B}_{\mathrm{eq}}} \\ {\mathbf{LB} \leqslant \mathbf{X} \leqslant \mathbf{UB}}\end{array}\right. \]
当目标函数为最大值时,上述问题可以写成如下形式:
\[ \max z=\boldsymbol{-F}^{\mathrm{T}} \boldsymbol{X} \]
\[ \text { s.t. }\left\{\begin{array}{l}{\mathbf{A}\mathbf{X} \leqslant \mathbf{B}} \\ {\mathbf{A}_{\mathrm{eq}} \mathbf{X}=\mathbf{B}_{\mathrm{eq}}} \\ {\mathbf{LB} \leqslant \mathbf{X} \leqslant \mathbf{UB}}\end{array}\right. \]
Matlab模型代码
调用形式
[X,FVAL,EXITFLAG,OUTPUT,LAMBDA] = linprog(F,A,B,Aeq,Beq,LB,UB) % 目标函数为最小值[X,FVAL,EXITFLAG,OUTPUT,LAMBDA] = linprog(-F,A,B,Aeq,Beq,LB,UB) % 目标函数为最大值
输入变量
F 为目标函数中的价值系数向量
A 为不等式约束系数矩阵(注意默认不等式方向为小于等于,若为大于等于,需要将其取相反数)
B 为不等式右端常数向量(注意默认不等式方向为小于等于,若为大于等于,需要将其取相反数)
Aeq 为等式约束系数矩阵
Beq 为等式右端常数向量
LB 为决策变量下界向量
UB为决策变量上界向量
在调用时,输入参数不存在时,可以将其输入用 []
空矩阵表示。
输出变量
- X 为最优解
- FVAL 为最优目标值
- EXITFLAG 为运行结束标志,当等于1时,表示程序收敛于解 X;当等于0时,表示程序运行次数到达最大;当小于0时,说明情况较多
- OUTPUT 为程序迭代次数
- LAMBDA 为解X相关的Largrange乘子和影子价格
案例演示
目标函数与约束条件
\[ \min z=2 x_{1}+3 x_{2}+x_{3} \]
\[ \left\{\begin{array}{l}{x_{1}+4 x_{2}+2 x_{3} \geq 8} \\ {3 x_{1}+2 x_{2} \geq 6} \\ {x_{1}, x_{2}, x_{3} \geq 0}\end{array}\right. \]
Matlab程序
F= [2;3;1];
A = [1,4,2;3,2,0];
B = [8;6];
LB = zeros(3,1);
[X,FVAL] = linprog(F,-A,-B,[],[],LB,[])
运行结果
Optimization terminated.X =0.80661.79000.0166FVAL =7.0000
转载于:https://www.cnblogs.com/gshang/p/11486534.html
Matlab 线性规划问题模型代码相关推荐
- Matlab 整数线性规划问题模型代码
整数线性规划问题的基本内容 整数线性规划解决的是自变量在一定的线性约束条件下,使得线性目标函数求得最大值或者最小值的问题.其中自变量只能取整数.特别地,当自变量只能取0或者1时,称之为 0-1 整数规 ...
- Matlab 非线性规划问题模型代码
非线性规划问题的基本内容 非线性规划解决的是自变量在一定的非线性约束或线性约束组合条件下,使得非线性目标函数求得最大值或者最小值的问题. 当目标函数为最小值时,上述问题可以写成如下形式: \[ \mi ...
- Matlab 图论最短路问题模型代码
最短路问题的基本内容 最短路问题研究的是,在一个点与点之间连接形成的网络图中,对应路径赋予一定的权重(可以理解为两点之间的距离),计算任意两点之间如何和走,路径最短的问题.在这里的距离可以理解成各种两 ...
- Matlab 模拟退火算法模型代码
function [best_solution,best_fit,iter] = mySa(solution,a,t0,tf,Markov) % 模拟退化算法 % ===== 输入 ======% % ...
- MATLAB的超效率SBM-DEA模型代码 可以做期望产出和非期望产出的超效率和非超效率sbm模型和Malmquist指数和分解
MATLAB的超效率SBM-DEA模型代码(有安装教程和内容讲解之类的东西),操作很简单 可以做期望产出和非期望产出的超效率和非超效率sbm模型和Malmquist指数和分解 ID:669695527 ...
- sbm预测matlab,**matlab计算非期望产出sbm模型代码**
matlab计算非期望产出sbm模型代码 data1=xlsread('E:\论文材料\毕业论文\02.xlsx',1) data2=xlsread('E:\论文材料\毕业论文\02.xlsx',2) ...
- 永磁同步电机模型预测控制,自抗扰控制,滑模控制等matlab仿真及ccs代码。
永磁同步电机模型预测控制,自抗扰控制,滑模控制等matlab仿真及ccs代码. ID:13800650571175155简熙纯净水
- [原创] Matlab 指派问题模型代码
指派问题的基本内容 一般来说指派问题解决的是如何将任务分配到人,使得任务完成的效益最大化(成本型效益则求最小值,利润型效益则求最大值).上述问题一个 0 - 1 整数规划问题. 问题围绕着任务和人展开 ...
- matlab指派问题优化,[原创] Matlab 指派问题模型代码
指派问题的基本内容 一般来说指派问题解决的是如何将任务分配到人,使得任务完成的效益最大化(成本型效益则求最小值,利润型效益则求最大值).上述问题一个 0 - 1 整数规划问题. 问题围绕着任务和人展开 ...
最新文章
- Petrozavodsk Summer-2016. Ural FU Dandelion Contest
- php 动态网格,php-动态更改引导网格方向(从ltr到rtl或reverese)
- tensorflow 测试 cuda 是否安装成功,测试代码环境
- Pyhton为什么这么厉害?无意中从一道奥数题发现Python真的爽翻了
- Java二分查找、折半查找
- java-Integer的自动装箱与拆箱
- SpringBoot 小技巧
- 前端面试高频考点,ES6知识点汇总!!!
- 产品经理业务流程图的绘制流程分享
- htm的head标签各元素分享
- word中带下划线的内容自动换行
- 电子商务平台如何给商户结算?
- PHP 判断日期格式
- 数学三次危机(四)第一次数学危机
- 用 MatLab 绘制立体心形
- 行走在数据库上的行癫(二)
- 使用面向对象思想,输出员工信息并计算员工的工资。定义一个部门(Department)类,该类有部门编号(Id)、部门名称(Name)属性;再定义一个员工(Employee)类,该类的属性有员工编号
- MODIS下载、处理全流程记录
- CSS——CSS盒子模型(重点※)
- 微信小程序实现转盘抽奖
热门文章
- 解决Latex图片或者表格浮动
- 【Java Web前端开发】TomcatServlet基础
- 【Network Security!】搭建文件分享服务器,其实也可以很简单-HFS
- java中的默认排序规则,C#中列表,集合排序Sort,OrderBy与Java排序规则默认不一致...
- pythonos模块修改文件名_python如何动态改变文件名
- 龙岗网络推广解析有关网站SEO排名上去了,但没实际性点击的问题
- 广州网络推广是如何利用自媒体平台做好网络营销推广的?
- 计算机控制直流电机闭环调速实验,最小拍控制系统及直流电机闭环调速控制系统设计和实现实验报告...
- js遍历追加html子样式,前端基本功:JS(十一)动画封装(CSS样式获取、JSON遍历)...
- java如何使显示字符下标_Java如何在 Word 中设置上、下标