MATLAB 线性规划实例应用
- 线性规划
- 线性规划函数
- 功能:求解线性规划问题
- 语法
- x = linprog(f,A,b):求解问题 min fx,约束条件为 Ax <= b
- x = linprog(f,A,b,Aeq,beq):求解上面的问题,但增加等式约束,即 Aeqx = beq,若没有不等式存在,则令 A= []、b = []
- x = linprog(f,A,b,Aeq,beq,lb,ub):定义设计变量 x 的下届 lb 和 上届 ub,使得 x 始终在该范围内,若没有等式约束,令 Aeq = []、beq = []
- x = linprog(f,A,b,Aeq,beq,lb,ub,x0):设置初值为 x0。该选项只适用于中型问题,默认大型算法将忽略初值
- x = linprog(f,A,b,Aeq,beq,lb,ub,x0,options):用 options 指定的优化参数进行最小化
- [x,fval] = linprog(...):返回解 x 处的目标函数值 fval
- [x,lambda,exitflag] = linprog(...):返回 exitflag 值,描述函数计算的退出条件
- [x,lambda,exitflag,output] = linprog(...):返回包含优化信息的输出变量 output
- [x,fval,lambda,exitflag,output] = linprog(...):将解 x 处的拉格朗日乘子返回到 lambda 参数中
- 变量及算法:lambda 参数介绍
- lambda 是解 x 处的拉格朗日乘子,它的属性如下
- lambda.lower:lambda 的下届
- lambda.upper:lambda 的上届
- lambda.ineqlin:lambda 的线性不等式
- lambda.eqlin:lambda 的线性等式
- 大型优化算法:采用 LIPSOL 法,该法在进行迭代计算之前首先要进行一系列的预处理
- 中型优化算法:linprog 函数使用的是投影法,就像 quadprog 函数的算法一样,linprog 函数使用的是一种活动集方法,是线性规划中单纯形法的变种,他通过求解另一个线性规划问题来找到初始可行解
- 线性规划问题的应用
- 生产决策问题
- 某厂生产甲、乙两种产品,已知制成一吨产品甲需用资源A 3 吨,资源B 4 $m^3$,制成每吨产品乙需用资源A 2 吨,资源B 6 $m^3$,资源C 7 个单位。若每吨产品甲和乙的经济价值分别为 7 万元和 5 万元,3 种资源的限制量分别为 80 吨、220 $m^3$ 和 230 个单位,试分析应生产这两种产品各多少吨才能使创造的总经济价值最高?
- 这里可以令生产产品甲的数量为 $x_1$,生产产品乙的数量为 $x_2$。根据题意,代码设置如下:
clc
clear
f = [-7;-5];
A = [3 2
4 6
0 7];
b = [80;220;230];
lb = zeros(2,1);然后调用 linprog 函数:
[x,fval,exitflag,output,lambda] = linprog(f,A,b,[],[],lb)
最优化结果如下:
- 由上可知,生产甲种产品 4.7619 吨、乙种产品 32.8571 吨可使创造的总经济价值最高,最高经济价值为 197.6190 万元。exitflag = 1 表示过程正常收敛于解 x 处。
2.工作人员计划安排问题
- 某昼夜服务的公共交通系统每天各时间段(每 4 小时为一个时间段)所需的值班人数如表所示,这些值班人员在某一时段开始上班后要连续工作 8 小时(包括轮流用餐时间),请问该公共交通系统至少需要多少名工作人员才能满足值班的需要?
- 这里可设 $x_i$ 为第 i 个时段开始上班的人员数
clc
clear
f = [;;;;;];
A = [- -
- -
- -
- -
- -
- -];
b = [-;-;-;-;-;-];
lb = zeros(,); - 然后调用 linprog 函数
[x,fval,exitflag,output,lambda] = linprog(f,A,b,[],[],lb)
- 最优化结果如下:
- 这里可设 $x_i$ 为第 i 个时段开始上班的人员数
可见只要 6 个时段分别安排 26 人、25 人、45 人、26 人、14 人和 24 人就可以满足值班的需要,共计 160 人,并且计算结果 exitflag = 1 是收敛的
3. 投资问题
- 某单位有一批资金用于 4 个工程项目的投资,用于各工程项目时所得的净收益(投入资金的百分比)如表所示
- 由于某种原因,决定用于项目 A 的投资不大于其他各投资之和,而用于项目 B 和 C 的投资要大于项目 D 的投资,试确定使该单位收益最大的投资分配方案。
- 这里可以用 $x_1、x_2、x_3 和 x_4$ 分别代表用于项目 A、B、C 和 D 的投资百分数,由于各项目的投资百分数之和必须等于 100%,所以 $x_1+x_2+x_3+x_4 = 1$,代码设置如下:
f = [-0.18;-0.1;-0.09;-0.12];
A = [ - - -
- - ];
b = [;];
Aeq = [ ];
beq = [];
lb = zeros(,); - 调用函数:
[x,fval,exitflag,output,lambda] = linprog(f,A,b,Aeq,beq,lb)
- 结果如下:
说明 A、B、C、D 投入资金的百分比分别为 50%、25%、0%、25% 时,该单位收益最大
4. 工件加工任务分配问题
- 某车间有两台机床甲和乙,可用于加工 3 种工件。假定这两台机床的可用台时数分别为 600 和 900,3 种工件的数量分别为 400、600 和 500,且已知用两台不同机床加工单位数量的不同工件所需的台时数和加工费用(如表所示),问怎样分配机床的加工任务,才能既满足加工工件的需求,又使总加工费用最低?
- 这里可设在甲机床上加工工件1、2 和 3 的数量分别为 $x_1、x_2、x_3$,在乙机床上加工工件1、2 和 3 的数量分别为 $x_4、x_5、x_6$,根据 3 种工种的数量限制,则有:$x_1+x_4 = 400(对工件 1) ,x_2+x_5 = 600(对工件 2),x_3+x_6=500(对工件 3)$,根据题意:
clc
clear
f = [;;;;;];
A = [0.6 1.2 1.1
0.4 1.2 1.0];
b = [;];
Aeq = [ ];
beq = [ ];
lb = zeros(,);然后调用 linprog 函数:
[x,fval,exitflag,output,lambda] = linprog(f,A,b,Aeq,beq,lb)
结果如下:
- 这里可设在甲机床上加工工件1、2 和 3 的数量分别为 $x_1、x_2、x_3$,在乙机床上加工工件1、2 和 3 的数量分别为 $x_4、x_5、x_6$,根据 3 种工种的数量限制,则有:$x_1+x_4 = 400(对工件 1) ,x_2+x_5 = 600(对工件 2),x_3+x_6=500(对工件 3)$,根据题意:
在甲机床上加工 500 个工件 2,在乙机床上加工 400 个工件 1、加工 100 个工件 2、加工 500 个工件 3,可在满足条件的情况下使总加工费用最小,最小费用为 14100 元。
5. 厂址选择问题
- A、B、C 三地,每地都出产一定数量的产品,也消耗一定数量的原料(如表所示),已知制成每吨产品需 3 吨原料,各地之间的距离为:A-B,150km;A-C,100km,B-C,200km。假定每万吨原料运输 1lm 的运价是 5000 元,每万吨产品运输 1lm 的运价是 6000 元。由于地区条件的差异,在不同地点设厂的生产费用也不同。问究竟在哪些地方设厂,规模多大,才能使总费用最小?另外,由于其他条件限制,在 B 处建厂的规模(生产的产品数量)不能超过 6 万吨
- 这里可令 $x_{ij}$ 为由 i 地运到 j 地的原料数量(万吨),$y_{ij}$ 为由 i 地运往 j 地的产品数量(万吨),i,j = 1,2,3(分别对应A、B、C三地),根据题意:
clc
clear
f = [;;;;;;;;;;;];
A = [ - -
- -
- -
];
b = [;;;];
Aeq = [
];
beq = [;];
lb = zeros(,);
[x,fval,exitflag,output,lambda] = linprog(f,A,b,Aeq,beq,lb);可见要使总费用最小,A、B、C 三地的建厂规模分别为 6 万吨、5.667 万吨和 6.333 万吨,最小总费用为 2.9733e+03 万元
- 这里可令 $x_{ij}$ 为由 i 地运到 j 地的原料数量(万吨),$y_{ij}$ 为由 i 地运往 j 地的产品数量(万吨),i,j = 1,2,3(分别对应A、B、C三地),根据题意:
6. 确定职工编制问题
- 某工厂每日 8小时的产量不低于 1800 件。为了进行质量控制,计划聘请两个不同水平的检验员。一级检验员的速度为 25件/小时,正确率 98%,计时工资 4元/小时,二级检验员的速度为 15件/小时,正确率 95%,计时工资 3元/小时,检验员每错一次,工厂要损失 2 元。现有可供厂方聘请的检验员人数为一级 7人和二级 8人。为使总检验费用最省,该工厂应聘请一级、二级检验员各多少名?
- 可设需要一级和二级检验员的人数分别为 $x_1$ 和 $x_2$ 名,根据题意:
clc
clear
f = [;];
A = [ -5 -];
b = [;;-];
lb = zeros(,);
[x,fval,exitflag,output,lambda] = linprog(f,A,b,[],[],lb);
可见,招聘一级检验员 7名,二级检验员 3名可使总检验费用最少,约为400.00元
7. 生产计划的最优化问题
- 某工厂生产 A 和 B 两种产品,它们需要经过 3 种设备的加工,其加工如表所示,设备一、二和三每天可使用的时间分别不超过 11、9 和 12小时。产品 A 和 B 的利润随市场的需求有所波动,如果预测未来某个时期内 A 和 B 的利润分别为 5000元/吨和 3000元/吨,问在那个时期内,每天应生产A、B各多少吨,才能使工厂获利最大?
- 这里可设每天应安排生产 A 和 B 分别为 $x_1$ 和 $x_2$ 吨,根据题意:
clc
clear
f = [-;-];
A = [ ];
b = [;;];
lb = zeros(,);
[x,fval,exitflag,output,lambda] = linprog(f,A,b,[],[],lb)每天生产 A 产品 1.80吨、B产品 0 吨可使工厂获得最大利益 9000元/吨。
- 这里可设每天应安排生产 A 和 B 分别为 $x_1$ 和 $x_2$ 吨,根据题意:
MATLAB 线性规划实例应用的更多相关文章
- PID各环节的意义和功能,自带PID的matlab编程实例
这是PID的标准形式包括比例/积分/微分三部分,e为偏差 下面我们分析三个环节的作用,设:当前系统状态A,目标状态B, e=B-A,初始状态e>0 (以下是个人的理解,欢迎读者评论) 1 比例环 ...
- Matlab 绘图实例
概要 每次用 Matlab 绘图都要搜一堆资料设置一些参数,本次将绘图中的一些参数设置实例展示在这里,以备不时之需.暂包括折线图,面积图. 折线图实例 下图是效果图: 图 1:折线图效果图 ...
- 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——线性规划
@ 目录 前言 一.基本概念 二.matlab实现 1.常用函数 2.常见变形 参考书目 前言 线性规划是数学规划中的一个重要分支,常用于解决如何利用现有资源来安排生产,以取得最大经济效益的问题.本文 ...
- [zz]求一维序列的信息熵(香浓熵)的matlab程序实例
对于一个二维信号,比如灰度图像,灰度值的范围是0-255,因此只要根据像素灰度值(0-255)出现的概率,就可以计算出信息熵. 但是,对于一个一维信号,比如说心电信号,数据值的范围并不是确定的, ...
- Matlab编程实例(1) 移动平均
MATLAB数字信号处理作业,把自己写的程序发上来..欢迎交流~ QQ 五幺九七九零六四 首先是任意点移动平均: 主程序:mov_average_main.m (运行) 函数:mov_averag ...
- Python学习笔记-PuLP库(3)线性规划实例
本节以一个实际数学建模案例,讲解 PuLP 求解线性规划问题的建模与编程. 1.问题描述 某厂生产甲乙两种饮料,每百箱甲饮料需用原料6千克.工人10名,获利10万元:每百箱乙饮料需用原料5千克.工人2 ...
- Matlab编程实例(4) 相位角与相关系数曲线
%相位角与相关系数曲线 close all; clear all; Samp1=200; %设置信号的采样精度 Samp2=200; %设置相位角p分割精度 A=10;%信号幅值 w=1;%信号角 ...
随机推荐
- C# vb .net图像合成-合成富文本
在.net中,如何简单快捷地实现图像合成呢,比如合成文字,合成艺术字,多张图片叠加合成等等?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码 ...
- Vert.x 异步访问数据库 MySQL
Vert.x提供异步访问数据库的API,数据库操作是一个耗时操作,使用传统的同步模型,容易阻塞线程,导致整体性能下降,因此我们对于数据库操作,需要使用Vert.x提供的异步API. Vert.x提供的 ...
- Vue v-bind与v-model的区别
v-bind 缩写 : 动态地绑定一个或多个特性,或一个组件 prop 到表达式. 官网举例 <!-- 绑定一个属性 --> <img v-bind:src=" ...
- 【转载】C#中List集合使用LastIndexOf判断元素最后一次出现的索引位置
在C#的List集合操作中,有时候需要判断元素对象在List集合中第一次出现的索引位置信息,此时需要使用到List集合的IndexOf方法来判断,如果元素存在List集合中,则IndexOf方法返回所 ...
- 溢出处理、盒子模型、背景图片、float(浮动)
一.overflow:溢出内容的处理 overflow:hidden; 溢出内容隐藏(在父元素内使用,可以清除子元素浮动对父元素的影响) overflow:auto; 自动滚动(有溢出 ...
- 英语Bisynes商务
英语bisynes商务概念的提出是改革的产物,有一个演变的过程:贸易部--商业部.外贸部--内贸部--内贸局--商务部.是内外贸一体化的概念. 中文名:商务 外文名:Business,Bisynes商 ...
- EF 批量增删改 EntityFramework.Extensions
EntityFramework.Extensions 1.官方网站 http://entityframework-extensions.net/ 2 破解版 Z.EntityFramework.E ...
- php审核流程详解
在公司运营中,人员的变动及请假.离职情况都很普遍,这就需要有一个管理系统来系统的做一套流程,可以提升工作效率节省时间.在流程中需要有顺序的进行提交审核,接下来我们做一套简单的新建流程以及提交审核的系统 ...
- 【HCIA Gauss】学习汇总-数据库管理(事务 权限 审计 OBDC JDBC)-6
事务控制事务提交 commit事务回滚 rollback savepoint 用于事务设置保存点 ----> savepoint s1 / savepoint s2 rollback to sa ...
- 21.centos7基础学习与积累-007-远程连接
从头开始积累centos7系统运用 大牛博客:https://blog.51cto.com/yangrong/p5 IP地址: 互联网上的计算机 都会有一个唯一的32位的地址,ip地址,我们访问服务器 ...