大学数学实验ExperimentsinMathematics实验8约束优化《数学建模与数学实验》---李焕荣实验82023/3/42优化问题三要素:决策变量;目标函数;约束条件约束条件决策变量优化问题的一般形式njiDxljxgmixhtsxf,...,1,0)(,...,1,0)(..)(min当最优解在可行域边界上取得时不能用无约束优化方法求解目标函数实验8实验8约束优化的分类•线性规划(LP)目标和约束均为线性函数•非线性规划(NLP)目标或约束中存在非线性函数二次规划(QP)目标为二次函数、约束为线性•整数规划(IP)决策变量(部分)为整数整数线性规划(ILP)整数非线性规划(INLP)0-1规划整数决策变量只取0或1njiDxljxgmixhtsxf,...,1,0)(,...,1,0)(..)(min连续优化离散优化实验8实验82023/3/44本实验基本内容2.基本原理和算法3.MATLAB实现1.问题与模型NLPLPQP实验8实验81桶牛奶3千克A112小时8小时4千克A2或获利12元/千克获利8元/千克0.8千克B12小时,1.5元1千克获利22元/千克0.75千克B22小时,1.5元1千克获利16元/千克制订生产计划,使每天净利润最大•15元可增加1桶牛奶,应否投资?50桶牛奶,480小时至多100公斤A1•B1,B2的获利经常有10%的波动,对计划有无影响?实例1:奶制品生产销售计划•聘用临时工人增加劳动时间,工资最多每小时几元?实验8实验81桶牛奶3千克A112小时8小时4千克A2或获利12元/千克获利8元/千克0.8千克B12小时,1.5元1千克获利22元/千克0.75千克B22小时,1.5元1千克获利16元/千克出售x1千克A1,x2千克A2,x3千克B1,x4千克B2原料供应劳动时间加工能力决策变量目标函数利润约束条件非负约束0,61xxx5千克A1加工B1,x6千克A2加工B26543215.15.11622812xxxxxxzMax50436251xxxx48022)(2)(4656251xxxxxx10051xx附加约束5380x.x64750x.xLP实验8实验8求解线性规划(LP)的基本原理基本模型0,..,min)max(xbAxtsRxxczornTmnmnRbRARc,,•二维线性规划的图解法•一般线性规划的单纯形算法•一般线性规划的内点算法实验8实验8[x,fval,exitflag,output,lambda]=linprog(c,A1,b1,A2,b2,v1,v2,x0,opt)MATLAB求解LP212211,,..minvxvbxAbxAtsxczT输入:x0~初始解(缺省时为0)opt~MATLAB控制参数中间所缺参数项补[]输出:lambda~Lagrange乘子,维数等于约束个数,非零分量对应于起作用约束•lambda.ineqlin:对应A1x≤b1•lambda.eqlin:对应A2x=b2•lambda.lower:对应v1≤x•lambda.upper:对应x≤v2Exam0802.m实验8实验8MATLAB求解LPopt~MATLAB控制参数:三种算法选择•缺省时采用大规模算法(是一种内点算法);•当opt中“LargeScale”参数设置为“off”时,采用中规模算法,该模式下缺省的算法是二次规划的算法(一种有效集方法);•当opt中“LargeScale”参数设置为“off”,并且“Simplex”参数设置为“on”时,采用单纯形算法。只有有效集方法可以由用户提供初始解x0,其他两个算法则不需要(即使提供了也会被MATLAB忽略)。Exam0801.m[x,fval,exitflag,output,lambda]=linprog(c,A1,b1,A2,b2,v1,v2,x0,opt)实验8实验8c=[1282216-1.5-1.5];A1=[430043;210032;100010];b1=[600240100];A2=[0010-0.80;00010-0.75];b2=[00];v1=[000000];[x,z0,ef,out,lag]=linprog(-c,A1,b1,A2,b2,v1)lag.ineqlin,lag.eqlin实例1:奶制品生产销售计划6543215.15.11622812xxxxxxzMax50436251xxxx48022)(2)(4656251xxxxxx10051xx08.053xx075.064xx0654321x,x,x,x,x,x60034346521xxxx2402326521xxxxx=(0,168,19.2,0,24,0);z=-z0=1730.4;lag.ineqlin=(1.58;3.26;0.00);…实验8实验8•15元可增加1桶牛奶,应否投资?实例1:奶制品生产销售计划6543215.15.11622812xxxxxxzMax50436251xxxx48022)(2)(4656251xxxxxx10051xx5380x.x64750x.x0654321x,x,x,x,x,xx=(0,168,19.2,0,24,0);z=-z0=1730.4lag.ineqlin=(1.58;3.26;0.00);…60034346521xxxx601z1=1731.98z1-z=1731.98-1730.4=1.58z1=lag.ineqlin(1)z1*12=1.58*12=18.9615应该投资!“影子价格”实验8实验8实例1:奶制品生产销售计划•聘用临时工人增加劳动时间,工资最多每小时几元?6543215.15.11622812xxxxxxzMax50436251xxxx48022)(2)(4656251xxxxxx10051xx5380x.x64750x.x0654321x,x,x,x,x,xx=(0,168,19.2,0,24,0);z=-z0=1730.4lag.ineqlin=(1.58;3.26;0.00);…60034346521xxxx2402326521xxxxlag.ineqlin(2)=3.26,所以1小时劳动时间的影子价格应为3.26/2=1.63,即单位劳动时间增加的利润是1.63(元)实验8实验8•B1,B2的获利经常有10%的波动,对计划有无影响?实例1:奶制品生产销售计划6543215.15.11622812xxxxxxzMax50436251xxxx48022)(2)(4656251xxxxxx10051xx5380x.x64750x.x0654321x,x,x,x,x,xx=(0,168,19.2,0,24,0);z=-z0=1730.4lag.ineqlin=(1.58;3.26;0.00);若每公斤B1的获利下降10%,应将目标函数中x3的系数改为19.8,重新计算发现最优解和最优值均发生了变化若B2的获利向上波动10%,原计划也不再是最优的MATLAB没有给出这种敏感性分析的结果(LINDO/LINGO可以)实验8实验8实验目的1)掌握用MATLAB优化工具包解线性规划和非线性规划(包括二次规划)的方法;2)练习建立实际问题的线性规划和非线性规划模型。实验内容6布置实验内容实验8实验8