工业大学课程设计报告课程设计名称运筹课程设计专业班级学生姓名指导教师2013年6月28日课程设计任务书运筹学课程设计报告组别:第十六组设计人员:设计时间:2013年6月17日—2013年6月21日1.设计进度本课程设计时间分为两周:第一周(2013年6月17日----2013年6月21日):建模阶段。
此阶段各小组根据给出的题目完成模型的建立。
主要环节包括:1.1 6月17日上午:发指导书;按组布置设计题目;说明进度安排。
1.2 6月17日下午至18日:各小组审题,查阅资料,进行建模前的必要准备(包括求解程序的编写与查找)。
1.3 6月19日至21日:各个小组进行建模,并根据题目及设计要求拟定设计提纲,指导教师审阅;同时阅读,理解求解程序,为上机求解做好准备。
第二周(2013年6月24日---6月28日):上机求解,结果分析及答辩。
主要环节包括:1.4 6月24日至6月26日:上机调试程序1.5 6月27日:完成计算机求解与结果分析。
1.6 6月27日:撰写设计报告。
1.7 6月28日:设计答辩及成绩评定。
2.设计题目某厂生产甲、乙两种产品每种产品都要在A、B两道工序加工。
其中B工序可由B1或B2设备完成但乙产品不能用B1加工。
生产这两种产品都需要C、D、E三种原材料有关数据如下表所示。
又据市场预测甲产品每天销售不超过30件。
问应如何安排生产才能获利最大并按要求分别完成下列分析:(1)乙产品的单价在何范围内变化时最优生产方案不变?(2)B1工序的日供工时数在何范围内变化时最优基不变?(3)原材料D的单位成本在何范围内变化时最优生产方案不变?(4)甲产品的每天销量至少为35件时的最优方案。
3.建模过程3.1设定变量设X1表示甲产品在B工序的B1设备上加工的件数;X2表示甲产品在B工序的B2设备上加工的件数;X3表示乙产品加工的件数;Z表示利润3.2根据题意推理有由在A工序上加工甲乙产品的日供应量限制有2(X1+X2)+X3≤80;由在B工序上的B1设备加工甲产品的日供应量限制有:3X1≤60;由在B工序上的B2设备加工甲乙产品的日供应量限制有X2+4X3≤70;由加工甲乙产品时消耗原材料C的日供应量限制有3(X1+X2)+12X3≤300;由加工甲乙产品时消耗原材料D的日供应量限制有5(X1X2)+3X3≤100;由加工甲乙产品时消耗原材料E的日供应量限制有4(X1X2)+1.5X3≤150;由甲产品的日销售量限制有 X1+X2≤30。
3.3 由以上设定和题目要求得此题的数学模型如下maxZ=80(X1+X2)+100X3-26(X1+X2)-2(X1+X2)*6-29X3-6X3-3X1*2-X2*5-4X3*5-3(X1+X2)*2-5(X1+X2)*1-4(X1+X2)*4-12X3*2-3X3-6X32(X1+X2)+ X3 ≤803X1≤60X2+4X3≤703X1+3X2+12X3≤3005(X1+X2 )+3X3≤1004(X1+X2) +1.5X3≤150X1 +X2 ≤30X i≥0 i=(1,2,3)3.4计算机求解前的手工数据准备整理并化为标准型maxZ=9X1+10X2+12X32X1+2X2+X3+X4 =803X1 +X5 =60X2+4X3 +X6 =703X1+3X2+12X3 +X7 =3005X1+5X2+3X3 +X8 =1004X1+4X2+1.5X3 +X9 =150X1+X2 +X10 =30X i≥0 (i=1,2,3,4,5,6,7,8,9,10)4.求解程序功能介绍4.1 总体介绍Delphi是著名的Borland(现在已和Inprise合并)公司开发的可视化软件开发工具。
“真正的程序员用c,聪明的程序员用Delphi”,这句话是对Delphi最经典、最实在的描述。
Delphi被称为第四代编程语言,它具有简单、高效、功能强大的特点。
和VC相比,Delphi更简单、更易于掌握,而在功能上却丝毫不逊色;和VB相比,Delphi则功能更强大、更实用。
可以说Delphi同时兼备了VC功能强大和VB简单易学的特点。
它一直是程序员至爱的编程工具。
Delphi具有以下的特性:基于窗体和面向对象的方法,高速的编译器,强大的数据库支持,与Windows编程紧密结合,强大而成熟的组件技术。
但最重要的还是Object Pascal语言,它才是一切的根本。
Object Pascal语言是在Pascal语言的基础上发展起来的,简单易学。
在Delphi众多的优势当中,它在数据库方面的特长显得尤为突出:适应于多种数据库结构,从客户机/服务机模式到多层数据结构模式;高效率的数据库管理系统和新一代更先进的数据库引擎;最新的数据分析手段和提供大量的企业组件。
4.2 数据录入注意事项:4.2.1 在输入系数矩阵A、目标函数系数c、约束条件右端常数项b和约束条件符号时,应注意对应的正确位置。
文本框的前m行n列为对应的系数矩阵A的输入位置,m行n+1列为约束条件符号的输入位置,m行n+2列为b的输入位置,m+1行为目标函数系数c的输入位置;4.2.2 在输入目标函数系数c时,只需按照原目标函数进行输入,无需转换,程序会自动进行相应的调整;4.2.3在输入约束条件右端常数项b时,b按照原问题输入,也无需非要求为非负;4.2.4在输入约束条件符号时,注意:-1代表≤,0代表=,1代表≥;4.2.5在进行每步的运行时,一定要按步骤进行;4.2.6如果问题较复杂,一定要注意正确输入,并在输入后进行检查;4.3 程序运行在程序运行过程中,只需点击相应的按钮即可。
其运行过程如下:4.3.1输入约束条件个数m和变量个数n,并选择目标函数类型,然后点击“确定”按钮,之后将在窗口右端生成m+1行n+2列的文本输入区;4.3.2在生成的区域输入相应的输入系数矩阵A、目标函数系数c、约束条件右端常数项b和约束条件符号,然后点击“下一步”按钮,将会弹出一个确定窗口点击“OK”进入两阶段的第一阶段;4.3.3在弹出的新窗口中点击“初始化表格”按钮,将会生成一个辅助问题的初始单纯性表,然后点击“第一阶段最终表”按钮;4.3.4在弹出的确定窗口中点击“OK”进入两阶段的第二阶段,再点击“确定”按钮;4.3.5 在弹出的新窗口中点击“第二阶段初始表”按钮,再点击“显示最终表”按钮,此时出现的即为问题的最优表,并输出了最优值和和最优解。
4.3.6点击“返回”按钮,将返回到第一个窗口,点击“退出”按钮,将退出程序。
4.4 数据分析4.4.1 首先输入数据,分别是系数矩阵A、目标函数系数c、约束条件右端常数项b和约束条件符号,再输入时应注意对应的正确位置。
文本框的前m行n列为对应的系数矩阵A的输入位置,m行n+1列为约束条件符号的输入位置,m行n+2列为b的输入位置,m+1行为目标函数系数c的输入位置;4.4.2定义相应的变量和函数,变量分为普通的变量和临时变量,然后初始化变量;对于操作符是小于号情况的处理,已变换的行数的累加,松弛变量个数累加,实现系数矩阵行的交换,添加松弛变量系数,记录决策变量,交换限定向量(常数项);对于操作符是大于号情况的初步处理,将大于号转化为等于号,以进行下一步处理;对于操作符是等于号,以及由大于号转换而来的情况的处理,累加人工变量的个数,交换系数矩阵的行;4.4.3对应原理的第一步,约束变换。
加入松弛变量和人工变量,构造不带目标函数的初始表格,并调整使基变量的后man行为人工变量;对应原理的第二步,初始化人工目标函数系数,计算人工目标函数系数,初始化人工目标函数值,计算人工目标函数值;对应原理第三步,判断目标函数有无负值,存在目标函数系数为负,找主元列,从行向量中选取最小的数,返回其位置;判断的r列的元素有无正值;找主元行,从主元列中选取比之最小的行,返回其位置;以上四个过程对应原理第四步,完成了迭代变换;对应原理的第五步,判断基变量中是否还有人工变量;对应原理的第六步的前一部分,判断所有有人工变量的值是否全为0;对应原理的第六步的后一部分,删除人工变量所在的行、列,初始化临时变量,记录人工变量的位置,更新系数矩阵,更新限定向量;对应原理的第七步,删除人工变量的所有列,删除人工变量的目标系数,显示表格迭代结果和初始单纯性表;判断目标函数系数是否全为正值,基变量全为非人工变量的情况,显示第一阶段最终单纯形表,否则如果人工基变量的值全为0,显示第一阶段最终单纯形表,进入第二阶段求解。
4.4.4根据存储的第一阶段的最优表的所有信息,建立第二阶段初始单存形表,更新目标函数和限定限量,调用第一阶段使用过的函数,如:puanduan_d、find_s、puanduan_r(s)、find_r(s)、diedai、xianshi等,完成表格的迭代变换,生成最终单纯形表。
4.5 灵敏度分析Ai区工厂数量的变化属于LP问题模型中参数bi的变化根据公式max{-bi/βir | βir>0}<=b<=min{-bi/βir | βir<0} 确定bi的变化范围。
4.5.1如果bi的变化在该范围之内最优基不变,最优解、最优值均发生变化,最优解由公式XB=B-1b求得,最优值由公式max Z=CBB-1b。
4.5.2如果bi的变化超出该范围最优基、最优解和最优值均发生变化,重新计算CBB-1b、B-1b代入最优表中重新迭代。
4.6 程序流程图5.结果分析5.1问题分析通过对题目的正确理解和分析,依据题意可以得到一个最大利润的模型,以这个模型为基础可以快速的求解出各个工序的的最优生产安排;再在这个最优生产安排的基础上求得这一最优的生产安排中所得到的总、产品个数;然后通过灵敏度分析来确定(1)乙产品的单价在何范围内变化时最优生产方案不变?(2)B1工序的日供工时数在何范围内变化时最优基不变?(3)原材料D的单位成本在何范围内变化时最优生产方案不变?(4)甲产品的每天销量至少为35件时的最优方案。
5.2 数据输入对于计算结果我们将上机实现,我们将在所编的delphi窗口中进行数据输入并计算出结果,所以我们在上机前作如下的数据准备(如图1所示):图15.3 计算机的求解结果及结果分析5.3.1 由计算过程及结果我们可以得到各个工序的各个设备的最优生产安排:(如图2所示)图25.3.2 由上表及输出结果可得最优解及最优值(如图3所示):图35.3.3结果分析(1)乙产品的单价在何范围内变化时最优生产方案不变,对应所建模型中X3的系数变化即价值系数C的变化。
X3的取值代表乙产品生产的数量,X3的系数代表乙产品的每件利润值。
经灵敏度分析的结果可知,乙产品的利润在大于9.4范围内最优生产方案不变,即乙产品的价格大于97.4最优生产方案不变。