matlab线性规划动态演示代码及结果

matlab线性规划动态演示代码及结果
matlab线性规划动态演示代码及结果

昆明理工大学理学院

信息与计算科学专业操作性实验报告

年级: 09级姓名:陈龙飞学号: 200911101111 指导教师:范敏

实验课程名称:运筹学开课实验室:理216 实验成绩:

学风(5) 观察能力(15) 操作能力(30) 调试能力(50) 其它总分

实验内容:

1.实验/作业题目:

2.实验/作业课时:2课时

3.实验过程(包括实验环境、实验内容的描述、完成实验要求的知识或技能):

实验环境:多媒体计算机一台

实验内容:

4.程序结构(程序中的函数调用关系图)

5.算法描述、流程图或操作步骤:

6.实验数据和实验结果(用屏幕图形表示,可另加附页):

c = [2 1];

A = [3 5;6 2;];

B = [15 24];

Aeq = [];

beq = [];

vlb = [0 0];

vub = [inf,inf];

[x,fval] = linprog(-c,A,B,Aeq,beq,vlb,vub)

fig1 = figure('menubar','none','color',[0.3 0.3 0.3]);

fill([0 0 5 5],[-4 12 12 -4],[1 5 2 1])

hold on

x1 = linspace(0,5,1000);

y1 = -3/5*x1+3;

y2 = -3*x1+12;

plot(x1,y1,'k','linewidth',2)

hold on

plot(x1,y2,'k','linewidth',2)

hold on

y3 = -2*x1+1.40;

fill([0 0 4 3.75],[3 0 0 0.75],[0 1 5 2])

hold on

%plot(x1,y3,'m','linewidth',2)

