运筹学课程设计

工 业 大 学 课 程 设 计 报 告 课程设计名称 运筹课程设计 专 业 班 级 学 生 姓 名 指 导 教 师   2013年X月X日 课 程 设 计 任 务 书 课程设计题目:
第 30 题 起止日期:2013.6.17~2013.6.28 设计地点:教室、电子商务中心 设计任务及日程安排:
1、设计任务 1.1通过课程设计可以增强学生解决实际运筹学问题的能力 1.2通过课程设计可以使学生巩固、拓展和深化所学的基础理论、专业理论和知识。

1.3通过课程设计可以使学生初步掌握用运筹学方法解决实际问题的过程和技巧,树立理论联系实际的工作作风。

1.4通过课程设计可以使学生初步建立正确的设计思想和方法,进一步提高运算、计算机应用技能和综合分析、解决问题的能力。

2、设计进度安排 本课程设计时间分为两周:
第一周(2013年6月17日----2013年6月21日):建模阶段。此阶段各小组根据给出的题目完成模型的建立。主要环节包括 :
1.1 6月17日上午:发指导书;
按组布置设计题目;
说明进度安排。

1.2 6月18日下午至6月20日:各小组审题,查阅资料,进行建模前的必要准备(包括求解程序的编写与查找)。

1.3 6月21日至6月22日:各个小组进行建模,并根据题目及设计要求拟定设计提纲,指导教师审阅;
同时阅读,理解求解程序,为上机求解做好准备。

第二周(2013年6月24日---6月28日):上机求解,结果分析及答辩。主要环节包括 1.1 6月24日至6月25日:上机调试程序 1.2 6月26日:完成计算机求解与结果分析。

1.3 6月27日:撰写设计报告。

1.4 6月28日:设计答辩及成绩评定。

运筹学课程设计报告 组 别:第十二组 设计人员:
设计时间:2013年6月17日至2013年6月28日 1.设计进度 本课程设计时间分为两周:
1.1 第一周(2013年6月17日----2013年6月21日):建模阶段。此阶段各小组根据给出的题目完成模型的建立。主要环节包括:
1.1.1 6月17日上午:发指导书;
按组布置设计题目;
说明进度安排。

1.1.2 6月18日下午至6月20日:各小组审题,查阅资料,进行建模前的必要准备(包括求解程序的编写与查找)。

1.1.3 6月21日至6月22日:各个小组进行建模,并根据题目及设计要求拟定设计提纲,指导教师审阅;
同时阅读,理解求解程序,为上机求解做好准备。

1.2 第二周(2013年6月24日---6月28日):上机求解,结果分析及答辩。主要环节包括: 1.2.1 6月24日至6月25日:上机调试程序 1.2.2 6月26日:完成计算机求解与结果分析。

1.2.3 6月27日:撰写设计报告。

1.2.4 6月28日:设计答辩及成绩评定。

2.设计题目 第三十题 某糖果厂用原料A、B、C加工成三种不同品牌的糖果甲、乙、丙。已知各种品牌糖果中A、B、C的含量,原料成本,各种原料的每月限制用量,三种牌号糖果的单位加工费及售价如表1所示。问该厂每月生产这三种糖果各多少公斤,使该厂获利最大。并按要求分别完成下列分析:(1)乙产品的售价在何范围内变化时最优生产方案不变?(2)B原料的成本在何范围内变化时最优生产方案不变?(3)C原料的每月限制量在何范围内变化时最优基不变?(4)甲产品的加工费在何范围内变化时最优生产方案不变? 表1 原料 甲 乙 丙 原料成本 (元/kg)
每月限制用 量(kg)
A ≥60% ≥30% 2.0 2000 B 1.5 2500 C ≤20% ≤50% ≤60% 1.0 1200 加工费(元/kg)
0.5 0.4 0.3 售价(元/kg)
3.4 2.85 2.25 3.建模过程 3.1分析过程 用i=1,2,3分别代表原材料A、B、C,用j=1,2,3分别表示甲、乙、丙三种糖果。设Xij为生产第j种糖果使用的第i种原料的公斤数。

