线性规划

1、所有线性规划问题化成matlab中规定的标准形式:

f, x, b, beq, lb, ub为列向量,其中f为价值向量,b为资源向量,A,Aeq为矩阵。

2、linprog函数

上述对应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)

x返回决策向量的取值;fval返回目标函数的最优值;f为价值向量

A、b对应不等式约束

Aeq和beq对应线性等式约束

lb和ub分别对应决策向量的下界上界

3、Easy example:

m a x z = 2 x 1 + 3 x 2 − 5 x 3 , { x 1 + x 2 + x 3 = 7 , 2 x 1 − 5 x 2 + x 3 ≥ 10 , x 1 + 3 x 2 + x 3 ≤ 12 , x 1 , x 2 , x 3 ≥ 0 max\ z=2x_1+3x_2-5x_3,\\ \begin{cases} x_1+x_2+x_3=7,\\ 2x_1-5x_2+x_3 ≥ 10,\\ x_1+3x_2+x_3≤12,\\ x_1,x_2,x_3≥0 \end{cases} max z=2x1​+3x2​−5x3​,⎩⎪⎪⎪⎨⎪⎪⎪⎧​x1​+x2​+x3​=7,2x1​−5x2​+x3​≥10,x1​+3x2​+x3​≤12,x1​,x2​,x3​≥0​

①化为matlab标准型:
m i n w = − 2 x 1 − 3 x 2 + 5 x 3 , ( − 2 5 − 1 1 3 1 ) ( x 1 x 2 x 3 ) ≤ ( − 10 12 ) , [ 1 , 1 , 1 ] ⋅ [ x 1 , x 2 , x 3 ] T = 7 , [ x 1 , x 2 , x 3 ] T ≥ [ 0 , 0 , 0 ] T min\ w = -2x_1-3x_2+5x_3,\\ \left(\begin{matrix} -2 & 5 & -1\\ 1 & 3 & 1 \end{matrix}\right) \left(\begin{matrix} x_1\\x_2\\x_3 \end{matrix}\right)≤ \left(\begin{matrix} -10\\12 \end{matrix}\right),\\ \left[1,\ 1,\ 1\right]\cdot{\left[x_1,\ x_2,\ x_3\right]}^T=7,\\ {\left[x_1,\ x_2,\ x_3\right]}^T≥[0,\ 0,\ 0]^T min w=−2x1​−3x2​+5x3​,(−21​53​−11​)⎝⎛​x1​x2​x3​​⎠⎞​≤(−1012​),[1, 1, 1]⋅[x1​, x2​, x3​]T=7,[x1​, x2​, x3​]T≥[0, 0, 0]T

>> f=[-2;-3;5];           % 价值向量
>> a=[-2,5,-1;1,3,1];    % a、b对应不等式的左边和右边
>> b=[-10;12];
>> aeq=[1,1,1];          % aeq和beq对应等式的左边和右边
>> beq=7;
>> [x,y]=linprog(f,a,b,aeq,beq,zeros(3,1));Optimal solution found.>> x                 % x=[x1;x2;x3]最优解x =6.42860.57140>> y=-y                   % 最优值(该题所求为max,但linprog函数求得的是min,故只需加个-)y =14.5714

4、example2:

某架货机有三个货舱:前仓、中仓、后仓。三个货舱所能装载的货物的最大重量和体积都有限制,如表2所示。并且,为了保持飞机的平衡,三个货舱中实际装载货物的重量必须与其最大容许重量成比例。

现有四类货物用该货机进行装运:

​ 货物规格及利润表

假设:

(1)每种货物可以无限细分

(2)每种货物可以分布在一个或者多个货舱内

(3)不同的货物可以放在同一个货舱内,并且可以保证不留空隙

问:应如何装运,使货机飞行利润最大?

解:

用 i = 1,2,3,4表示货物1、2、3、4;用 j =1,2,3表示前舱、中仓、后仓。
设 x i j 表 示 第 i 种 货 物 在 第 j 个 货 舱 内 的 重 量 , w j 和 v j 表 示 可 以 运 输 的 第 j 个 舱 的 重 量 限 制 和 提 及 限 制 , a i , b i , c i 表 示 第 i 种 货 物 的 重 量 , 单 位 重 量 所 占 的 空 间 体 积 , 单 位 货 物 的 利 润 。 设x_{ij}表示第i种货物在第j个货舱内的重量,w_j和v_j表示可以运输的第j个舱的重量限制和提及限制,a_i,b_i,c_i表示\\第i种货物的重量,单位重量所占的空间体积,单位货物的利润。 设xij​表示第i种货物在第j个货舱内的重量,wj​和vj​表示可以运输的第j个舱的重量限制和提及限制,ai​,bi​,ci​表示第i种货物的重量,单位重量所占的空间体积,单位货物的利润。
(1)目标函数:
z = c 1 ∑ j = 1 3 x 1 j + c 2 ∑ j = 1 3 x 2 j + c 3 ∑ j = 1 3 x 3 j + c 4 ∑ j = 1 3 x 4 j = ∑ i = 1 4 c i ∑ j = 1 3 x i j z=c_1\sum_{j=1}^{3}{x_{1j}}+c_2\sum_{j=1}^{3}{x_{2j}}+c_3\sum_{j=1}^{3}{x_{3j}}+ c_4\sum_{j=1}^{3}{x_{4j}}=\sum_{i=1}^{4}{c_i}\sum_{j=1}^{3}{x_{ij}} z=c1​j=1∑3​x1j​+c2​j=1∑3​x2j​+c3​j=1∑3​x3j​+c4​j=1∑3​x4j​=i=1∑4​ci​j=1∑3​xij​
(2)约束条件:

① 四种货物的重量约束:
∑ j = 1 3 x i j ≤ a i , i = 1 , 2 , 3 , 4 \sum_{j=1}^{3}{x_{ij}}≤a_i\ ,i=1,2,3,4 j=1∑3​xij​≤ai​ ,i=1,2,3,4
② 三个货舱的重量限制:
∑ i = 1 4 x i j ≤ w j , j = 1 , 2 , 3 \sum_{i=1}^{4}{x_{ij}}≤w_{j}\ ,j=1,2,3 i=1∑4​xij​≤wj​ ,j=1,2,3
③ 三个货舱的体积限制:
∑ i = 1 4 b i x i j ≤ v j , j = 1 , 2 , 3 \sum_{i=1}^{4}{b_ix_{ij}}≤v_{j}\ ,j=1,2,3 i=1∑4​bi​xij​≤vj​ ,j=1,2,3
④ 三个货舱的平衡限制:
∑ i = 1 4 x i 1 10 = ∑ i = 1 4 x i 2 16 = ∑ i = 1 4 x i 3 8 \frac{\sum_{i=1}^{4}{x_{i1}}}{10}=\frac{\sum_{i=1}^{4}{x_{i2}}}{16}= \frac{\sum_{i=1}^{4}{x_{i3}}}{8} 10∑i=14​xi1​​=16∑i=14​xi2​​=8∑i=14​xi3​​
综上,建立线性规划模型:
m a x z = ∑ i = 1 4 c i ∑ j = 1 3 x i j { ∑ j = 1 3 x i j ≤ a i , i = 1 , 2 , 3 , 4 ∑ i = 1 4 x i j ≤ w j , j = 1 , 2 , 3 ∑ i = 1 4 b i x i j ≤ v j , j = 1 , 2 , 3 ∑ i = 1 4 x i 1 10 = ∑ i = 1 4 x i 2 16 = ∑ i = 1 4 x i 3 8 max\ z=\sum_{i=1}^{4}{c_i}\sum_{j=1}^{3}{x_{ij}}\\ \begin{cases} \sum_{j=1}^{3}{x_{ij}}≤a_i\ ,i=1,2,3,4\\ \sum_{i=1}^{4}{x_{ij}}≤w_{j}\ ,j=1,2,3\\ \sum_{i=1}^{4}{b_ix_{ij}}≤v_{j}\ ,j=1,2,3\\ \frac{\sum_{i=1}^{4}{x_{i1}}}{10}=\frac{\sum_{i=1}^{4}{x_{i2}}}{16}= \frac{\sum_{i=1}^{4}{x_{i3}}}{8} \end{cases} max z=i=1∑4​ci​j=1∑3​xij​⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧​∑j=13​xij​≤ai​ ,i=1,2,3,4∑i=14​xij​≤wj​ ,j=1,2,3∑i=14​bi​xij​≤vj​ ,j=1,2,310∑i=14​xi1​​=16∑i=14​xi2​​=8∑i=14​xi3​​​

% 目标函数
c=[3100;3800;3500;2850];     % 由目标函数可知有12个变量
c=c*ones(1,3);               % 使c变成4行3列,对应目标函数未知量前面的系数
c=c(:);                    % c每列合并成一个长的列向量
% 约束条件1,需要构造如下数组
a1=zeros(4,12);
for i=1:4                             a1(i,i:4:12)=1;
end
b1=[18 15 23 12]';
% 约束条件2
a2=zeros(3,12);
for i=1:3a2(i,4*i-3:4*i)=1;
end
b2=[10 16 8]';
% 约束条件3
bb=[480;650;580;390];
a3=zeros(3,12);
for i=1:3a3(i,4*i-3:4*i)=bb;
end
b3=[6800 8700 5300]';
a=[a1;a2;a3];
b=[b1;b2;b3];
%----------------------------
% 等式条件
aeq=zeros(2,12);
aeq(1,1:4)=1/10;
aeq(1,5:8)=-1/16;
aeq(2,5:8)=1/16;
aeq(2,9:12)=-1/8;
beq=[0;0];
lb=zeros(12,1);
[x,y]=linprog(-c,a,b,aeq,beq,lb,[])
x=reshape(x,[4,3])         % 化为3*4的数组
x=sum(x')                  % 舱1,2,3分别放入货物的总重量
y=-y;
y =-1.2152e+05x =0         0         07.0000         0    8.00003.0000   12.9474         00    3.0526         0x =0   15.0000   15.9474    3.0526

答: 求得的四种货物的吨数分别为 0, 15 ,15.9474 ,3.0526

​ 总利润为 1.2152×10^5元。

线性规划(matlab篇)相关推荐

  1. [Matlab]篇----回归分析Matlab命令(regress篇)

    [Matlab]篇--回归分析Matlab命令(regress篇) 一.简介 最近在做回归分析方面的东西,网上查阅相关资料,通过实际调试,对调试结果进行总结. 回归分析法指利用数据统计原理,对大量统计 ...

  2. 矢量量化识别孤立字的matlab编码_新zwpython 完胜 老matlab 篇二

    新zwpython 完胜 老matlab 篇二 昨天在知乎: <如何看待哈工程和哈工大被 MathWorks 禁止使用 MATLAB?>https://www.zhihu.com/ques ...

  3. cvpr2020 matlab_新zwpython 完胜 老matlab 篇二

    新zwpython 完胜 老matlab 篇二 昨天在知乎: <如何看待哈工程和哈工大被 MathWorks 禁止使用 MATLAB?>https://www.zhihu.com/ques ...

  4. 线性规划matlab及LinGo

    目录 1.线性规划matlab 2.lingo 1.线性规划matlab 建立线性规划模型有三个步骤: 1 . 找出待定的未知变量(决策变量),并用代数符号表示它们. 2 . 找出问题中所有的限制或约 ...

  5. matlab 矩阵线性规划,MATLAB求解线性规划(含整数规划和0-1规划)问题

    对于这类线性规划问题,数学理论已经较为完善,可以有多种方法求解此类问题.但写这篇文章的目的并不是为了介绍数学理论,我们这里主要讲解如果利用工具求解这一类线性规划问题. 最著名,同时也是最强大的数学最优 ...

  6. A*算法简介-matlab篇

    如果你对A*多少有过了解,但是不知道如何编程,这篇文章可以帮助你: 如果你对A*毫无了解,想熟悉了解下,这篇文章和参考文章可以帮助你: 如果你对A*了如指掌,并且是算法大师,这篇文章帮不到你,请指教一 ...

  7. matlab篇——二维坐标图

    想实现:        当x=c时,y=b这种线性二维坐标图 x= c y=b x=1 y=1 x=2 y=4 x=3 y=9 x=4 y=16 x=5 y=25 x=6 y=49 我发现matlab ...

  8. Matlab篇(二)MATLAB中addpath的用法 (转)

    MATLAB help 中的语法: addpath('folderName1','folderName2','folderName3' ...) addpath('folderName1','fold ...

  9. Matlab篇(一)Matlab操作技巧

    1.转置 Matlab中转置分为为两种,共轭转置和非共轭转置: 共轭转置 : 非共轭转置 : 注意:非共轭转置下面有一个.: 例子: close all;clc;clear all; %% 转置a = ...

最新文章

  1. APP Store案例数据分析
  2. Python的IDE之PyCharm:PyCharm的简介、安装、入门、使用方法之详细攻略
  3. 第五章 - 图像形态学 - 基于图像金字塔的图像分割(cvPyrSegmentation)
  4. java 文件下载方法_【工具类】Java后台上传下载文件的几种方式
  5. JS 客户端浏览器操作、BOM、渗透客户端浏览器(windows对象:screen屏幕操作、location浏览器域名、history浏览器历史、Navigator浏览器信息、cookie)
  6. 基于JAVA+SpringMVC+Mybatis+MYSQL的大学生毕业设计管理系统
  7. win7键盘失灵 登陆界面键盘失效无法输入密码的解决办法
  8. SmartRoute之远程接口调用和负载
  9. 反垄断重锤字节跳动,投资业务原地熄火 腾讯阿里争做“普通公司”
  10. kum酷喵机器人框架pro2.2开源
  11. 修复Word打开文档默认显示两页的问题
  12. java 视频转mp4_java视频转码mov转MP4
  13. Request和Response的概述及其方法
  14. 富士通笔记本最新系统恢复方法——系统工具恢复
  15. 附录10-项目黑马面面
  16. ​12864无字库液晶显示(一)
  17. 埃安崛起,新能源汽车下半场
  18. 《连线》杂志:Web已死 Internet永生(全文),互联网营销
  19. windbg调试ACPI ASL Code 实例一则
  20. 页面跳转打开APP,若没有安装则跳转到下载页面

热门文章

  1. 最详细的SQL注入语句
  2. Matlab中interp1()和interp2()的用法
  3. 常见的几种距离量度(欧式距离、曼哈顿距离、切比雪夫距离等)
  4. 给力!低代码开发平台广州流辰信息科技助您增辉创价值!
  5. 02325计算机系统结构201810,2018年10月自考02325计算机系统结构真题及答案
  6. Ehcache基本使用
  7. APP开放源码第一弹《纳豆》
  8. fastdb 简介 查询语言
  9. 服务器系统都有哪些?
  10. 参数维纳滤波(Parametric Wiener Filter)