第1页共10页2010-2011学年一学期研究生课程考核(读书报告、研究报告)考核科目:现代设计理论与方法学生所在院(系):机电工程学院学生所在学科:车辆工程姓名:陈松学号:Y100201802题目:基于MATLAB的生产过程中最大利润问题的优化设计第2页共10页基于MATLAB的生产过程中最大利润问题的优化设计在工厂编制生产计划中,使产品的计划利润最大是通常的目标。可是,在生产过程中,总是有种种条件的限制,使得我们的生产成本增多,从而导致利润并没有达到理想值。为了解决如何在有约束条件下解决最大利润的问题,我们通常将这些有约束的最优化问题转化为无约束最优化问题。而通过MATLAB现成的优化工具箱,我们可以通过调用最佳优化函数求解,从而更好的计算出生产产品所获得最大利润。1.数学模型的建立建立数学模型,即用数学语言来描述最优化问题,模型中的数学关系式反映了最优化问题所要达到的目标和各种约束条件。而通过这些约束条件,我们能更好的制定新的生产计划,以便克服生产过程中的某些不利于生产的约束,从而更大的降低产品生产成本,使利润最大化。1.1设计变量的确定设计变量是指设计过程中可以进行调整和优选的独立参数,分为连续变量和离散变量。而本文主要用的是连续变量,设计变量一般表示为:式中,Xi表示生产产品的台数,而当我们确定了生产每台的利润后,我们就能知道Xi台的利润。1.2目标函数的确定已知某工厂能生产A、B、C三种产品,每月生产的数量分别为X1,X2,X3,产品每台利润分别为m1,m2,m3,则可知该厂每月的利润为:Y=m1*X1+m2*X2+m3*X3即目标函数为:X*m+X*m+X*m)(332211XF简化为:F(X)=iiXM*i=1,2,3第3页共10页1.3约束条件的建立生产A、B、C三种产品需用到四种机器V1、V2、V3、V4,每种机器的生产能力分别为K1、K2、K3、K4,所以有:1)用V1每月生产的A、B、C三种部件分别为N1、N2、N3,则:g1(x)=N1*X1+N2*X2+N3*X3K12)用V2每月生产的A、B、C三种部件分别为N11、N12、N13,则:g2(x)=N11*X1+N12*X2+N13*X3K23)用V3每月生产的A、B、C三种部件分别为N21、N22、N23,则:g3(x)=N21*X1+N22*X2+N23*X3K34)用V4每月生产的A、B、C三种部件分别为N31、N32、N33,则:g4(x)=N31*X1+N32*X2+N33*X3K45)每月生产的数量Xinn为大于0的自然数2.优化方法的选择2.1MATLAB语言简介MATLAB语言是由美国Mathworks公司开发的集科学计算、数据可视化和程序设计为一体的工程应用软件,现已成为工程学科计算机辅助分析、设计、仿真以至教学等不可缺少的基础软件,它由MATLAB主包、Simulink组件以及功能各异的工具箱组成。MATLAB优化工具箱的应用包括:线性规划和二次规划,求函数的最大值和最小值,多目标优化,约束优化,离散动态规划等,其简洁的表达式、多种优化算法的任意选择、对算法参数的自由设置,可使用户方便地使用优化方法。2.2优化的应用(1)绘制目标函数的网格图和等值线图由目标函数的网格图和等值线图可观察到目标函数极值点的范围,以验证最优解的可靠性。(2)线性规划线性规划是数学规划中的一个比较成熟的分支,实际应用也非常广泛,同时也是构成非线性约束优化方法的一种基本算法,优化工具箱中由fmincon函数来解线性规划问题,采用投影法计算,是一种修正的单纯形法。2.3优化过程中所使用的方法一般对于优化问题,主要是最大优化和最小优化两种问题,本文中求最大利第4页共10页润的优化,我们可以通过构造惩罚函数将有约束优化问题转化为无约束优化问题,从而能更快的求出利润的最大值。2.4MATLAB解决工程实际问题的步骤(1)根据实际的最优化问题,建立相应的数学模型;(2)对建立的数学模型进行具体的分析和研究,选择恰当的求解方法;(3)根据最优化方法的算法,选择MATLAB优化函数,然后编写求解程序,最后利用计算机求出最优解。3.应用实例某厂生产A、B、C三种产品,产品每台利润分别为600、500和400元。它所用部件P1~P4和部件的生产能力如下表。求如何安排A、B和C的生产计划,使产品的利润最大?表1某产品所用部件及其部件的生产能力部件产品P1/件P2/件P3/件P4/件产品每台计划利润/元A2111600B1212500C1120400部件每月生产能力/件1000800800750---令生产A、B、C三种产品每月计划生产数量为x1,x2,x3台,则计划利润最大值为:maxY=600x1+500x2+400x3;它的约束条件为:2x1+x2+x31000;x1+2x2+x3800;x1+x2+2x3800;x1+2x2750;x1、x2、x303.1建立最优化数学模型将上述数学模型化为标准形式,即将最大值转化为最小化问题,标准形式如下:第5页共10页3.2构造罚函数求解构造罚函数将上式标准形式转化为下述形式所以罚函数为0)(0)(0)(0750x2)(0800x2+x)(0800x+x2+x)(01000x+x+2x)(..400500600)(min372615214321332123211321xxgxxgxxgxxgxxgxgxgtsxxxxfmiixg12]}0),({min[mF(x)m)x(P,0)(0)(0)(0750x2)(0800x2x)(0800xx2x)(01000xx2x)(..400500600)(min372615214321332123211321xxgxxgxxgxxgxxgxgxgtsxxxxf})]0[min()]0[min()]0[min()]750x2x(0[min()]800x2xx(0[min()]800xx2x(0[min()]1000xx2x(0{[min(400500600)m(232221221232123212321321xxxmxxxxP,,,,,,,,第6页共10页0321xPxPxP根据无约束极小的必要条件化简可得:从而可得minP(x,m)的解为:)],0[min(2))]1(*)750x2x(,0[min(2))]1(*)800x2xx(,0[min(2))]1(*)800xx2x(0[min(2))]2(*)1000xx2x(,0[min(26001213213213211xmmmmmxP,)],0[min(2))]2(*)750x2x(,0[min(2))]1(*)800x2xx(,0[min(2))]2(*)800xx2x(0[min(2))]1(*)1000xx2x(,0[min(25002213213213212xmmmmmxP,)],0[min(2))]2(*)800x2xx(,0[min(2))]1(*)800xx2x(0[min(2))]1(*)1000xx2x(,0[min(240033213213213xmmmmxP,7100/4001410109850/5001022149200/600101416321321321mxxxmxxxmxxx第7页共10页当m=1时,X=(388.14,146.56,153.78T)当m=2时,X=(369.07,148.28,151.89T)当m=3时,X=(362.71,148.86,151.26T)当m=4时,X=(359.54,149.14,150.95T)通过这四组数值观察,我们可以得知:m取值越大,相应的X1越来越小,X2越来越大,X3也是逐渐减小,所以我们可以得知:当m趋近无穷大时,有:X=(350.00,150.00,150.00)从而代入目标函数可得:F(x)=-600*350-500*150-400*150=345000即可知该厂每月的最大利润为345000元3.3流程图TmmmmX))22873(29150),20873(29150),74679(9750()(第8页共10页3.4蚁群算法1)简介蚁群算法蚁群算法(antcolonyoptimization,ACO),又称蚂蚁算法,是一种用来寻找最优解决方案的机率型技术。它由MarcoDorigo于1992年在他的博士论文中引入,其灵感来源于蚂蚁在寻找食物过程中发现路径的行为。寻找最短路径的蚁群算法来源于蚂蚁寻食的行为。蚁群寻找食物时会派出一些蚂蚁分头在四周游荡,如果一只蚂蚁找到食物,它就返回巢中通知同伴并沿途留下“信息素”(外激素pheromone)作为蚁群前往食物所在地的标记。信息素会逐渐挥发,如果两只蚂蚁同时找到同一食物,又采取不同路线回到巢中,那么比较绕弯的一条路上信息素的气味会比较淡,蚁群将倾向于沿另一条更近的路线前往食物所在地。蚁群算法设计虚拟的“蚂蚁”,让它们摸索不同路线,并留下会随时间逐渐消失的虚拟“信息素”,根据“信息素较浓的路线更近”的原则,即可选择出最佳路线.2)原理蚂蚁在路径上前进时会根据前边走过的蚂蚁所留下的分泌物选择其要走的路径。其选择一条路径的概率与该路径上分泌物的强度成正比。因此,由大量蚂蚁组成的群体的集体行为实际上构成一种学习信息的正反馈现象:某一条路径走过的蚂蚁越多,后面的蚂蚁选择该路径的可能性就越大。蚂蚁的个体间通过这种信息的交流寻求通向食物的最短路径。蚁群算法就是根据这一特点,通过模仿蚂蚁的行为,从而实现寻优的过程。3)应用情况蚁群算法最初是应用在对称的旅行商问题,如今,随着研究的深入,应用范围不断扩大,现在应用到静态组合优化问题、动态组合优化问题、连续空间优化问题、以及其他领域。4)求解步骤以TSP为例,基本蚁群算法的具体实现步骤如下:(1)参数初始化。令时间t=0和循环次数Nc=0,设置最大循环次数Ncmax,将m个蚂蚁置于n个元素(城市)上,令有向图上每条边(i,j)的初始化信息量τij(t)=const,其中const表示常数,且初始时刻Δτij(0)=0(2)循环次数Nc←Nc+1。(3)蚂蚁的禁忌表索引号k=1。(4)蚂蚁数目k←k+1。第9页共10页3.5Matlab求解由于该函数是线性规划,所以我们可以在matlab中输入如下程序,并把它保存在obj.m中:调用linprog函数:[x,fval]=linprog(f,A,b,Aeq,beq,ib)运行优化结果为:第10页共10页4.结论在本文中,对利润最大化问题的求解,其中,用到了罚函数的求解,MATLAB优化工具箱的求解。通过这两种方式的求解,我们可以得知在解决优化问题的过程中,为了更好的计算出最优值,我们可以选择一种比较简单的方式来求解,然后用另外一种方式来验证。当两种结果都能得到相同的值时,即可确定最优化值。