甲糖果的质量为Y1 乙糖果的质量为Y2 丙糖果的质量为Y3 生成甲糖果使用的A原料的公斤数为:X11 生成甲糖果使用的B原料的公斤数为:X12 生成甲糖果使用的C原料的公斤数为:X13 生成乙糖果使用的A原料的公斤数为:X21 生成乙糖果使用的B原料的公斤数为:X22 生成乙糖果使用的C原料的公斤数为:X23 生成丙糖果使用的A原料的公斤数为:X31 生成丙糖果使用的B原料的公斤数为:X32 生成丙糖果使用的C原料的公斤数为:X33 X11+X21+X31 =Y1表示A、B、C三种原料质量之和为甲糖果的质量。

X11>=0.6Y1,化简为0.6X21+0.6X31-0.4X11<=0表示甲糖果中A原料含量要求大于或等于甲糖果总重量的60%。

X31<=0.2Y1化简为0.8X31-0.2X11-0.2X21<=0表示甲糖果中C原料含量要求小于或等于甲糖果总重量的20%。

X12+X22+X32=Y2表示A、B、C三种原料质量之和为乙糖果的质量。

X12>=0.3Y2化简为0.3X22+0.3X32-0.7X12<=0表示乙糖果中A原料含量要求大于或等于乙糖果总重量的30%。

X32<=0.5Y2化简为0.5X32-0.5X12-0.5X22<=0表示乙糖果中C原料含量要求小于或等于乙糖果总重量的50%。

X13+X23+X33=Y3表示A、B、C三种原料质量之和为丙糖果的质量。

X33<=0.6Y3化简为0.4X33-0.6X13-0.6X23<=0表示丙糖果中C原料含量要求小于或等于丙糖果总重量的60%。

三种原料的限制用量 第一种原料的资源限量X11+X12+X13<=2000 第二种原料的资源限量X21+X22+X23<=2500 第三种原料的资源限量X31+X32+X33<=1200 而此时的总利润为 Z=(3.4-0.5)Y1+(2.85-0.4)Y2+(2.25-0.3)Y3-2(X11+X12+X13)-1.5(X21+X22+X23))-1(X31+X32+X33)
3.2模型 该问题的LP模型:
Max Z =0.9X11+1.4 X21+1.9 X31+0.45X12+0.95 X22+1.45 X32 -0.05X13 +0.45X23-0.95X33 X11+X12+X13<=2000 X21+X22+X23<=2500 X31+X32+X33<=1200 0.6X21+0.6X31-0.4X11<=0 0.8X31-0.2X11-0.2X21<=0 0.3X22+0.3X32-0.7X12<=0 0.5X32-0.5X12-0.5X22<=0 0.4X33-0.6X13-0.6X23<=0 Xij>=0 (i=1,2,3, j=1,2,3,) 4.求解程序功能介绍 开始 4.1 程序流程图 变量个数n、约束条件个数m、方程组系数矩阵A、约束条件常数项b值、目标函数系数 化成标准形式:调整目标函数为max,加入松弛变量,将数据输入相应的数组中,形成初始单纯形表 基变量是否有非0人工变量变量 是否所有检验数σj≥0 是 否 是否有非基变量检验数为0 是 否 是 是否存在检验数所在列中有pj>0 无可行解 是 否 否 多个最优解 唯一最优解 是 无界解 进行比较选择,确定主元和换入、换出变量 输出最优表和最优解、最优值 换基迭代 结束 4.2 C语言程序介绍 C 语言具有各种各样的数据类型,可使程序效率更高。并且计算功能、逻辑判断功能也比较强大, 可以实现决策目的。这种结构化方式可使程序层次清晰, 便于使用、维护以及调试。C语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。

