您好,欢迎访问三七文档
制砖机生产计划摘要某重型机械厂给出了其2011年上半年的销售预测情况,要求在成本波动的情况下制定出上半年的生产计划,使利润最大。本文针对是否对该厂月生产能力进行限制,分别构建相应的目标函数和约束条件,并通过转化为动态规划模型结合MATLAB编程,求得不同条件下的最优生产计划。问题一:在生产能力没有限制的情况下,考虑到销售额、固定成本和销售费用不随生产数量和建材价格的波动而波动,本文将目标函数简化为最小化变动成本与贮存费之和,并构建相应约束条件,然后转化为动态规划模型,结合MATLAB编程进行求解,简化了求解过程。最终该厂每月的生产台数分别为:33,34,31,31,29,29。问题二:在问题一的基础上,对每个月的生产能力进行限制。本文在模型一的基础上,增加了一个约束条件,并相应的更改了MATLAB中的M函数文件,得到添加约束条件后的最优生产计划。最终该厂每月的生产台数分别为:33,33,31,32,29,29。关键词:最小成本多阶段决策动态规划MATLAB1、问题提出的背景2010年以来,央行和发改委出台了一系列措施平抑建材价格,但由于对建材需求结构而言,总体上求大于供的市场状况没有得到根本改善,预计2011年的建材价格仍会有一定的增长。因此,在需要建材的制造业中,需要按照建材价格的增长幅度结合贮存成本等其他费用合理地控制生产计划,以达到利润最大化。现某重型机械厂通过对历史资料进行回归分析(即数据拟合),并给合今年上半年可能出现的影响制砖机销售的因素,预测该厂2011年上半年的销售情况如表1.1所示:表1.12011上半年销售预测表月份123456销售量(台)423241672529该厂的制砖机2010年12月的销售均价为48万元/台,今年上半年的售价保持不变。2010年12月末尚有49台未售出。制砖机从计划生产到售出会发生下列费用:(1)生产成本,包括固定成本(主要是指厂房、机器设备的折旧)和可变成本(钢材、其他材料和人工成本等,其中人工成本在可变成本中占到大约40%),按照2010年12月份的建材价格计算,可变成本(万元)与制砖机生产台数的平方成正比,比例系数为0.5。且可变成本与建材价格上涨幅度有关,例如建材价格上涨10%,则可变成本是按前面方法计算结果的1.1倍。(2)销售费用,与当月的销售金额成正比。(3)贮存费,生产出的制砖机未售出的必须贮存,即该厂生产的制砖机平均每台每月的贮存费为0.1万元。预计今年上半年建材的价格仍会有一定的增长。预计的增长速度(以2010年12月的价格为基准)见表1.2:表1.22011上半年建材价格增长表月份123456增长速度10%10%20%20%30%30%2、问题的重述与分析2.1问题的重述该重型机械厂打算在上半年将生产的制砖机全部售完,希望制定一个合理的生产计划在成本波动的情况下得到最大利润。其中,成本包括生产成本、销售费用和贮存费,生产成本随建材价格的波动而起伏。问题一:如果该厂的月生产能力没有限制,并且允许期货销售,如何制定月生产计划?问题二:如果该厂每月的生产能力限于33台,并且允许期货销售,该如何制定月生产计划?2.2问题的分析(1)对问题一的分析为得到该厂最优生产计划,需建立一个以最大利润为目标的模型,由于:=---利润单价销售量生产成本销售费用贮存费(2-1)其中:生产成本为固定成本和可变成本。固定成本为定值,不受制砖机生产台数和价格波动的影响,可变成本为关于制砖机生产台数和建材价格上涨幅度的函数;销售费用与当月销售额成正比,故也为定值,不受制砖机生产台数和价格波动的影响;贮存费与制砖机库存有关。由于固定成本、销售额和销售费用都为定值,不受制砖机生产台数和价格波动的影响,所以最终建立的目标函数为:+min可变成本贮存费(2-2)列出的约束条件如下:•月初库存约束。本月初库存为上月初库存量与上月制造量之和,再减去上月销售量得到的差值。月初库存允许为负值,此时的数值代表上月的期货交易量;•初始值。第一个月的库存为2010年12月的库存量,题目中已知,为49台;•非负约束。每月生产的量不为负数。在求解该模型时,本文首先将模型转化为动态规划模型,然后用MATLAB编程进行求解。(2)对问题二的分析问题二在问题一的基础上,对每个月的生产能力进行限制,本文在模型一基础上增加了一个生产量的限制条件,相应的对动态模型进行改进,最终对MATLAB中的M函数文件进行更改,计算得到最终该厂的生产计划。3、问题的假设(1)假设库存足够大,不考虑库存容量问题;(2)假设月销售量预测准确,不考虑因实际月销售量波动导致的制砖机生产计划波动;(3)假设不同时段生产的制砖机的实际价值一样,不考虑库存制砖机的折旧率;(4)假设月初开始生产,月末进行销售;(5)假设该工厂生产能力足够大;4、符号说明i:上半年月份的编号(其中6,5,4,3,2,1i);0p:制砖机的销售价格(根据题目所给的信息可知0p是个常数);ix:第i个月的生产计划;0a:该厂上半年的固定成本;ia:第i个月建材价格的增长速度;k:销售费用与销售金额的比例系数;iv:第i个月月初的库存量;is:第i个月的销售量;5、模型的建立与求解5.1问题一的模型建立与求解(1)模型一的建立1)建立目标函数通过对问题一的深入分析,我们总结出问题一是一个最优化问题,即在满足该厂生产能力不受限制、该厂允许期货销售和该厂能够在上半年把生产的制砖机全部销售完三个条件下,最终使得该厂的利润最大。根据“利润=销售额-成本”的公式,结合题目所给的信息可知,该厂上半年的销售额等于制砖机的销售价格乘以上半年总的销售量,即610iixp(5-1)该厂上半年的成本包括生产成本(生产成本又包括固定成本和可变成本)、销售费用和贮存费,即616106120*1.0**)1(**5.0iiiiiiivxpkaxa(5-2)因此,目标函数可以表示为:)*1.0**)1(**5.0(-616106120610iiiiiiiiivxpkaxaxpMax(5-3)2)建立约束条件根据题目所给的信息,结合实际情况可知,第1i个月月初的库存量等于第i个月月初的库存量加上第i个月生产的数量减去第i个月的销售数量,即1iiiivxvs(5-4)此外,1月份月初的库存量491v,并且每个月的生产计划0ix。3)建立非线性优化模型根据题目可知,该厂上半年的销售额、固定成本和销售成本都是常数,因此要使得该厂的利润最大,也就是使得该厂的成本最低,所以目标函数可以简化为612)*1.0)1(**5.0(iiiivaxMin(5-5)综上所述,为使得该厂上半年的利润最大,即成本最低,制定该厂上半年的生产计划的非线性优化模型如下:目标函数:612)*1.0)1(**5.0(iiiivaxMin约束条件:.st1iiiivxvs;149v;0ix;(2)模型一的转化通过查阅相关的文献资料,结合题目的背景和模型一的特点,我们认为该厂的生产计划问题属于多阶段决策问题,因此该非线性优化模型可以通过转化为动态规划模型,然后通过MATLAB软件编程来进行求解。1)动态规划的基本模型在实际应用中,要构造一个标准的动态规划模型,通常需要采用以下几个步骤:划分阶段:按照问题的时间或空间特征,把问题分为若干个阶段,这些阶段必须是有序的或者是可排序的(即无后向性),否则,应用无效。选择状态:将问题发展到各个阶段时所处的各种客观情况用不同的状态表示,称为状态。状态的选择要满足无后效性和可知性,即状态不仅依赖于状态的转移规律,还依赖于允许决策集合和指标函数结构。确定决策变量与状态转移方程:当过程处于某一阶段的某个状态时,可以做出不同的决策,描述决策的变量称为决策变量。在决策过程中,由一个状态到另一个状态的演变过程称为状态转移。写出动态规划的基本方程:动态规划的基本方程一般根据实际问题可分为两种形式,逆序形式和顺序形式。动态规划基本方程的逆序形式为:),()(0)(1,2,,1,,)(),(1111nnnnnnnkkkkkxDukkuxvxfxfnnkxfuxvoptxfkkk或边界条件:其中第k阶段的状态为kx,其决策变量ku表示状态处于1kx的决策,状态转移方程为),(1kkkkuxTx,k阶段的允许决策集合记为)(kkxD,),(kkkuxv为指标函数。当求解时,由边界条件从nk开始,由后向前逆推,逐阶段求出最优决策和过程的最优值,直到最后求出)(11xf,即得到问题的最优解。类似地,动态规划基本方程的顺序形式为:0)(,1,,2,1,)(),(101111xfnnkxfuxvoptxfkkkkkxDukkkkk边界条件:2)建立动态规划模型综上,建立该厂的生产计划的动态规划模型的步骤如下:划分阶段:将该厂上半年的生产计划按照时间进行划分,一个月份为一个阶段,因此一共是6个阶段。选择状态变量:将该厂每个月月初的库存量iv设为状态变量。确定决策变量与状态转移方程:将该厂每个月生产制砖机的数量ix设为决策变量;同时根据题意可得状态转移方程为1iiiivxvs。写出动态规划的基本方程:本文采用的是逆序法构建动态规划模型,其中指标方程为)1(**5.0*1.02iiiaxv,表示第i个月的贮存费和变动成本;因此,动态规划的基本方程如下:0,491,2,,6,)()1(**5.0*1.0min71112vvixfaxvxfiiiiiii边界条件:综上,最终的转化成的动态规划模型如下:1,2,,6,)()1(**5.0*1.0min112ixfaxvxfiiiiiii1iiiivxvs491v07v0ix3)基于MATLAB的动态规划模型求解对于构建的动态规划模型,若用人工进行计算,则非常复杂,又很繁琐。如果基于MATLAB的动态规划逆序算法,同时通过MATLAB软件编程进行求解,就可以大大提高计算速度和准确率。其中,动态规划逆序算法的MATLAB程序详见附录8.1。根据上述建立的动态规划模型,包括阶段指标函数、状态转移方程和基本方程,本文写出下面3个M函数文件,以便在求解时可以进行调用。decisfun.m文件%decisfun.mfunctionu=decisfun(k,s,u)%在阶段kk由状态变量x的值求出其相应的决策变量所有的取值b=[42,32,41,67,25,29];ifk==6u=b(k)-s;%6月初的库存量和6月份生产的数量等于6月份的销售量elseu=0:236;%u表示某个月的生产数量,所以不能取负值;%每个月的生产数量不超过上半年的销售总数量减去1月初的库存量,即u不大于236endtransfun.m文件%transfun.mfunctions_next=transfun(k,s,u)%状态转移函数b=[42,32,41,67,25,29];%销售数量矩阵s_next=s+u-b(k);%状态转移方程subobjfun.m文件%subobjfun.mfunctionv=subobjfun(k,s,u)%阶段目标函数a=[0.1,0.1,0.2,0.2,0.3,0.3];%建材价格增长矩阵ifs0%由于该厂可以期货销售,因此库存量可能取负值,当库存量取负值时,该厂的贮存费为零v=0.5*u^2*(1+a(k))+0.1*s;elsev=0.5*u^2*(1+a(k));end在MATLAB主窗口输入每一个阶段状态变量的所有可能取值,然后直接调用dynprog.m(详见附录8.1)进行计算,计算结果如表5.1所示(详见附录8.2)。表5.1问题1计算结果阶段状态变量决策变量阶段指标14933603.8524034639.834231580.843231579.85-429546.65602954
本文标题:制砖机生产计划
链接地址:https://www.777doc.com/doc-6056515 .html