text(4.5,-1,'\rightarrow

y=-2*x','color','b','backgroundcolor','y','fontweight','bold','font size',12)

%pasu(1)

a01=line([0;3],[4;-2],'color','m','linestyle','-','linewidth',2);

t0 = 0;

dt1 = 0.01;

yzhi = 0.75;

%xzhi = 1.40;

xzhi = 1.407;

while t0

t0 = t0+dt1;

set(a01,'xdata',[0+t0;3+t0],'ydata',[4+t0;-2+t0]);

drawnow

end

pause(1)

text(3.70,2.75,'\downarrow 最优点(3.75,0.75)','color','b','backgroundcolor','y','fontweight','bold')

text(3.70,1.75,'\downarrow

max=8.25','color','b','backgroundcolor','y','fontweight','bold') plot(3.75,0.75,'color','r','linestyle','.','markersize',30);

title('线性方程求最优解','color','b','backgroundcolor','y','fontweight','bold','fontsize', 12)

xlabel('x1','color','b','backgroundcolor','y','fontweight','bold',' fontsize',12)

ylabel('x2','color','b','backgroundcolor','y','fontweight','bold',' fontsize',12)

结果:

动态图形结果:

7.改进建议:

评分标准学风--报告格式规范,文字清晰观察能力--正确描述和理解需要操作的问题操作能力--正确输入程序,熟悉编程环境调试能力--熟练使用调试功能解决程序错误

运用Matlab进行线性规划求解(实例)

线性规划 线性规划是处理线性目标函数和线性约束的一种较为成熟的方法,目前已经广泛应用于军事、经济、工业、农业、教育、商业和社会科学等许多方面。 8.2.1 基本数学原理 线性规划问题的标准形式是: ????? ??????≥=+++=+++=++++++=0,,,min 21221122222121112 121112211n m n mn m m n n n n n n x x x b x a x a x a b x a x a x a b x a x a x a x c x c x c z 或 ???? ?????=≥===∑∑==n j x m i b x a x c z j n j i j ij n j j j ,,2,1,0,,2,1,min 1 1 写成矩阵形式为: ?? ???≥==O X b AX CX z min 线性规划的标准形式要求使目标函数最小化,约束条件取等式,变量b 非负。不符合这几个条件的线性模型可以转化成标准形式。 MATLAB 采用投影法求解线性规划问题,该方法是单纯形法的变种。 8.2.2 有关函数介绍 在MATLAB 工具箱中,可用linprog 函数求解线性规划问题。 linprog 函数的调用格式如下: ●x=linprog(f,A,b):求解问题minf'*x ,约束条件为A*x<=b 。 ●x=linprog(f,A,b,Aeq,beq):求解上面的问题,但增加等式约束,即Aeq*x=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,exitflag,output,lambda]=linprog(…):将解x 处的拉格朗日乘子返回到lambda 参数中。

matlab线性规划练习

第11次课 (1) 某机床厂生产甲、乙两种机床,每台销售后的利润分别为 4000 元与 3000 元 。 生产甲机床需用A 、B 机器加工,加工时间分别为每台 2 小时和 1 小时; 生产乙机床 需用A 、B 、C 三种机器加工,加工时间为每台各一小时。 若每天可用于加工的机器 时数分别为A 机器 10 小时、 B 机器 8 小时和 C 机器 7 小时,问该厂应生产甲、乙机床 各 几台,才能使总利润最大? (2)有两种农作物(大米和小麦),可用轮船和飞机两种方式运输,每天每艘轮船和每架飞机运输效果 如下:在一天内如何安排才能合理完成运输2000吨小麦和1500吨大米的任务? (3)设422+-=x y z ,式中变量y x ,满足条件?????≥-≤≤≤≤12201 0x y y x ,求z 的最小值和最大值. (4)某家俱公司生产甲、乙两种型号的 组合柜,每种柜的制造白坯时间、油漆时间及有关数据如下: 问该公司如何安排甲、乙二种柜的日产量可获最大利润,并且最大利润是多少? (5) 某运输公司接受了向抗洪抢险地区每天至少送180t 支援物资的任务.该公司有8辆载重为6t 的A 型 卡车与4辆载重为10t 的B 型卡车,有10名驾驶员;每辆卡车每天往返的次数为A 型卡车4次,B 型 卡车3次;每辆卡车每天往返的成本费A 型车为320元,B 型车为504元.请你们为该公司安排一下应该如何调配车辆,才能使公司所花的成本费最低?若只调配A 型或B 型卡车,所花的成本费分别是多少?

(6)一家玩具公司制造三种桌上高尔夫玩具,每一种要求不同的制造技术。高级的一种需要17小时加工装配劳动力,8小时检验,每台利润300元。中级的需要10小时劳动力,4小时检验,利润200元。低级的需要2小时劳动力,2小时检验,利润100元。可供利用的加工劳动力为1000小时,检验500小时。其次,有市场预测表明,对高级的需求量不超过50台,中级的不超过80台,低级的不超过150台。 问制造商如何决策才能得出使总利润为最大的最优生产计划。 (7)(任务分配问题)某车间有甲、乙两台机床,可用于加工三种工件。 假定这两台车床的可用台时数分别为800和900,三种工件的数量分别为400、600和500,且已知用三种不同车床加工单位数量不同工件所需的台时数和加工费用如下表。问怎样分配车床的加工任务,才能既满足加工工件的要求,又使加工费用最低 (8)

Matlab在线性规划中的使用

⒈ 优化问题及其数学模型 假设有一个问题,它有几个因素来决定,当这些因素处于某个状态时,可以使问题得到我们最想要的结果。优化问题就是寻求这个状态的过程。例如: 某工厂生产A ,B 两种产品,所用原料均为甲、乙、丙三种;生产一件产品所需原料和 问题:在该厂只有库存原料甲380单位,原料乙300单位,原料丙220单位的情况下如何安排A ,B 两种产品的生产数量可以获得最大的利润? 设生产A 中产品1x 件,生产B 中产品2x 件,z 为所获得的利润,于是有关系式: 我们称它为目标函数。生产的条件我们可以表示为: 我们把上面的不等式称为约束条件。 产品A 的产量1x 和B 的产量2x 是优化问题的变量。在满足约束条件的前提下使目标函数得到最优的值成为最优解。根据以上定义,也可以说优化运算是通过某种计算寻求最优解的过程。 以上这个用等式或不等式来表达我们要解决的问题的过程就是优化问题的建模过程。我们平时遇到的问题常常不是上面的这几个数学表达式就能表达得清清楚楚的,但是建立像上面类似的数学模型却是优化求解的第一步。优化问题常常表现为在多约束条件下求某一函数的极值问题,例如上面的这个例子。 Matlab 有一个优化工具箱,可以帮助我们方便的解决好这类问题。 ⒉ 优化工具箱 Matlab 的优化工具箱有一些对普通非线性函数求解最小化或最大化(求极值)的函数组成,另外还包括一些解决诸如线性规划等标准矩阵问题的函数。所有的优化函数都是用Matlab 语言编写的m 文件,我们可以通过在命令窗口里输入type function_name 来查看这些函数。 优化工具箱的优化功能包括: ⑴ 求无约束非线性最小化; ⑵ 求有约束非线性最小化; ⑶ 二次和线性规划问题; ⑷ 非线性最小二乘法和曲线拟合问题; ⑸ 非线性等式的求解; ⑹ 约束线性最小二乘法; ⑺ 稀疏和结构化大尺度问题。 工具箱中求非线性函数极小值的命令函数如下表所示:

一元线性规划matlab算例及解释

一元线性回归: x 含碳量 y合金强度建立y与x函数关系并检验可信度,检查数据有无异常点 clc close all x1=[0.1:0.01:0.18,0.20,0.21,0.23]'; x=[ones(size(x1)),x1]; y=[42 41.5 45 45.5 45 47.5 49 55 50 55 55.5 60.5]'; % 作数据的散点图 figure(1) plot(x1,y,'*') %回归分析 [b,bint,r,rint,stats]=regress(y,x) %alpha 缺省表示取值为0.05 %做残差图 figure(2) rcoplot(r,rint); %预测与回归图 figure(3) z=b(1)+b(2)*x1; plot(x1,y,'*',x1,z,'k-') legend('原始数据','回归曲线') 运行结果如下: b = 27.0269 140.6194 bint = 22.3226 31.7313 111.7842 169.4546 r = 0.9111 -0.9951

1.0987 0.1925 -1.7136 -0.6198 -0.5260 4.0678 -2.3384 -0.1508 -1.0570 1.1306 rint = -2.5705 4.3928 -4.6033 2.6131 -2.6026 4.8001 -3.6754 4.0605 -5.4276 2.0003 -4.5502 3.3105 -4.4717 3.4196 1.5241 6.6114 -5.8418 1.1649 -3.9067 3.6051 -4.6124 2.4984 -2.0746 4.3358 stats = 0.9219 118.0670 0.0000 3.1095 α= 27.0269 β= 140.6194 即y=α+βx

运用Matlab进行线性规划求解(实例)

8.2 线性规划 线性规划是处理线性目标函数和线性约束的一种较为成熟的方法,目前已经广泛应用于军事、经济、工业、农业、教育、商业和社会科学等许多方面。 8.2.1 基本数学原理 线性规划问题的标准形式是: ????? ??????≥=+++=+++=++++++=0,,,min 21221122222121112 121112211n m n mn m m n n n n n n x x x b x a x a x a b x a x a x a b x a x a x a x c x c x c z 或 ???? ?????=≥===∑∑==n j x m i b x a x c z j n j i j ij n j j j ,,2,1,0,,2,1,min 1 1 写成矩阵形式为: ?? ???≥==O X b AX CX z min 线性规划的标准形式要求使目标函数最小化,约束条件取等式,变量b 非负。不符合这几个条件的线性模型可以转化成标准形式。 MATLAB 采用投影法求解线性规划问题,该方法是单纯形法的变种。 8.2.2 有关函数介绍 在MA TLAB 工具箱中,可用linprog 函数求解线性规划问题。 linprog 函数的调用格式如下: ●x=linprog(f,A,b):求解问题minf'*x ,约束条件为A*x<=b 。 ●x=linprog(f,A,b,Aeq,beq):求解上面的问题,但增加等式约束,即Aeq*x=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]=li nprog(…):返回exitflag 值,描述函数计算的退出条件。 ●[x,lambda,exitflag,output]=linprog(…):返回包含优化信息的输出参数output 。 ●[x,fval,exitflag,output,lambda]=linprog(…):将解x 处的拉格朗日乘子返回到lambda 参数中。

用matlab解决线性规划问题的几道题复习进程

一、用MATLAB 求解线性规划问题 (1) 编写的M 文件为: f=[-1;-1] A=[1 -2;1 2] b=[4,8] [x,feval]=linprog(f,A,b,[],[],zeros(2,1)) 所求解为:x 1=6,x 2=1;min f=-7 (2) 编写的M 文件为: f=[-4;-3] A=[3 4;3 3;4 2] b=[12;10;8] [x,feval]=linprog(f,A,b,[],[],zeros(1,2)) 所求得的解为:x 1=0.8,x 2=2.4;max f=10.4 (3) (4) 编写的M 文件为: f=[-1;-3;3] Aeq=[1 1 2;-1 2 1] beq=[4;4] [x,feval]=linprog(f,[],[],Aeq,beq,zeros(3,1)) 所求得的结果为:x 1=4/3,x 2=8/3,x 3=0;max f=28/3。 12121212min 24s.t.28,0f x x x x x x x x ì=--????-?镲í?+????3??121212121243max 3412..3310428,0f x x x x s t x x x x x x ì=+????+????+?í???+????3?? 12312312313min 3s.t.211423210(1,2,3)j f x x x x x x x x x x x x j =--ì????-+?????-++?í??-+=????????123123123max 3s.t.24240(1,2,3) j f x x x x x x x x x x j =+-ì????++=??í-++=????????min s.t.1f x y z x y ì?=++???+?í

matlab线性规划详解

用MATLAB 优化工具箱解线性规划 命令:x=linprog (c ,A ,b ) 2、模型: beq AeqX b AX ..min =≤=t s cX z 命令:x=linprog (c ,A ,b ,Aeq,beq ) 注意:若没有不等式:b AX ≤存在,则令A=[ ],b=[ ]. 若没有等式约束, 则令Aeq=[ ], beq=[ ]. 3、模型: VUB X VLB beq AeqX b AX ..min ≤≤=≤=t s cX z 命令:[1] x=linprog (c ,A ,b ,Aeq,beq, VLB ,VUB ) [2] x=linprog (c ,A ,b ,Aeq,beq, VLB ,VUB, X0) 注意:[1] 若没有等式约束, 则令Aeq=[ ], beq=[ ]. [2]其中X0表示初始点 4、命令:[x,fval]=linprog(…) 返回最优解x及x处的目标函数值fval. 例1 max 6543216.064.072.032.028.04.0x x x x x x z +++++= 85003.003.003.001.001.001.0..654321≤+++++x x x x x x t s 70005.002.041≤+x x 10005.002.052≤+x x 90008.003.063≤+x x 6,2,10 =≥j x j 解 编写M 文件小xxgh1.m 如下: c=[-0.4 -0.28 -0.32 -0.72 -0.64 -0.6]; A=[0.01 0.01 0.01 0.03 0.03 0.03;0.02 0 0 0.05 0 0;0 0.02 0 0 0.05 0;0 0 0.03 0 0 0.08]; b=[850;700;100;900]; Aeq=[]; beq=[]; vlb=[0;0;0;0;0;0]; vub=[]; [x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub) min z=cX b AX t s ≤..1、模型:

线性规划与MATLAB实现

例6-1用M函数文件形式求解第1章例1-2生产计划分配问题 A=[9 4 1 0 0;3 10 0 1 0;4 5 0 0 1]; c=[-7 -14 0 0 0]; b=[360;300 ;200]; [x,mf]=SimpleMthd(A,c,b,[3 4 5]) 单纯形法函数文件SimpleMthd如下 function [x,minf] = SimpleMthd(A,c,b,baseVector) %约束矩阵:A; %目标函数系数向量:c; %约束右端向量:b; %初始基向量:baseVector; %目标函数取最小值时的自变量值:x; %目标函数的最小值:minf sz = size(A); nVia = sz(2); n = sz(1); xx = 1:nVia; nobase = zeros(1,1); m = 1; for i=1:nVia %获取非基本变量下标if(isempty(find(baseVector == xx(i),1))) nobase(m) = i; m = m + 1; else ; end end bCon = 1; M = 0; while bCon nB = A(:,nobase); %非基本变量矩阵 ncb = c(nobase); %非基本变量系数 B = A(:,baseVector); %基本变量矩阵 cb = c(baseVector); %基本变量系数 xb = inv(B)*b; f = cb*xb; w = cb*inv(B); for i=1:length(nobase) sigma(i) = w*nB(:,i)-ncb(i); end [maxs,ind] = max(sigma); %ind为进基本变量下标 if maxs <= 0 %最大值小于零,输出最优解minf = cb*xb; vr = find(c~=0 ,1,'last');

相关文档
最新文档