4.2.1 数据录入 (1)输入方程组的系数矩阵A(8行17列):
(2)输入初始基变量的数字代码num矩阵:
(3)输入方程组右边的值矩阵b:
(4)输入目标函数各个变量的系数所构成的系数阵C:
图 1 4.3 利用LINDO软件进行灵敏度分析 4.3.1 LINDO软件介绍 LINDO是一种专门用于求解数学规划问题的软件包。由于LINDO执行速度快,易于方便地输入、求解和分析数学规划问题,因此在教学、科研和工业界得到广泛应用。

LINDO主要用于求解线性规划、非线性规划、二次规划和整数规划等问题,也可以用于一些线性和非线性方程组的求解以及代数方程求根等。LINDO中包含了一种建模语言和许多常用的数学函数(包括大量概率函数),可供使用者建立数学规划问题模型时调用。

4.3.2数据录入 Max 0.9X11+1.4X21+1.9X31+0.45X12+0.95X22+1.45X32 -0.05X13+0.45X23-0.95X33 st X11+X12+X13<=2000 X21+X22+X23<=2500 X31+X32+X33<=1200 0.6X21+0.6X31-0.4X11<=0 0.8X31-0.2X11-0.2X21<=0 0.3X22+0.3X32-0.7X12<=0 0.5X32-0.5X12-0.5X22<=0 0.4X33-0.6X13-0.6X23<=0 end 4.3.3 注意事项:
. 目标函数及各约束条件之间一定要有“Subject to (ST) ”分开。

. 变量名不能超过8个字符。

. 变量与其系数间可以有空格,单不能有任何运算符(如乘号“*”等)。

. 要输入<=或>=约束,相应以<或>代替即可。

. 一般LINDO中不能接受括号“()”和逗号“,”,例:400(X1+X2) 需写成400X1+400X2;
10,000需写成10000。

5.结果分析 5.1 C语言程序输出结果 图 2 根据所求最优解得知:
甲糖果的质量为Y1 = X11+X21+X31=966.667 乙糖果的质量为Y2=X12+X22+X32=4733 丙糖果的质量为Y3=X13+X23+X33=0 5.2 LINDO分析的结果 5.2.1 OBJECTIVE FUNCTION VALUE (给出目标函数的最优值)
5450.00 (目标函数的最优值为 5450.00)
VARIABLE(变量)VALUE (变量值)REDUCED COST(检验数所在行变量系数)
X11 580.000000 0.000000 X21 386.666656 0.000000 X31 0.000000 0.000000 X12 1420.000000 0.000000 X22 2113.333252 0.000000 X32 1200.000000 0.000000 X13 0.000000 1.550000 X23 0.000000 0.050000 X33 0.000000 1.950000 5.2.2 SLACK OR SURPLUS:给出松弛变量的值。

列出最优单纯形表中判别数所在行的松弛变量的系数 ROW SLACK OR SURPLUS DUAL PRICES 2) 0.000000 1.500000 3) 0.000000 0.500000 4) 0.000000 1.000000 5) 0.000000 1.500000 6) 193.333328 0.000000 7) 0.000000 1.500000 8) 1166.666626 0.000000 9) 0.000000 0.000000 5.2.3 RANGES IN WHICH THE BASIS IS UNCHANGED: 当目标函数的变量系数什么变化范围内时,最优基不变。

CURRENT COEF:初始目标函数的系数。

ALLOWABLE INCREASE:允许变量系数增加的范围。

ALLOWABLE DECREASE:允许变量系数减少的范围。

当目标函数的系数C在 [初始目标函数的系数-允许变量系数减少的范围,初始目函数的系数+允许变量系数增加的范围] 内变化时,最优基不变,最优解也不变,由于目标函数的系数发上改变了,所以最优值有可能改变。如:目标函数中X1的变量系数为0.9,当它在 [0.15,0.98]内变化时,最优基保持不变 。

