资源描述:
《《优化问题实例解析》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实例解析【例11-1】有两种液体产品P1和P2,每件产品P1在第一车间的处理时间为1小时,在第二车间的处理时间为1.25小时;每件产品P2在第一车间的处理时间为1小时,在第二车间的处理时间为0.75小时。每个车间每月有200小时的时间可以利用,而且P2产品的市场需求量最大为150件,假定P1产品和P2产品的利润每件分别为4美元和5美元,问P1产品和P2产品的生产量分别为多少时生产商所获得的利润最大。解:设P1产品和P2产品的生产量分别为x1和x2时生产商所获得的利润最大,则目标函数和约束条件可以写为:编写如下程序
2、:f=[-4;-5];A=[1,1;1.25,0.75;0,1];b=[200;200;150];lb=[00];[x,fval,exitflag]=linprog(f,A,b,[],[],lb)%线性规划问题求解为更直观地理解线性规划的几何意义,这里又编写了LP_demo.m函数文件。运行结果:x=50.0000150.0000fval=-950.0000exitflag=1【例11-3】计算下面函数在上的极值。解:首先绘制该二元函数在z=0上下两部分的曲面图,下面编写求极值的主函数,这里由于不知道初始点,所以
3、借助ginput()函数在等高线图形上取点作为初始点的横纵坐标,得到的结果如图:peaks_jizhi.m【例11-4】Banana函数优化。解:首先绘制出Banana函数的曲面图。下面进行优化求解,为获得更好的效果,这里采用动态图形来显示每一步迭代的过程,这里首先介绍一个专门绘制“Banana”函数优化求解迭代点的函数bandemoutfcn()。调用函数fminsearch()求解上述优化问题,在原绘图程序的基础上输入如下代码:plot3(-1.9,2,267.62,'ko','markersize',12,
4、'linewidth',1,'erasemode','none')text(-1.9,2.3,267.62,'fontname{隶书}fontsize{16}开始','color',[0,0,0])plot3(1,1,0,'ko','markersize',12,'linewidth',1,'erasemode','none')text(1,1.3,100,'fontname{隶书}fontsize{16}结束','color',[0,0,0])set(gcf,'Color','w')x0=[-1.9,2
5、];f='100*(x(2)-x(1)^2)^2+(1-x(1))^2';%利用字符串定义函数表达式OPTIONS=optimset('OutputFcn',@bandemoutfcn);%设置优化控制参数'OutputFcn'[x,fval,exitflag,output]=fminsearch(f,x0,OPTIONS)example_11_4_1.m下面再利用fminunc()函数求解上述优化问题,编写如下程序代码:x0=[-1.9,2];OPTIONS=optimset('LargeScale','off
6、','OutputFcn',@bandemoutfcn);%设置优化参数grad='[100*(4*x(1)^3-4*x(1)*x(2))+2*x(1)-2;100*(2*x(2)-2*x(1)^2)]';%梯度表达式描述f='100*(x(2)-x(1)^2)^2+(1-x(1))^2';%函数表达式OPTIONS=optimset(OPTIONS,'HessUpdate','bfgs','gradobj','on','MaxFunEvals',200,'InitialHessType','scaled-ide
7、ntity','LineSearchType','quadcubic');%更新优化参数[x,fval,exitflag,output]=fminunc({f,grad},x0,OPTIONS)%优化问题求解example_11_4_2.m【例11-5】求解humps()函数在区间[0,1]内的极小值。解:为显示该优化问题的每一步的迭代过程,先编写优化方法的输出函数myoutput.m并在优化参数中进行设置。functionstop=myoutput(x,optimvalues,state);%优化方法的输出函数
8、history=[];stop=false;ifstate=='iter'history=[history;x];endfplot(@humps,[0,2])holdonplot(history,humps(history),'r.',...'MarkerSize',14)%绘制迭代点pause(1)%暂停1秒再编写如下主程序:options=optimset('Outp