实验07最优化方法建模及实现实验目的实验内容3、基于最优化方法建模及实现、论文写作。1、了解最优化问题的基本内容。2、用数学软件包matlab求解(非)线性规划问题。4、实验题目:钢管的订购与运输。1、基础知识、例子。3、建模案例:投资的收益与风险2、掌握线性规划及非线性规划建模及其MATLAB实现。最优化问题优化问题,一般是指用“最好”的方式,使用或分配有限的资源,即劳动力、原材料、机器、资金等,使得费用最小或利润最大.建立优化问题的数学模型1)确定问题的决策变量2)构造模型的目标函数和允许取值的范围,常用一组不等式来表示.T1min(max)(),(,,)s.t.()0,1,2,,nizfxxxxgxim或(1)(2)由(1)、(2)组成的模型属于约束优化,若只有(1)式就是无约束优化,f(x)称为目标函数,gi(x)称为约束条件若目标函数f(x)和约束条件g(x)都是线性函数,则称该模型是线性规划.线性规划模型例1、生产炊事用具需要两种资源-劳动力和原材料,某公司制定生产计划,生产三种不同的产品,生产管理部门提供的数据如下ABC劳动力(小时/件)736原材料(千克/件)445利润(元/件)423每天供应原材料200kg,每天可使用的劳动力为150h.建立线性规划模型,使总收益最大,并求各种产品的日产量.解第一步,确定决策变量.用分别表示A,B,C三种产品的日产量第二步,约束条件原材料:劳动力:第三步,确定目标函数AxBxCx445200ABCxxx736150ABCxxx423ABCZxxx例2一家广告公司想在电视、广播上做广告,其目的是尽可能多的招来顾客,下面是调查结果:电视无线电广播杂志白天最佳时间一次广告费用(千元)40753015受每次广告影响的顾客数(千人)400900500200受每次广告影响的女顾客数(千人)300400200100这家公司希望广告费用不超过800(千元)还要求:1)至少要有200万妇女收看广告;2)电视广告费用不超过500(千元)3)电视广告白天至少播出3次,最佳时间至少播出2次;4)通过广播、杂志做的广告要重复5到10次.123412341234121234max400900500200407530158003004002001002000..40755003,2,510,510Zxxxxxxxxxxxxstxxxxxx令分别白天,最佳电视、广播、杂志广告次数1234,,xxxx,例3:任务分配问题:某车间有甲、乙两台机床,可用于加工三种工件。假定这两台车床的可用台时数分别为800和900,三种工件的数量分别为400、600和500,且已知用三种不同车床加工单位数量不同工件所需的台时数和加工费用如下表。问怎样分配车床的加工任务,才能既满足加工工件的要求,又使加工费用最低?单位工件所需加工台时数单位工件的加工费用车床类型工件1工件2工件3工件1工件2工件3可用台时数甲0.41.11.013910800乙0.51.21.311128900解设在甲车床上加工工件1、2、3的数量分别为x1、x2、x3,在乙车床上加工工件1、2、3的数量分别为x4、x5、x6。可建立以下线性规划模型:6543218121110913minxxxxxxz6,,2,1,09003.12.15.08001.14.0500600400x..654321635241ixxxxxxxxxxxxtsi解答例4:某厂每日8小时的产量不低于1800件。为了进行质量控制,计划聘请两种不同水平的检验员。一级检验员的标准为:速度25件/小时,正确率98%,计时工资4元/小时;二级检验员的标准为:速度15小时/件,正确率95%,计时工资3元/小时。检验员每错检一次,工厂要损失2元。为使总检验费用最省,该工厂应聘一级、二级检验员各几名?解设需要一级和二级检验员的人数分别为x1、x2人,则应付检验员的工资为:212124323848xxxx因检验员错检而造成的损失为:21211282)%5158%2258(xxxx故目标函数为:2121213640)128()2432(minxxxxxxz约束条件为:0,0180015818002581800158258212121xxxxxx线性规划模型:213640minxxz0,01594535..212121xxxxxxts解答返回线性规划模型的一般形式.,...,,,.,...,,,..minnixnibxatsxcuinkikikniii2102111目标函数和所有的约束条件都是决策变量的线性函数。min..ucxAxbstvlbxvub矩阵形式:实际问题中的优化模型mixgtsxxxxfzMaxMiniTn,2,1,0)(..),(),()(1或x~决策变量f(x)~目标函数gi(x)0~约束条件数学规划线性规划(LP)二次规划(QP)非线性规划(NLP)纯整数规划(PIP)混合整数规划(MIP)整数规划(IP)0-1整数规划一般整数规划连续规划优化模型的分类线性规划问题的求解在理论上有单纯形法,在实际建模中常用以下解法:1.图解法2.LINGO软件包;3.Excel中的规划求解;4.MATLAB软件包.minz=cXbAXts..1、模型:命令:x=linprog(c,A,b)2、模型:minz=cXbAXts..beqXAeq命令:x=linprog(c,A,b,Aeq,beq)或x=linprog(c,A,b,Aeq,beq,x0)或[x,fval]=linprog(c,A,b,Aeq,beq)注意:若没有不等式:存在,则令A=[],b=[].bAX用MATLAB优化工具箱解线性linear规划3、模型:minz=cXbAXts..beqXAeqVLB≤X≤VUB命令:[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表示初始点beqXAeq4、命令:[x,fval]=linprog(…)返回最优解x及x处的目标函数值fval.321436minxxxz1231231232380120..3005020xxxxxxstxxx解:编写M文件xxgh1.m如下:c=[634];A=[1,2,-3;010];b=[80;50];Aeq=[111];beq=[120];vlb=[30,0,20];vub=[];[x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub)ToMatlab(xxgh1)123123123123min(634)1238001050..11112030020xzxxxxxxstxxxxx例5解编写M文件xxgh2.m如下:c=[-0.4-0.28-0.32-0.72-0.64-0.6];A=[0.010.010.010.030.030.03;0.02000.0500;00.02000.050;000.03000.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)ToMatlab(xxgh2)max6543216.064.072.032.028.04.0xxxxxxz85003.003.003.001.001.001.0..654321xxxxxxts70005.002.041xx10005.002.052xx90008.003.063xx6,2,10jxj例6S.t.Xz8121110913min9008003.12.15.000000011.14.0X500600400100100010010001001X,0654321xxxxxxX改写为:问题例3的解答编写M文件xxgh3.m如下:f=[1391011128];A=[0.41.110000000.51.21.3];b=[800;900];Aeq=[100100010010001001];beq=[400600500];vlb=zeros(6,1);vub=[];[x,fval]=linprog(f,A,b,Aeq,beq,vlb,vub)ToMatlab(xxgh3)x=0.0000600.00000.0000400.00000.0000500.0000fval=1.3800e+004计算结果:即在甲机床上加工600个工件2,在乙机床上加工400个工件1、500个工件3,可在满足条件的情况下使总加工费最小为13800。问题213640minxxzs.t.)45(3521xx改写为:例4的解答编写M文件xxgh4.m如下:c=[40;36];A=[-5-3];b=[-45];Aeq=[];beq=[];vlb=zeros(2,1);vub=[9;15];%调用linprog函数:[x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub)ToMatlab(xxgh4)结果为:x=9.00000.0000fval=360即只需聘用9个一级检验员。注:本问题应还有一个约束条件:x1、x2取整数。故它是一个整数线性规划问题。这里把它当成一个线性规划来解,求得其最优解刚好是整数:x1=9,x2=0,故它就是该整数规划的最优解。若用线性规划解法求得的最优解不是整数,将其取整后不一定是相应整数规划的最优解,这样的整数规划应用专门的方法求解。返回1)首先建立M文件fun.m,定义目标函数F(X):functionf=fun(X);f=F(X);标准型为:其中X为n维变元向量,G(X)与Ceq(X)均为非线性函数组成的向量,其它变量的含义与线性规划、二次规划中相同.用Matlab求解上述问题,基本步骤分三步:2)若约束条件中有非线性约束:G(X)0或Ceq(X)=0,则建立M文件nonlcon.m定义函数G(X)与Ceq(X):function[G,Ceq]=nonlcon(X)G=...Ceq=...二、非线性规划问题及其Matlab()..()0()0MinFXAXbAeqXbeqstGXCeqXVLBXVUB3)建立主程序.非线性规划求解的函数是fmincon,命令的基本格式如下:(1)x=fmincon(‘fun’,X0,A,b)(2)x=fmincon(‘fun’,X0,A,b,Aeq,beq)(3)x=fmincon(‘fun’,X0,A,b,Aeq,beq,VLB,VUB)(4)x=fmincon(‘fun’,X0,A,b,Aeq,beq,VLB,VUB,’nonlcon’)(5)x=fmincon(‘fun’,X0,A,b,Aeq,beq,VLB,VUB,’nonlcon’,options)(6)[x,fval]=fmincon(...)(7)[x,fval,exitflag]=fmincon(...)(8)[x,fval,exitflag,output]=fm