Objective Coefficient Ranges: VARIABLE CURRENT ALLOWABLE ALLOWABLE COEF INCREASE DECREASE X11 0.900000 0.083333 0.750000 X21 1.400000 0.125000 0.000000 X31 1.900000 0.000000 INFINITY X12 0.450000 0.750000 0.083333 X22 0.950000 0.000000 0.035714 X32 1.450000 INFINITY 0.000000 X13 -0.050000 1.550000 INFINITY X23 0.450000 0.050000 INFINITY X33 -0.950000 1.950000 INFINITY 5.2.4 约束条件右端项在什么范围内变化时,最优基不变:
CURRENT RHS:初始约束条件右端项的值;

ALLOWABLE INCREASE:允许b值增加的范围;

ALLOWABLE DECREASE:允许b值减少的范围。

当约束条件右端项的值在 [初始约束条件右端项的值-允许b值减少的范围,初始约束条件右端项的值+允许b值增加的范围] 内变化时最优基不变,最优解不变,最优值也可能不变。如b1在[1585.7142,3749.9999]范围内变化时最优基不变,最优生产方案也不变。

Righthand Side Ranges: Current Allowable Allowable ROW RHS Increase Decrease 2 2000.000000 1749.999878 414.285706 3 2500.000000 966.666626 1166.666626 4 1200.000000 966.666626 1200.000000 5 0.000000 700.000000 165.714294 6 0.000000 INFINITY 193.333328 7 0.000000 700.000000 289.999969 8 0.000000 INFINITY 1166.666626 9 0.000000 INFINITY 0.000000 5.3.结果分析 5.3.1 糖果售价、原料成本和加工费价格的变化都属于LP问题模型中参数C的变化,所以分为两种情况:
(1)若Cj是非基变量Xj的系数:
先确定非基变量系数变化范围,非基变量系数变化只影响自身的检验数,因此:设Cj为非基变量Xj的系数,令它在当前最优表中的检验数δj=CBB-1Pj-Cj>=0,当Cj发生了△Cj变化后,要保证当前最优表中相应的检验数仍大于或等于0,必有:
即:δj=δj-△Cj>=0或△Cj<=δj 这就是说,当Xj的系数Cj增大△Cj以后其增量变化范围小于等于该变量在当前最优表中相应的检验数时,最优解不变;
否则最优解改变,将δj的值代入最优表中重新迭代。

(2)若Cj是基变量Xj的系数:
基变量系数变化影响所有非基变量的检验数和目标函数值。如果Cj的变化范围在基变量Cj增量的变化范围之内则其最优解、最优值均不变;
反之如果Cj的变化范围超出基变量Cj增量的变化范围,则需要重新迭代求出最优值。

综上分析:
(1)
0.37<=C12<=1.2,0.91<=C22<=0.95,C32>=1.45,乙产品的售价变化范围是:2.77<=X12<=3.6,2.81<=X22<=2.85,X32>=2.85。所以乙产品的售价在2.77和2.85之间变换时最优生产方案不变;

(2)1.4<=C21<=1.525,0.914<=C22<=0.95,C23<=0.5,B原料的成本变化范围是:1.375<=X21<=1.5,1.5<=X22<=1.536,X23<=1.45。所以B原料的成本在1.37和1.5之间变换时最优生产方案不变;

(4)0.15<=C11<=0.98 ,1.4<=C21<=1.525,C31<=1.9,甲的加工费用变化范围是:1.92<=X11<=2.75,1.375<=X21<=1.5,X31>=1。所以甲的加工费用在1.0到2.75之间变换时最优生产方案不变。

5.3.2 C原料数量的变化属于LP问题模型中参数b的变化 根据公式max{-bi/βir | βir>0}<=b<=min{-bi/βir | βir<0} 确定b的变化范围。

(1)如果C原料数量在0到2166.67之内变化最优基不变最优解变化,最优解由公式XB=B-1b求得。

(2)如果b的变化超出该范围最优基最优解均发生变化,重新计算CBB-1b、B-1b代入最优表中重新迭代。

6.创新内容 模型的主体采取Lindo6.1软件处理数据和对其进行灵敏度分析,准确性高,容量大,逻辑性严格,计算速度快,具有较强的说服力和适应能力。

除题中问题外,可解决其他的灵敏度分析问题,即可求出各项单位运费、开采量、加工能力上限、使用量等保证最优基活最优解不变时的变化范围,例如:
6.1 B原料在丙糖果用料在何范围内变化时最优基不变? 由Lindo灵敏度分析知,B原料在甲糖果用料X21在(1.4,1.525)范围内变化时最优基不变;

6.2 C原料在甲糖果用料为2时的最优基是否改变? 由Lindo灵敏度分析知,C原料在甲糖果用料X31在(1.9, inf)范围内变化时最优基不变,而2恰好在这个范围内,所以最优基不变。

6.3 丙糖果中乙原料的用量在何范围内变化时最优基不变? 由Lindo灵敏度分析知,第二个约束条件右端常数项的变化范围在(1333.3334, 3466.6667)时最优基不变。

7. 课程设计总结 为期两周的课程设计时间不知不觉就过去了,这段时间是忙碌的,也是充实的。我们是三人一组,组员有刘亚丽,石林和我,我们齐心协力终于把这道运筹学的问题解出来。通过这次运筹学的课程设计,使我对《运筹学》这门课程有了更深入的理解。

《运筹学》是一门实践性较强的课程,为了学好这门课程,必须在掌握理论知识的同时,加强上机实践。一个人的力量是有限的,要想把课程设计做的更好,就要参考一定的资料,吸取别人的经验,让自己和别人的思想有机的结合起来,得出属于你自己的灵感。

对于课程设计中分配的题目,因为运筹学的课程刚刚结束,纸上运算自然是难不倒我们的。可因为从来没有针对数学问题进行编程且编程技术不够娴熟的缘故,刚开始完全不知道该如何下手。于是我们三个通过借助网上的范例和搜集资料,完成了建模和提纲部分。通过这次设计,感觉没有想象中的那么难,有很多的问题模型都是类似甚至是有固定模板的,但是如果设的变量不够准确,那所建的模型复杂度也是不同的。

接下来就是编写程序了,这一步不仅需要有耐心,还要涉及到了技术。虽然题目看起来很复杂,但只要一点一点去解决,分析问题,把问题一个一个划分,划分成小块以后就可以逐个去解决了,再总体解决大的问题。这样做起来不仅有条理也使问题得到了轻松的解决。在编程过程中我们还接触到了一个数学软件,LINDO,这个软件对我们解题帮助很大,值得多学习研究。

紧接着我们开始了3天的上机调试过程,开始调试程序,当我们输入长长一串系数之后,回车一下就出现最优解和最优值时,我们终于品尝到了成功的喜悦。此外还将问题的灵敏度分析得出来,使得企业所有资源值和约束条件系数地变化所引发地变化分析出来,彻彻底底地将这个实际问题分析清楚明白,更加巩固了运筹学课堂上所得到地知识,并充分理解运筹学在显示企业管理问题中所存在的意义。

对于这次课程设计,我个人认为是比较有挑战性的,所以我也用心琢磨好它。经过我们的不懈努力终于完成提纲设计,建模,编程,数据录入,求解,分析等过程,最终完成课程设计。回顾起此课程设计,从理论到实践,不仅学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,在脑子里的想法,落实到笔上,不一定和想的结果一样。只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正提高自己的实际动手能力和独立思考的能力。

实验过程中,也对我们的团队精神的进行了考察,让我们在合作起来更加默契,在成功后一起体会喜悦的心情。团结就是力量,我们互相探讨,而后相互验证,默契融洽的配合换来最终的结果。此次设计也让我明白了思路即出路,有什么不懂不明白的地方要及时请教或上网查询,不能坐以待毙。只要认真钻研,动脑思考,动手实践,问题总会得到解决。

推荐访问:运筹学 课程设计