运筹学课程设计报告(附代码)

合集下载

运筹学课程设计报告(附代码)范文

运筹学课程设计报告(附代码)范文

《运筹学》课程设计报告姓名:班级:学号:一、问题描述1、机型指派问题机型指派优化设计是航空公司制定航班计划的重要内容,它要求在满足航班频率和时刻安排以及各机型飞机总数约束的条件下,将各机型飞机指派给相应的航班,使运行成本最小化。

本课程设计要求建立机型指派问题的数学模型,应用优化软件Lindo/Lingo进行建模求解,给出决策建议,包括各机型执行的航班子集和相应的运行成本。

2、问题描述已知某航空公司航班频率和时刻安排如《运筹学课程设计指导书》中表1所示,航班需求数据和运输距离如表2所示,其中,OrignA/P表示起飞机场,Dep.T.表示起飞时间,Dest.A/P表示目标机场,Dist表示轮挡距离,Demand表示航班需求量,Std Dev.表示需求的标准差。

该航空公司的机队有两种机型:9架B737-800,座位数162;6架B757-200,座位数200。

飞八个机场:A,B,I,J,L,M,O,S。

B737-800的CASM(座英里成本)是0.34元,B757-200是0.36元。

两种机型的 RASM(座英里收益)都是 1.2元。

以成本最小为目标进行机型指派,在成本方面不仅考虑运行成本,还必须考虑旅客溢出成本,否则将偏向于选取小飞机,使航空公司损失许多旅客。

旅客溢出成本是指旅客需求大于航班可提供座位数时,旅客流失到其他航空公司造成的损失。

旅客需求服从N(μ,σ)的正态分布。

如果机票推销工作做得好,溢出旅客并不全部损失,有部分溢出旅客将该成本航空公司其他航班,这种现象叫做“再获得”(Recapture)。

设有15%的溢出旅客被再获得。

将飞机指派到航班上去,并使飞机总成本最小。

二、分析建模1.确定决策变量经过对问题描述的分析得出,要解决飞机机型指派问题,我设定了两类变量:(1)针对各条航线的机型,令B737-800和B757-200分别为机型1和机型2,设变量Xi,j.其中101≤i≤142,j=1或2。

运筹学实验报告

运筹学实验报告

交通与汽车工程学院实验报告课程名称: 运筹学(汽车)课程代码: 8245050学院(直属系): 交通与汽车工程学院年级/专业/班: 2007级物流管理1班学生姓名: 汪春艳学号: 312007********* 实验总成绩:任课教师: 黎青松开课学院: 交通与汽车工程学院实验中心名称: 物流管理实验室第二组西华大学实验报告开课学院及实验室:交通与汽车学院计算机中心实验时间:2009 年 12月 25 日1、实验目的1.1训练建模能力1.2.应用EXCEL建模及求解的方法应用;1.3通过实验进一步掌握运筹学有关方法原理、求解过程,提高学生分析问题和解决问题能力。

2、实验设备、仪器及材料计算机、Excel3、实验内容3.1炼油厂产计划安排问题例一炼油厂的生产计划某炼油厂的工艺流程图如图 1-1所示。

炼油厂输入两种原油(原油 1和原油2)。

原油先进入蒸馏装置,每桶原油经蒸馏后的产品及份额见表1-1,其中轻、中、重石脑油的辛烷值分别为90、80和70。

石脑油部分直接用于发动机油混合,部分输入重整装置,得辛烷值为115的重整汽油。

1桶轻、中、重石脑油经重整后得到的重整汽油分别为0.6、0.52、0.45桶。

蒸馏得到的轻油和重油,一部分直接用于煤油和燃料油的混合,一部分经裂解装置得到裂解汽油和裂解油。

裂解汽油的辛烷值为105。

1桶轻油经裂解后得0.68桶裂解油和0.28桶裂桶汽油;1桶重油裂解后得0.75桶裂解油和0.2桶裂解汽油。

其中裂解汽油用于发动机油混合,裂解油用于煤油和燃料油的混合。

渣油可直接用于煤油和燃料油的混合,或用于生产润滑油。

1桶渣油经处理后可得0.5桶润滑油。

混合成的高档发动机油的辛烷值应不低于 94,普通的发动机油辛烷值不低于84。

混合物的辛烷值按混合前各油料辛烷值和所占比例线性加权计算。

规定煤油的气压不准超过 1kg/cm 2 ,而轻油、重油、裂解油和渣油的气压分别为 1.0、0.6、1.5和0.05kg/cm 2 。

运筹学课程设计报告(完)

运筹学课程设计报告(完)

运筹学课程设计报告组别:第三组设计人员:设计时间:2012年6月25日-2012年7月6日1 设计进度本课程设计时间分为两周:第一周(2012年6月25日----2012年6月29日):建模阶段。

此阶段各小组根据给出的题目完成模型的建立。

主要环节包括:2.16月25日上午:发指导书;按组布置设计题目;说明进度安排。

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

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

第二周(2012年7月2日---7月6日):上机求解,结果分析及答辩。

主要环节包括2.1 7月2日至7月3日:上机调试程序2.2 7月4日:完成计算机求解与结果分析。

2.37月5日:撰写设计报告。

2.4 7月6日:设计答辩及成绩评定。

2 设计题目第三十三题某商店要制订明年第一季度某种商品的进货和销售计划。

一直该店的仓库容量最多可存储该种商品500件,而今年年底有200件存货。

该店在每月月初进货一次。

已知各月份进货和销售该种商品的单价如下表所示。

问每个月应进货和销售该种商品各多少件,才能使总利润最大。

并按要求分别完成下列分析:(1)2月份的进货单价在何范围内变化时最优进销策略不变?(2)3月份的售价在何范围内变化是最优进销策略不变?(3)第一月份初库存量在何范围内变化时最优基不变?(43 建模过程(1)分析过程设定变量设x1表示一月的进货量,x4表示一月的销售量。

x2表示二月的进货量,x5表示二月的销售量。

x3表示三月的进货量,x6表示三月的销售量。

根据题意推理总成本费用=8 x1+6 x2+9 x3总收益=9 x4+8 x5+10 x6各约束条件的范围:一月份的进货量与年底存货之和不能大于500:x1+200≦500一月份的销售量不能大于一月份的进货量与年底存货量之和:x4 ≦x1+200二月份的进货量与一月份剩余量之和不能大于500:x2+(x1+200 -x4)≦500二月份的销售量不能大于二月份的进货量与一月份剩余量之和:x5≦x2+ x1+200-x4三月份的进货量与二月份剩余量之和不能大于500:x3+(x1+200 -x4+ x2–x5)≦500三月份的销售量不能大于三月份的进货量与二月份剩余量之和:x6≦x3+(x1+200 -x4+ x2–x5)(2)模型由以上设定和题目要求,整理得数学模型如下:max z=-8 x1-6 x2-9 x3+9 x4+8 x5+10x6约束条件:x1≦300- x1+x4≦200x1+ x2- x4≦300- x1- x2+x4+ x5≦200x1+ x2+ x3 -x4- x5≦300- x1- x2- x3+x4+x5+ x6≦200x i≧0,i=1 (6)(3)计算机求解前的手工数据准备将原问题添加松弛变量:x7、x8、x9、x10、x11、x12化成标准形式:max z=-8 x1-6 x2-9 x3+9 x4+8 x5+10x6约束条件:+ x7=300x- x1+x4+ x8=200x1+ x2- x4+ x9=300- x1- x2+x4+ x5+ x10=200x1+ x2+ x3 -x4- x5+ x11=300- x1- x2- x3+x4+x5+ x6+ x12=200x i≧0,i=1 (12)4 求解程序功能介绍(1)程序功能介绍Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,Java 技术具有卓越的通用性、高效性、平台移植性和安全性,能运行于不同的平台,对程序提供了安全管理器,防止程序的非法访问。

运筹学课程设计样本

运筹学课程设计样本

课程设计学院: 理学院班级: 数学与应用数学1101班**: **学号: ******运筹学课程设计摘要随着经济不断发展及运筹学自身渐趋完善, 运筹学模型再经济领域中得到了越来越多广泛应用, 在当代经济管理中起着重要作用。

资源是人们进行生产活动从事生产经营基本, 然而资源总是具备经济性和稀缺性, 这就决定了资源合理运用、科学分派有着极其重要现实意义。

因而, 在生产和经营等管理工作中, 就需要经常进行筹划和规划。

本文通过建立线性规划模型解决了公司在有限资源条件下使预期目的达到最优问题。

线性规划问题是运筹学一种重要分支, 广泛应用于军事作战、经营管理、经济分析和工程技术等方面, 为合理运用有限人力、物力和财力提供了科学根据, 有效地解决了如何运用既有有限资源, 最大限度发挥资源能力, 产生最优效果这一问题。

本论文重要以公司制造商品有限资源为约束条件, 以公司获取最大利润为目的函数, 建立了线性规划模型, 由单纯形法求解, 并通过C语言编程求出最优解。

核心词: 线性规划目的最优C语言约束条件单纯形法一、问题提出在生产过程、科学实验以及寻常生活中, 人们总但愿用至少人力、物力、财力和时间去办更多事, 活得最大效益, 在管理学中被看作是生产者利润最大化和消费者效用最大化, 如果从数学角度来看就被看作是“最优化问题”。

在最优化研究生教学中咱们所说最优化问题普通是在某些特定“约束条件”下寻找某个“目的函数”最大(或最小)值, 其解法称为最优化办法。

线性规划办法是最优化办法中一种重要某些。

美佳公司筹划制造甲、乙两种家电产品。

已知各制造一件时分别占用设备A 、设备B 台时、调试工序时间及每天可用于这两种家电能力、各售出一件时获利状况, 如下表所示。

问该公司应制造两种家电各多少件, 使获取利润为最大。

二、问题分析依照题意可知该问题是典型最优化问题, 题中以公司两种设备以及调试工序每天可用能力为限制, 规定在此限制下使公司获得最大利润, 故咱们可以以限制条件为约束条件, 以最大利润为目的函数建立线性规划模型对该问题进行求解。

运筹学课程实施方案报告书最小生成树问题

运筹学课程实施方案报告书最小生成树问题

运筹学课程实施方案报告书最小生成树问题运筹学课程设计报告书专业班级学号姓名LMZZ日期2011.09.01设计题目:最小生成树问题设计方案:本设计是在C语言环境下运行地,主要有:minitree_KRUSKAL()此函数包含几个算法有对树地邻接矩阵地构造,数据地输入,克鲁斯卡尔算法(又称Kruskal算法,其类似于求生成树地“避圈法”)求网地最小生成树,最小生成树地最小代价,输出最小生成树地顶点及其最小代价.ljjzprint(int n)定义并输出邻接矩阵.主程序:int main(){minitree_KRUSKAL();(函数调用)printf("输出邻接矩阵是:\n");ljjzprint(n);(函数调用)}方案实施:1、定义结构体以及各个变量;2、数据地输入;3、采用克鲁斯卡尔算法求出该图地最小生成树;4、采用邻接矩阵做储存结构创建图;5 、在主函数中分别调用以上各个函数,最终实现设计目地. 克鲁斯卡尔算法地表示:while (i <n)< p="">{ min=INFINITE;for (j=0;j <m;j++)< p="">{if (e[j].weight <min&&e[j].flag==0)< p="">{min=e[j].weight;sum+=min;k=j;}}if (t[e[k].vexh].jihe!=t[e[k].vext].jihe){e[k].flag=1;for (j=1;j <=n;j++)if (t[j].jihe==t[e[k].vext].jihe)t[j].jihe=t[e[k].vexh].jihe;t[e[k].vext].jihe=t[e[k].vexh].jihe;i++;}else e[k].flag=2;}邻接矩阵地表示:void ljjzprint(int n)/*定义并输出邻接矩阵*/{int i,j;for(i=1;i<=n;i++){for(j=1;j<=n;j++)printf("%d\t",adjmatrix[i][j]);printf("\n");}}int main(){minitree_KRUSKAL(); 函数调用printf("输出邻接矩阵是:\n");ljjzprint(n); 输出矩阵return 0;}调试过程:原设计在定义输出矩阵函数时,没有形参,在调用时必须输入树地定点数这和前面地函数在输入树地数据时重复操作,为了避免重复如果这个函数添加一个参数为n地形参,再main函数调用minitree_KRUSKAL();后n为定值,n为了在ljjzprint(n)中为已知量则需在程序地开头定义一个全局变量n即可.在求最小生成树地代价时,因为其顶点地权值时变地故重新定义个变量sum,以实现其权值地相加然后输出.结果与结论:测试结果:顶点为:a,b,c, d , e其标号分别为1,2,3,4,5V exh和vext分别为边地两端顶点,weight为边地权值运行如下: 结论:通过实际操作,运用简单地C语言程序编程能比较清楚和简单地把运筹学当中地相对抽象地最小树问题表现出来.具体分工:我主要负责程序后期地修改以及调试,才能使整个程序正常地运行出来.还有对ppt地制作和课程设计书整体地把握!收获与致谢:紧张而又忙碌地课设学习终于结束了,在本次课设中我们也取得了相对很大地成就,通过本次课程设计我们也学到了很多,它增加了我们编程软件地兴趣,在具体操作中对所学地C语言地理论知识得到了巩固,达到实训地目地也发现了自己地不足之处,在以后地上机中应更加注意,同时体会到了C语言具有语句简洁,使用灵活,执行效率高等特点,并且通过此次运筹学课程设计,我们通过C 语言将其中抽象地最小树问题比较直观地变现出来,掌握了求最小树问题地克鲁斯卡尔算法以及邻接矩阵地构造,特别是对C语言中数组和循环有了深刻地了解.通过实际操作将C语言编程和运筹学有机地结合起来,学会了C语言编程地基本步骤和基本方法,开发了自己地逻辑思维能力,培养了分析问题和解决问题地能力.在此衷心感谢学院安排这次课设,让我们又多了一次学习交流地机会,更好地巩固了所学地知识,拓展了知识面.本次课设能取得成功,要感谢老师地帮助和指导.在课设期间老师帮助我们分析思路,提供方法,才使得我们地程序做地更加地完善.其次是要感谢和我同组地同学感谢对方对本次课设地付出.参考文献:《运筹学教程》(第三版)胡运权主编《C程序设计》(第三版)谭浩强编著《C程序设计题解与上机指导》(第三版)谭浩强编著附件:本设计地详细代码如下:#include#define M 30#define INFINITE 9999#define n0 100int adjmatrix[n0+1][n0+1];int n;typedef struct{char data;int jihe;}VEX;typedef struct{int vexh,vext;int weight;int flag;}EDGE;void minitree_KRUSKAL(){int i,m,min,k,j;int sum=0;VEX t[M];EDGE e[M];printf("最小生成树问题\n");printf("程序设计者:冯云广,吕金刚\n"); printf("输入顶点数及边数:");fflush(stdin);scanf("%d%d",&n,&m); //n个点 m条边printf("输入各个顶点名称:\n");for (i=1;i <=n;i++){printf("t[%d].data=:",i); //输入顶点字符getchar();fflush(stdin); //清除缓存scanf("%c",&t[i].data); // 输入点对应地字符t[i].jihe=i;printf("输入两个不同顶点及其边权:\n");for(i=1;i<=m;i++)for(j=1;j<=m;j++)adjmatrix[i][j]=0;for (i=0;i <m;i++)< p="">{printf("vexh,vext,weight:");fflush(stdin);scanf("%d%d%d",&e[i].vexh,&e[i].vext,&e[i].weight); if(e[i].weight>0){adjmatrix[e[i].vexh][e[i].vext]=1;adjmatrix[e[i].vext][e[i].vexh]=1;}e[i].flag=0;}i=1;while (i <n)< p="">{min=INFINITE;for (j=0;j <m;j++)< p="">{if (e[j].weight <min&&e[j].flag==0)< p="">{min=e[j].weight;k=j;}}if (t[e[k].vexh].jihe!=t[e[k].vext].jihe)e[k].flag=1;for (j=1;j <=n;j++)if (t[j].jihe==t[e[k].vext].jihe)t[j].jihe=t[e[k].vexh].jihe;t[e[k].vext].jihe=t[e[k].vexh].jihe;i++;}else e[k].flag=2;}printf("克鲁斯卡尔算法及代价如下:\n");for (i=0;i <m;i++)< p="">if (e[i].flag==1){printf("(%d,%d) %d\n",e[i].vexh,e[i].vext,e[i].weight); sum+=e[i].weight;}printf("最小生成树地权是:");printf("%d\n",sum);}void ljjzprint(int n)/*定义并输出邻接矩阵*/{int i,j;for(i=1;i<=n;i++){for(j=1;j<=n;j++)printf("%d\t",adjmatrix[i][j]);printf("\n");}}int main(){minitree_KRUSKAL();printf("输出邻接矩阵是:\n");ljjzprint(n);return 0;}指导教师评语:课程设计报告成绩:,占总成绩比例:20%答辩成绩:,占总成绩比例:30%课程设计作品,占总成绩比例:50%总成绩:.版权申明本文部分内容,包括文字、图片、以及设计等在网上搜集整理.版权为个人所有This article includes some parts, including text, pictures, and design. Copyright is personal ownership.b5E2RGbCAP 用户可将本文地内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律地规定,不得侵犯本网站及相关权利人地合法权利.除此以外,将本文任何内容或服务用于其他用途时,须征得本人及相关权利人地书面许可,并支付报酬.p1EanqFDPwUsers may use the contents or services of this article for personal study, research or appreciation, and othernon-commercial or non-profit purposes, but at the same time, they shall abide by the provisions of copyright law and other relevant laws, and shall not infringe upon the legitimate rights of this website and its relevant obligees. In addition, when any content or service of this article is used for other purposes, written permission and remuneration shall be obtained from theperson concerned and the relevant obligee.DXDiTa9E3d 转载或引用本文内容必须是以新闻性或资料性公共免费信息为使用目地地合理、善意引用,不得对本文内容原意进行曲解、修改,并自负版权等法律责任.RTCrpUDGiTReproduction or quotation of the content of this article must be reasonable and good-faith citation for the use of news or informative public free information. It shall not misinterpret or modify the original intention of the content of this article, and shall bear legal liability such as copyright.5PCzVD7HxA </m;i++)<></min&&e[j].flag==0)<></m;j++)<></n)<></m;i++)<></min&&e[j].flag==0)<></m;j++)<></n)<>。

运筹学课程设计源代码- 题目是《某糖果厂用原料A、B、C加工成三种不同品牌的糖果甲、乙、丙》

运筹学课程设计源代码- 题目是《某糖果厂用原料A、B、C加工成三种不同品牌的糖果甲、乙、丙》

运筹学建模与源代码题目:某糖果厂用原料A、B、C加工成三种不同品牌的糖果甲、乙、丙。

已知各种品牌糖果中A、B、C的含量,原料成本,各种原料的每月限制用量,三种牌号糖果的单位加工费及售价如表1所示。

问该厂每月生产这三种糖果各多少公斤,使该厂获利最大。

并按要求分别完成下列分析:(1)乙产品的售价在何范围内变化时最优生产方案不变?(2)B原料的成本在何范围内变化时最优生产方案不变?(3)C原料的每月限制量在何范围内变化时最优基不变?(4)甲产品的加工费在何范围内变化时最优生产方案不变?表1一、运筹学建模1.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原料的公斤数为:X33X11+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%。

运筹学课程设计文库

运筹学课程设计文库

运筹学课程设计报告书专业班级:姓名:学号:指导教师:日期:2016年7月14日数学系2016年07月14 日一.课程设计的目的和意义运筹学是一门多学科的定量优化技术,为了从理论与实践的结合上,提高学生应用运筹学方法与计算机软件的独立工作能力,本着“突出建模,结合软件,加强应用”的指导思想,以学生自己动手为主,对一些实际题目进行构模,再运用计算机软件进行求解,对解进行检验和评价,写出课程设计报告。

二.课程设计的时间本课程设计时间2周。

三.课程设计的基本任务和要求由于不同的同学选择的方向不同,因此给出如下两种要求,完成其一即可:1.选择建模的同学:利用运筹学基本知识对所选案例建立合适的数学模型,然后利用winQSB、LINGO、matlab或者其它数学软件进行求解;2.选择编程的同学:根据运筹学基本原理以及所掌握的计算机语言知识,对于运筹学中部分算法编写高级语言的具有可用性的程序软件。

四.课程设计的问题叙述便民超市的网点布设:南平市规划在其远郊建一卫星城镇,下设20个街区,如图所示。

各街区居民数预期为1、4、9、13、17、20各12000人;2、3、5、8、11、14、19各14000人;6、7、10、12、15、16、18各15000人。

便民超市准备在上述街区进行布点。

根据方便就近的原则,在某一街区设点,该点将服务于该街区及相邻街区。

例如在编号为3的街区设一超市点,它服务的街区为1、2、3、4、6。

由于受到经费限制,便民超市将在上述20个街区内先设两个点。

请提供你的建议:在哪两个街区设点,使其服务范围的居民人数为最多。

五.模型的假设与建立1、根据图示及材料可以总结出以下表格:2、设街区编号为i x ,在第i 个街区设点能服务到的人数为i a令 i x =1时,表示在第i 街区设点;i x =0时,表示在第i 街区不设点()20,...,2,101=⎩⎨⎧=i x i 目标函数: ∑==201max i ii x a Z⎪⎩⎪⎨⎧==∑=1,02.201i i i x x t s3、 根据上述模型编写lingo 程序:model:sets:jihe/1..20/:a,x;endsetsmax=@sum(jihe(i):a(i)*x(i));@for(jihe:@sum(jihe(i):x(i))=2);@for(jihe(i):@bin(x(i)));data:a=52000 81000 67000 67000 55000 96000 85000 58000 55000 68000 70000 85000 85000 112000 85000 56000 71000 82000 53000 70000;enddataend六.模型求解Global optimal solution found.Objective value: 208000.0Objective bound: 208000.0Infeasibilities: 0.000000Extended solver steps: 0Total solver iterations: 0Variable Value Reduced CostA( 1) 52000.00 0.000000A( 2) 81000.00 0.000000A( 3) 67000.00 0.000000A( 4) 67000.00 0.000000A( 5) 55000.00 0.000000A( 6) 96000.00 0.000000A( 7) 85000.00 0.000000A( 8) 58000.00 0.000000A( 9) 55000.00 0.000000A( 10) 68000.00 0.000000A( 11) 70000.00 0.000000A( 12) 85000.00 0.000000A( 13) 85000.00 0.000000A( 14) 112000.0 0.000000A( 15) 85000.00 0.000000A( 16) 56000.00 0.000000A( 17) 71000.00 0.000000A( 19) 53000.00 0.000000 A( 20) 70000.00 0.000000 X( 1) 0.000000 -52000.00 X( 2) 0.000000 -81000.00 X( 3) 0.000000 -67000.00 X( 4) 0.000000 -67000.00 X( 5) 0.000000 -55000.00 X( 6) 1.000000 -96000.00 X( 7) 0.000000 -85000.00 X( 8) 0.000000 -58000.00 X( 9) 0.000000 -55000.00 X( 10) 0.000000 -68000.00 X( 11) 0.000000 -70000.00 X( 12) 0.000000 -85000.00 X( 13) 0.000000 -85000.00 X( 14) 1.000000 -112000.0 X( 15) 0.000000 -85000.00 X( 16) 0.000000 -56000.00 X( 17) 0.000000 -71000.00 X( 18) 0.000000 -82000.00 X( 19) 0.000000 -53000.00 X( 20) 0.000000 -70000.00Row Slack or Surplus Dual Price1 208000.0 1.0000002 0.000000 0.0000003 0.000000 0.0000004 0.000000 0.0000005 0.000000 0.0000006 0.000000 0.0000007 0.000000 0.0000008 0.000000 0.0000009 0.000000 0.00000010 0.000000 0.00000011 0.000000 0.00000012 0.000000 0.00000013 0.000000 0.00000014 0.000000 0.00000015 0.000000 0.00000016 0.000000 0.00000017 0.000000 0.00000018 0.000000 0.00000019 0.000000 0.00000021 0.000000 0.000000七.结果分析根据上述程序运行结果可以看出 X( 6)、X( 14)=1,则可以得出结果:当便民超市在街区6和14设点时,其服务范围内的居民人数为最多;此时,预期最多服务人数为208000人。

《运筹学》课程设计报告

《运筹学》课程设计报告

《运筹学》课程设计报告姓名:班级:学号:一、问题描述1、机型指派问题众所周知,机型指派优化设计是航空公司制定航班计划的重要内容,它要求在满足航班频率和时刻安排以及各级型飞机总数的约束条件下,将各级型飞机指派给相应的航班,使运行成本最小化。

本课程设计就是通过建立机型指派问题的数学模型,并应用优化软件Lindo/Lingo进行建模求解,同时给出决策建议,包括各机型执行的航班子集和相应的运行成本。

2、问题描述已知某航空公司航班频率和时刻安排如《运筹学课程设计指导书》中表1所示,航班需求数据和运输距离如表2所示,其中,OrignA/P表示起飞机场,Dep.T.表示起飞时间,Dest.A/P表示目标机场,Dist表示轮挡距离,Demand表示航班需求量,Std Dev.表示需求的标准差。

该航空公司的机队有两种机型:9架B737-800,座位数162;6架B757-200,座位数200。

飞八个机场:A, B, I, J, L, M, O, S.B737-800的CASM(座英里成本)是0.34元,B757-200是0.36元。

两种机型的 RASM(座英里收益)都是 1.2元。

以成本最小为目标进行机型指派,在成本方面不仅考虑运行成本,还必须考虑旅客溢出成本,否则将偏向于选取小飞机,使航空公司损失许多旅客。

旅客溢出成本是指旅客需求大于航班可提供座位数时,旅客流失到其他航空公司造成的损失。

旅客需求服从N(μ,σ)的正态分布。

如果机票工作做得好,溢出旅客并不全部损失,有部分溢出旅客将该成本航空公司其他航班,这种现象叫做“再获得(Recapture)”。

设有15%的溢出旅客被再获得。

将飞机指派到航班上去,并使飞机总成本最小。

二、分析建模1.目标函数以成本最小为求解目标。

该成本包括两个部分,第一是运输成本,其表达式为:机型1的架数*每架座位数*座英里成本*该航班的飞行距离+机型2的架数*每架座位数*座英里成本*该航班的飞行距离;第二个为旅客溢出成本,表达式为:机型1旅客溢出的期望值*机型1的架数*机型1的座英里收益*该航班的飞行距离*0.85+机型2旅客溢出的期望值*机型2的架数*机型2的座英里收益*该航班的飞行距离*0.85。

运筹学实验报告_7

运筹学实验报告_7

运筹学实验(注: 此代码还有一些未完善的地方, 仅供参考, 此实验报告纯属个人意见, 同样仅供参考。

话说一样的内容多了老师会发现的)一、实验目的通过实验熟悉单纯形法的原理, 掌握matlab循环语句的应用, 提高编程的能力和技巧, 体会matlab在进行数学求解方面的方便快捷。

二、实验环境Matlab2012b,计算机三、实验内容(包含参数取值情况)构造单纯形算法解决线性规划问题Min z=cxs.t. Ax=bxj>=0,j=1,…,nfunction[S,val]=danchun(A1,C,N)S为最优值;Val为最优解;A1为标准形式LP问题的约束矩阵及最后一列为资源向量(注: 资源向量要大于零);A1=[A+b]C是目标函数的系数向量;C=cN为初始基的下标(注: 请按照顺序输入, 若没有初始基则定义N=[]):先输入A1,C,N三个必要参数,然后调用danchun(A,C,N)进行求解。

在此函数中,首先判断N的长度是否为空,若为空,则flag=1, 进入初始解问题的迭代求值,添加辅助问题, 构建单纯形表, 求g所对应的RHS值,若其>0,则返回该问题无解若其=0, 则返回A1,Z,N三个参数, 继续构造单纯形表求解A1为经过变换后的系数及资源向量Z为单纯形表的第一行N为经过辅助问题求解之后的基的下标否则,直接构建单纯形表, 对该问题进行求解, 此时flag=2,多次迭代后找到解。

另外,若在大于零的检验数所对应的系数均小于零时, 会显示“此问题无界”若找到最优解和最优值时, 会输出“val”和“S=”以及具体数值。

四、源程序function[S,val]=danchun(A1,C,N)if(length(N)==0)gN=zeros(1,length(A1(:,1)));gC=[-C,gN,0];%原文题的检验数的矩阵Z=gC;G=[zeros(1,length(C)),-ones(1,length(gN)),0];val=zeros(1,length(C));%val为最优解;for i=(length(C)+1):length(C)+length(A1(:,1))%生成基变量gN(i-length(C))=i;endNn=gN;%%%%%%%ll=zeros(1,length(N));%比值最小原则%生成除了最上端两行的表的矩阵gb=A1(:,length(C)+1);A1(:,length(C)+1)=[];l=zeros(length(gN),length(gN));gA=[A1,l,gb];for i=1:length(gb)gA(i,gN(i))=1;endfor i=1:length(gN)%J为基本可行基所对应的检验数J(i)=G(gN(i));endfor i=1:length(gN)%找到基本可行基的检验数, 将其赋值为0 if(J(i)~=0)G=G-(J(i)/gA(i,gN(i)))*gA(i,:);endendflag=1;elseflag=2;A=A1;Z=[-C,0];%单纯形表的第一行val=zeros(1,length(C));%val为最优解;ll=zeros(1,length(N));%比值最小原则end%%初始解问题while flag==1for i=1:length(gN)%J为基本可行基所对应的G的检验数J(i)=G(gN(i));JZ(i)=Z(gN(i));%JZ为基本可行基所对应的Z的检验数endfor i=1:length(gN)%找到基本可行基的检验数, 将其赋值为0 if(J(i)~=0)G=G-(J(i)/gA(i,gN(i)))*gA(i,:);Z=Z-(JZ(i)/gA(i,gN(i)))*gA(i,:);endendG1=G;%G1为检验数G1(:,length(G1))=[];D=max(G1);%找到检验数的最大值if(D<=0)%检验数都小于0if(G(length(G))>=1)disp('此情况无解');flag=0;elseif(G(length(G))>=0)for i=1:length(gN)if(max(gN)<=length(A1(1,:)));flag=2;for j=1:length(Nn)a=Nn(1);gA(:,a)=[];Z(a)=[];endA=gA;N=gN;break;endendendendelse%检验数大于0for i=1:length(G)if(G(i)==D)%找到最大的那个检验数所对应的元素for j=1:length(gN)if(gA(j,i)>0)ll(j)=gA(j,length(G))/gA(j,i);%求比值elsell(j)=10000;endendd=min(ll);for k=1:length(ll)%找到进基和离基if(ll(k)==d)gN(k)=i;gA(k,:)=gA(k,:)/gA(k,i);for m=1:k-1gA(m,:)=-(gA(m,i)/gA(k,i))*gA(k,:)+gA(m,:);endfor n=k+1:length(ll)gA(n,:)=-(gA(n,i)/gA(k,i))*gA(k,:)+gA(n,:);endbreak;endendendendendendwhile(flag==2)for i=1:length(N)%J为基本可行基所对应的检验数J(i)=Z(N(i));endfor i=1:length(N)%找到基本可行基的检验数, 将其赋值为0if(J(i)~=0)Z=Z-(J(i)/A(i,N(i)))*A(i,:);endendZ1=Z;%Z1为检验数Z1(:,length(Z1))=[];D=max(Z1);%找到检验数的最大值if(D<=0)%检验数都小于0disp('已找到最优解和最优值')for i=1:length(N)val(N(i))=A(i,length(Z));endS=Z(length(Z));disp('val');disp(val);flag=0;else%检验数大于0for i=1:length(Z)if(Z(i)==D)%找到最大的那个检验数所对应的元素for j=1:length(N)if(A(j,i)>0)ll(j)=A(j,length(Z))/A(j,i);%求比值elsell(j)=10000;endendd=min(ll);if(d==10000)disp('此问题无界')flag=0;break;endfor k=1:length(ll)%找到进基和离基if(ll(k)==d)N(k)=i;A(k,:)=A(k,:)/A(k,i);for m=1:k-1A(m,:)=-(A(m,i)/A(k,i))*A(k,:)+A(m,:);endfor n=k+1:length(ll)A(n,:)=-(A(n,i)/A(k,i))*A(k,:)+A(n,:);endbreakendendendendendend五、运行结果与数据测试参考例题:例1:Min z=3x1+x2+x3+x4 s.t. -2x1+2x2+x3=43x1+2x+x4=6Xj>=0,j=1,2,3,4例2: 初始解问题Min z=5x1+21x3 s.t. x1-x2+6x3-x4=2x1+x2+2x3-x5=1 xj>=0,j=1,…,5六、求解实际问题(即解决附件中的实验题目)实验题目列出下列问题的数学模型, 并用你自己的单纯形算法程序进行计算, 最后给出计算结果。

运筹学实验报告设计书

运筹学实验报告设计书

《运筹学课程设计》实验报告项目选择:综合实验A线材切割问题设能购买到的不同长度的原线材有m种,长度分别为L1,...,Lm,这些原线材只是长度不同,其它都相同。

某工程中所要切割出的线材长度分别为li,i=1,2,...,n(这里 li < 所有Li),对应数量分别为Ni,i=1,2,...,n。

设计优化计算方案,求出分别需要购买多少根不同长度的原线材,并能给出切割方案及线材利用率。

现假设某装修工程中需要对铝合金线材进行切割,工程能购买到的同一规格的铝合金线材有二种长度,一种长度是8米,另一种是12米。

现在假设要切割长度和数量如下所示的铝合金线材:表 5.1应用所设计的计算方案,请问至少需要购买多少根8米和12米的线材,使浪费的线材比较少,并给出切割方案和计算线材利用率。

实验目的:一、学习LINDO软件的操作,能够用LINDO解决基本的运筹学规划问题LP和运筹学整数规划问题IP。

二、培养利用运筹学理论知识,结合lindo软件,加上团结合作的能力,解决复杂性的综合性问题。

实验原理:一、本课程设计使用LINDO 6.01进行操作。

LINDO (Linear Interactive and Discrete Optimizer )是一种专门用于求解数学规划问题的软件包,主要用于解线性规划、非线性规划、二次规划和整数规划等问题。

二、LINDO 可用于求解单纯的或混合型的整数规划(IP)问题. 但目前尚无相应完善的敏感性分析理论. IP 问题的输入与LP 问题类似, 但在END 标志后需定义整型变量.三、就本课程设计而言,主要任务是建摸的过程,然后由lindo 软件进行规划。

因为要求得最少的原材料根数,考虑到“全部用完,没有剩余”的原则,首先将切割后没有剩余的情况全部列出,利用lindo 软件求出最优结果。

四、本课程设计采用整数规划,整数线性规划数学模型的一般形式为:⎪⎪⎩⎪⎪⎨⎧--=≥-=≥=≤-=∑∑==)44(,,,)34(,,2,10)24(,,2,1),(..)14(min)max(2111中部分或全部取整数或或或nj nj ij ij nj jj x x x n j x m i b x a t s x c z实验步骤:一、安装LINDO软件,学习软件自带的HELP文档,掌握该软件的基本操作。

运筹学课程设计方案模板

运筹学课程设计方案模板

一、课程概述1. 课程名称:运筹学2. 课程代码:XXX3. 学分:XXX4. 学时:XXX5. 适用专业:XXX6. 教材:(选填)XXX二、课程目标1. 知识目标:(1)使学生掌握运筹学的基本概念、基本理论和基本方法;(2)使学生了解运筹学在实际问题中的应用;(3)使学生具备分析问题和解决问题的能力。

2. 能力与素质目标:(1)培养学生运用运筹学理论分析和解决实际问题的能力;(2)培养学生独立思考、创新意识和团队协作精神;(3)提高学生的综合素质,为今后从事相关工作奠定基础。

三、课程内容1. 运筹学基本概念2. 运筹学基本理论3. 运筹学基本方法4. 运筹学应用实例5. 运筹学软件介绍6. 运筹学课程设计四、教学方法与手段1. 讲授法:教师讲解运筹学的基本概念、基本理论和基本方法;2. 案例分析法:通过实际案例分析,使学生了解运筹学在实际问题中的应用;3. 讨论法:组织学生进行小组讨论,提高学生的团队协作能力和创新意识;4. 上机实验:利用运筹学软件进行上机实验,巩固所学知识;5. 课程设计:引导学生结合实际案例,运用所学知识进行课程设计。

五、课程评价1. 平时成绩:包括课堂表现、作业完成情况等,占总成绩的40%;2. 期中考试成绩:考察学生对课程知识的掌握程度,占总成绩的30%;3. 课程设计成绩:考察学生运用所学知识解决实际问题的能力,占总成绩的30%。

六、课程进度安排1. 第一周:介绍课程内容、教学方法和课程评价;2. 第二周至第四周:讲解运筹学基本概念、基本理论和基本方法;3. 第五周至第八周:分析运筹学应用实例,组织学生进行小组讨论;4. 第九周至第十一周:介绍运筹学软件,进行上机实验;5. 第十二周至第十三周:进行课程设计,完成课程设计报告;6. 第十四周:课程设计答辩,进行课程总结。

七、参考资料1. 《运筹学导论》2. 《运筹学应用》3. 运筹学相关软件(如LINDO、CPLEX等)八、课程特色1. 理论与实践相结合,使学生能够将所学知识应用于实际问题;2. 注重培养学生的创新意识和团队协作精神;3. 采用多种教学方法,提高学生的学习兴趣和积极性。

运筹学实用教程课程设计

运筹学实用教程课程设计

运筹学实用教程课程设计前言运筹学是一门应用数学,主要研究如何建立数学模型,在一定的约束条件下,有效地解决实际问题。

运筹学包含许多数学方法和技巧,如线性规划、网络流、整数规划、动态规划等。

本文主要介绍本人在学习运筹学过程中的实用教程课程设计内容,包括问题模型的建立、模型求解的方法和求解结果的分析。

问题描述某公司生产销售两种产品,分别是A和B,每个月分别需要进行生产计划。

该公司每个月有600个工作小时,A产品每件需要2个工作小时,B产品需要3个工作小时。

每个月A产品的销售额为1000元,单位成本为500元;B产品的销售额为1500元,单位成本为800元。

该公司每个月的利润为销售额减去成本。

现在该公司需要确定每个月的生产计划,使得每个月的利润最大化。

问题分析1.建模根据问题描述,可以得到以下信息:•每个月有600个工作小时•A产品每件需要2个工作小时,B产品需要3个工作小时•每个月A产品的销售额为1000元,单位成本为500元;B产品的销售额为1500元,单位成本为800元现在需要确定每个月的生产计划,使得每个月的利润最大化。

根据上述信息,定义以下变量:•x1:每个月生产的A产品件数•x2:每个月生产的B产品件数则目标函数为:$\\max Z=1000x_1+1500x_2-500x_1-800x_2=500x_1+700x_2$ 约束条件为:•$2x_1+3x_2\\leq600$•$x_1,x_2\\geq0$2.模型求解本次课程设计使用Python编程语言求解线性规划问题。

导入必要的模块:from scipy.optimize import linprogimport numpy as np由于上述目标函数为最大化问题,需要将其转化为最小化问题,即:$\\min Z=-500x_1-700x_2$根据约束条件,可以得到x1和x2的范围$x_1\\leq300-1.5x_2$$x_2\\leq200-\\dfrac{2}{3}x_1$$x_1,x_2\\geq0$将其转化为标准型:$\\min Z=-500x_1-700x_2$2x1+3x2+x3=600$-\\dfrac{3}{2}x_1+x_2+x_4=0$$x_1,x_2,x_3,x_4\\geq0$利用linprog求解线性规划问题,代码如下:# 构造目标函数Mxbf = np.array([-500, -700, 0, 0])# 构造约束矩阵A = np.array([[2, 3, 1, 0], [-1.5, 1, 0, 1]])# 构造标准型线性规划问题b = np.array([600, 0])# 定义变量的上下界x1_bounds = (0, None)x2_bounds = (0, None)x3_bounds = (0, None)x4_bounds = (0, None)# 使用linprog函数求解线性规划问题res = linprog(c=f, A_eq=A, b_eq=b, bounds=[x1_bounds, x2_bounds, x3_bounds, x4 _bounds], method='simplex')print(res)最终求解结果为:fun: -231428.5714285714message: 'Optimization terminated successfully.'nit: 3slack: array([ 0. , 142.85714286])status: 0success: Truex: array([171.42857143, 114.28571429, 0. , 0. ])可以得到,当每个月生产171件A产品和114件B产品时,可以使得每个月的利润最大化,最大利润为231428.57元。

运筹学课程设计模板(参考)

运筹学课程设计模板(参考)

学生实践报告(文科类)课程名称:物流运筹学专业班级: 14物流管理(1)班学生学号: 1401106022学生姓名:陈雪韵所属院部:商学院指导教师:何宽2015——20 16学年第 2 学期金陵科技学院教务处制实践报告书写要求实践报告原则上要求学生手写,要求书写工整。

若因课程特点需打印的,要遵照以下字体、字号、间距等的具体要求。

纸张一律采用A4的纸张。

实践报告书写说明实践报告中一至四项内容为必填项,包括实践目的和要求;实践环境与条件;实践内容;实践报告。

各院部可根据学科特点和实践具体要求增加项目。

填写注意事项(1)细致观察,及时、准确、如实记录。

(2)准确说明,层次清晰。

(3)尽量采用专用术语来说明事物。

(4)外文、符号、公式要准确,应使用统一规定的名词和符号。

(5)应独立完成实践报告的书写,严禁抄袭、复印,一经发现,以零分论处。

实践报告批改说明实践报告的批改要及时、认真、仔细,一律用红色笔批改。

实践报告的批改成绩采用百分制,具体评分标准由各院部自行制定。

实践报告装订要求实践报告批改完毕后,任课老师将每门课程的每个实践项目的实践报告以自然班为单位、按学号升序排列,装订成册,并附上一份该门课程的实践大纲。

实践项目名称:卫岗乳品工业园到江宁大学城的牛奶派送问题学时: 8同组学生姓名:费琳莎印玉涵冯逸琪实践地点:江宁大学城实践日期:第11周-第12周实践成绩:批改教师:批改时间:指导教师评阅:一、实践目的和要求物流运筹学创新实验要求学生运用课程所学理论与方法,以现实问题为背景,解决工作、学习或生活中的具体问题。

二、实践环境与条件采用计算机,运用相关软件程序及WORD基本编辑工具。

三、实践内容我们采用PC机,运用相关软件程序及WORD基本编辑工具。

1、根据实际问题,运用典型的运筹学方法构建相关的模型。

2、要求能够具体描述问题的背景,涉及的运筹学理论与方法。

3、运用相关方法求解问题。

4、给出相关结论。

四、实践报告(附件)题目名称(卫岗乳品工业园到江宁大学城的牛奶派送问题)一、问题描述每个人在日常生活中常常都离不开牛奶,大学生也是这样,天天喝牛奶能较好的补充体力,给我们能量去更好的学习生活。

运筹学课程设计程序

运筹学课程设计程序

组别:第九组设计人员:设计时间:2013年7月1日---2013年7月12日所用语言: C语言具体程序如下:#include<stdio.h>#include<math.h>float A[7][10]; //约束条件行列系数矩阵float C[10]; //目标函数中各个变量的系数float b[7]; //约束条件右端常数float CB[7]; //基变量的系数float in_out[7]; //存放出基与入基的中间变化临时矩阵float testnum[10]; //存储检验数矩阵float x[10];int footsign[7]={4,5,6,7,8,9,10}; //基变量的脚标float maxZ; //目标函数值void input();//此函数用于输入已知int master_row();//此函数用于确定主元列int master_line(int r);//此函数用于确定主元行void interchange(int x,int y);//此函数用于做行列变换main(){int i,j=0;int footS; //脚标值减1是所在数组的位置input();while(5) //输出结果{if(master_row()==1){printf("\n最优解如下:\n\n");for(j=0; j<7; j++){footS=footsign[j]-1;x[footS]=b[j];}printf("X1=%.1f\nX2=%.0f\nX3=%.1f\n",x[0],x[1],x[2]);printf("\n最优值如下:\n\n");for(i=0; i<10; i++){maxZ=maxZ+x[i]*C[i];//计算最优值}printf("maxZ=%.1f\n\n",maxZ);break;}master_line(master_row());interchange(master_line(master_row()),master_row());}return 0;}void input(){int i,j;printf("目标函数中变量的系数:\n");for(i=0; i<10; i++)scanf("%f",&C[i]);for(i=0; i<10; i++)testnum[i]=-C[i];//目标函数系数写入初始表要变号printf("约束条件左端系数矩阵:\n");for(i=0; i<7; i++)for(j=0; j<10; j++)scanf("%f",&A[i][j]);printf("约束条件右端常数项:\n");for(i=0; i<7; i++)scanf("%f",&b[i]);for(i=0; i<7; i++){CB[i]=C[footsign[i]-1]; //用目标函数系数转换基变量系数}}int master_row(){int i,row=0;float mrow=0;for(i=0; i<10; i++)if(testnum[i]>=0)//检验数都大于零,计算结束return 1;else{for(i=0; i<10; i++){if(testnum[i]<mrow) //确定主元列{mrow=testnum[i];row=i;//row为主元列值}}return row;}}int master_line(int r){float master_num=9999999999.9;//定义一个无穷大int i,row,line;float mline;row=r;for(i=0; i<7; i++){if(A[i][row]>0)in_out[i]=b[i]/A[i][row];else in_out[i]=master_num;}mline=master_num;for(i=0; i<7; i++) //确定主元行{if(mline>=in_out[i]){mline=in_out[i];line=i;//line为主元行值找到in_out数组中最小的数 }}footsign[line]=row+1;CB[line]=C[row];return line;}void interchange(int x,int y)//迭代过程{int i,j,line,row;line=x; //主元行row=y; //主元列b[line]=b[line]/A[line][row];//将变换主元所在行的b值for(j=0; j<10; j++)//变换主元所在行的其他x值A[line][j]=A[line][j]/A[line][row]; //主元化为1for(i=0; i<7; i++) //主元所在列其余元素化为零{if(i!=line)//除主元所在行的其他行if(A[i][row]!=0){b[i]=b[i]-b[line]*A[i][row];//变换除主元所在行的其他行的b 值for(j=0; j<10; j++)//变换主元所在行的其他x值A[i][j]=A[i][j]-A[line][j]*A[i][row];}}for(i=0; i<10; i++)testnum[i]=testnum[i]-A[line][i]*testnum[row];//主元所在列检验数化为零}。

运筹学课程设计报告

运筹学课程设计报告

运筹学课程设计报告运筹学是一门研究如何在限制条件下,通过优化方法来达到最佳决策的学科。

它是一门综合性强、应用广泛的学科,包括线性规划、整数规划、非线性规划、动态规划、图论等多个领域。

在实际生产和管理中,运筹学的应用十分广泛,如物流系统优化、供应链管理、生产调度、资源分配等方面都有用武之地。

本次课程设计的主要任务是通过一个实际案例来学习和应用运筹学的理论知识,掌握运筹学的分析方法和解决问题的实际操作能力。

案例背景某公司是一家生产和销售化妆品的企业,主要产品包括洗面奶、面霜、精华液等多个系列。

由于产品种类繁多,生产调度和物流配送非常复杂,需要考虑多个因素,如生产成本、物流成本、配送时间等。

为了实现最优化的生产和物流调度,公司希望运用运筹学的方法来规划生产和物流过程,降低成本,提高效率。

解决方案1. 线性规划模型针对生产调度问题,可以采用线性规划模型来求解最优化方案。

首先需要确定决策变量,如生产数量、生产时间等;然后确定目标函数和限制条件,如最小化生产成本、保证生产数量满足需求等。

2. 整数规划模型在物流配送方面,可以采用整数规划模型来求解最优化方案。

由于物流配送需要考虑多个因素,如配送时间、物流成本等,因此需要将决策变量离散化。

例如,将配送时间划分为几个时间段,将物流成本设定为整数等。

然后可以根据目标函数和限制条件来求解最优化方案。

3. 动态规划模型在面对复杂的生产调度和物流配送问题时,可以采用动态规划模型来求解最优化方案。

动态规划是一种递推算法,可以将问题分解成多个子问题来求解。

例如,在物流配送中,可以将整个配送过程分解为多个子过程,并通过动态规划算法来求解最优化方案。

4. 图论模型在物流配送中,可以采用图论模型来求解最优化方案。

图论是研究图和网络的学科,可以将物流配送过程表示为一个图,通过图的算法来求解最优化方案。

例如,可以采用最小生成树算法来求解最优的物流配送路线。

结论通过本次课程设计,我们学习了运筹学的理论知识,并应用到实际案例中,掌握了运筹学的分析方法和解决问题的实际操作能力。

运筹学报告

运筹学报告

实验报告课程名称运筹学实验项目名称应用EXCEL求解线性规划问题班级与班级代码实验室名称(或课室)专业任课教师学号:姓名:实验日期:2012 年10 月19 日姓名实验报告成绩评语:指导教师(签名)年月日说明:指导教师评分后,实验报告交院(系)办公室保存。

实验一:Excel 的规划求解一、 实验目的1.了解Microsoft Office 软件中Excel 的基本功能; 2.会在Excel 中建立线性规划模型; 3.熟练使用Excel 求出线性规划问题的解。

二、 预备知识运筹学理论学习。

三、 实验设备相关的硬件及EXCEL 规划求解等。

四、 实验内容第一题 :求解线性规划问题:2145m in x x Z +=第二题:求下列问题的最优解和最优值。

A 医院放射科目前可以开展X 线平片检查和CT 检查业务,现拟购买磁共振仪,以增设磁共振检查业务。

为此A 医院收集了有关信息,从医院获取最大利润角度出发,问是否应购买磁共振仪?经过资料收集,A 医院估计今后放射科如果开展此3项业务,在现有放射科医务人员力量和病人需求的情况下,每月此3项业务的最多提供量为1800人次。

平均每人次检查时间、每月机器实际可使用时间、平均每人次检查利润如下表2-25。

表 放射科3项检查时间与利润及机器可使用时间第三题:投资项目组合问题⎪⎪⎩⎪⎪⎨⎧≥=+≥+≥+0,24323692122..21212121x x x x x x x x t s兴安公司有一笔30万元的资金,考虑今后三年内用于下列项目的投资: 1) 三年内的每年年初均可投资,每年获利为投资额的20%,其本利可一起用于下一年投资;2) 只允许第一年初投入,于第二年末收回,本利合计为投资额的150%,但此类投资限额不超过15万元;3) 允许第二年初投入,于第三年末收回,本利合计为投资额的160%,但此类投资限额不超过20万元;4) 允许第三年初投入,年末收回,可获利40%,但限额为10万元;试为该公司确定一个使第三年末本利和为最大的投资组合方案。

《运筹学》运输问题课程设计报告

《运筹学》运输问题课程设计报告

《运筹学》运输问题课程设计报告一、课程设计的目的«运筹与最优化方法»是信息与运算科学专业的一门重要的专业课程,是一门综合应用课程。

要紧内容包括:线性规划、整数规划、动态规划、非线性规划、库存论、排队论、博奕论、图与网络分析的差不多概念、方法和模型等,以及有广泛应用前景的运筹学问题的启发式算法。

«运筹学与最优化方法»中的运输问题是一种应用广泛的网络最优化模型,该模型的要紧目的是为物资调运,车辆调度选择最经济的运输路线。

«运筹学与最优化方法»运输问题课程设计的目的是为了适应信息治理与信息系统培养目标的要求,使我们学习把握如何应用运筹学中的数量方法与模型来分析通过运算机来实现研究现代企业生产与技术治理以及经营治理决策问题。

课程设计使我们能成熟的明白得和应用运筹学模型,使我们认识运筹学在生产与技术治理和经营治理决策中的作用,领会其差不多思想和分析与解决问题的思路。

为我们以后毕业参加工作单位的策略策划打下坚实的基础。

二、课程设计地点:第三实验楼4楼, 运筹学实验室三、课程设计时刻:第十八周,第十九周四、课程设计原理与过程〔一〕运输问题的内容及其解决方法运输问题是一种应用广泛的网络最优化模型,该模型的要紧目的是为物资调运、车辆高度选择最经济的运输路线。

有些问题,如m 台机床加工零件问题、工厂合理布局问题,虽要求与提法不同,经适当变化也能够使用本模型求得最付佳方案。

运输问题的一样提法: 某种物资有m 个产地Ai ,产量是ai 〔i =1,2,…,m 〕,有m 个销售地Bi ,销量(需求量)是bj(j=1,2,…,m)。

假设从Ai 运到Bi 单位运价为dij(i=1,2,…,m;j=1,2,…,m),又假设产销平稳,即 ∑∑===mi nj j i b a 11问如何安排运输可使总运费最小?假设用x ij (i=1,2,…,m;j=1,2,…,n)表示由A i 运到B j 的运输量,那么平稳运输问题可写出以下线性规划模型: ∑∑===mi nj ij ij x d Z 11min约束条件⎪⎪⎪⎩⎪⎪⎪⎨⎧==≥====∑∑==),...,2,1;...,2,1(0)...,2,1()...,2,1(11n j m i x n j b x m i a x ij m i j ij nj i ij 具体问题如下:三个工厂B 1,B 2,B 3,它们需要同一种原料,数量分别是72吨、102吨、41吨,另外有三座仓库A 1、A 2、A 3能够供应上述原料56吨、82吨、77吨,由于工厂和仓库位置不同,单位运价不同,具体数据如表1。

运筹学课程设计报告

运筹学课程设计报告
+ 瀛"))=mm /(XC^ +抄怂㈤
得迭代新点渺+件燃—乂"
(5)检验是否满足迭代终止条件II疗优妍IIW,?若满足,停止迭代,输出最优
解:
(6)检查迭代次数,若k=n,则置又如)T 泌),转向步骤(2);若k<n,则进行下一
(7)计算:
A5)+ AAW)TA如)o
然后,置k+1-k,转向步骤(3)o
//搜索方向
g[0]=-h[0]*p[0]-h[1]*p[1];
g[1]=-h⑵*p[0]-h[3]*p[1];
printf("\n\n");
while(!(p[0]<e&&p[1]<e))
{
d[0]=p[0];
d[1]=p[1];
y[0]=x[0];
y[1]=x[1];
a=buchang1(p,x,h);
]+h[3]*c[1]*c[1])/(b[0]*c[0]+b[1]*c[1]))-(h[1]*b[0]*c[0]+h[3]*b[0]*c[1]-b[1]*(h[0]*c[0]+h[1]*c [1]))/(b[0]*c[0]+b[1]*c[1]);
h[2]=h[2]+((b[0]*b[1])/(b[0]*c[0]+b[1]*c[1]))*(1+(h[0]*c[0]*c[0]+h[2]*c[1]*c[0]+h[1]*c[0]*c[1
(float a,d,e,f;
e=2*(x[0]-x[1])*(h [2]*p[0]+h[3]*p[1]-h[0]*p[0]-h[1]*p[1]);

运筹学课程设计源代码-题目是《某商店要制订明年第一季度某种商品的进货和销合集1篇

运筹学课程设计源代码-题目是《某商店要制订明年第一季度某种商品的进货和销合集1篇

运筹学课程设计源代码-题目是《某商店要制订明年第一季度某种商品的进货和销合集1篇运筹学课程设计源代码-题目是《某商店要制订明年第一季度某种商品的进货和销 1题目:某商店要制订明年第一季度某种商品的进货和销售计划。

一直该店的仓库容量最多可存储该种商品500件,而今年年底有200件存货。

该店在每月月初进货一次。

一直各月份进货和销售该种商品的单价如下表所示。

问每个月应进货和销售该种商品个多少件,才能使总利润最大。

并按要求分别完成下列分析:(1)2月份的进货单价在何范围内变化时最优进销策略不变?(2)3月份的售价在何范围内变化是最优进销策略不变?(3)第一月份初库1.所建模型1.1 设定变量设x1为一月份的进货量x2 为二月份的进货量x3为三月份的进货量x4为一月份的销售量x5为二月份的销售量x6为三月份的销售量2.2 约束条件的确定一月份的进货量加月初库存量小于总库存量:x1 ≤300 一月份的销售量小于总库存量:__1+ x4 ≤200 二月份的进货量月初加库存量小于总库存量:x1+ x2–x4≤300二月份的销售量小于总库存量:__1–x2+ x4+ x5 ≤200 三月份的进货量加月初库存量小于总库存量:x1+x2+ x3–x4–x5 ≤300 三月份的`销售量小于总库存量:__1–x2–x3+ x4+ x5+ x6 ≤200 2.3 根据题意推理maxZ=-8 x1-6 x2-9 x3+9 x4+8 x5+10 x6x1 ≤300 __1+ x4 ≤200 x1+ x2–x4≤300__1–x2+ x4+ x5 ≤200 x1+x2+ x3–x4–x5 ≤300 __1–x2–x3+ x4+ x5+ x6 ≤200xi ≥0 ,i=1、2、3、4、5、62.4 计算机求解前的手工数据准备将原问题的所有约束条件添加人工变量x7、x8、x9、x10、x11、x12 maxZ=-8 x1-6 x2-9 x3+9 x4+8 x5+10 x6 x1 + x7 =300__1+ x4 + x8 =200 x1+ x2–x4 + x9 =300__1–x2+ x4+ x5 + x10 =200 x1+x2+ x3–x4–x5 + x11 =300 __1–x2–x3+ x4+ x5+ x6+ x12 =200xi ≥0,i=1、2、3、4、5、6、7、8、9、10、11、12 3、程序流程图二、//程序源代码JSP 部分=value=“开始"//prompt("please input base variable quantity divideby '$':","");//输入框Js 脚本代码function yemian(jj,ii,get_re,base_variable_arr,arr_first_varry){//画出两阶段法的页面vartb_body="",tr_value="",tab_value="",input_value="",i=1,j=1; vartr1_value=new Array();var arr_input_value_2=new Array(); var arr_get_re=new Array();if(get_re!==nullget_re!=""){ arr_get_re=get_re.toString().substring(0,get_re.l ength-1).split("#");//中间所有的数据arr_input_value_2=arr_get_re.toString().substring(0,arr_get_re.length-1).split(",");//第二行的数据}if(arr_first_varry==null){ arr_first_varry=new Array(); for(varkk=1;kkkk++){ var X_j="X"+kk.toString(); arr_first_varry.push(X_j); } } while(i=ii){ while(i==1){//第一行var fs_wz=0;tr_value=first_line(i,jj,fs_wz,arr_first_varry);//fs_wz__负数位置i++; }while(i==2){//prompt("please input base variable quantity divideby '$':","");//输入框Js 脚本代码function yemian(jj,ii,get_re,base_variable_arr,arr_first_varry){//画出两阶段法的页面var tb_body="",tr_value="",tab_value="",input_value="",i=1,j=1;var tr1_value=new Array();var arr_input_value_2=new Array();var arr_get_re=new Array();if(get_re!==nullget_re!=""){arr_get_re=get_re.toString().substring(0,get_re.length-1).split("#");//中间所有的数据arr_input_value_2=arr_get_re.toString().substring(0,arr_get_re.length-1).split(",");//第二行的数据}if(arr_first_varry==null){arr_first_varry=new Array();for(var kk=1;kkkk++){var X_j="X"+kk.toString();arr_first_varry.push(X_j);}}while(i=ii){while(i==1){//第一行var fs_wz=0;tr_value=first_line(i,jj,fs_wz,arr_first_varry);//fs_wz__负数位置i++;}while(i==2){tr_value+=second_line(i,jj,arr_input_value_2);i++;}if(i=3i=ii){tr_value+=mid_line(ii,jj,arr_get_re,base_variable_arr);break;}}/*if(i=ii){for(var row_i=i;row_irow_i++){if(row_i==1){//第一行var fs_wz=0;tr_value=first_line(row_i,jj,fs_wz,arr_first_varry);//fs_wz__负数位置row_i++;}else if(row_i==2){tr_value+=second_line(row_i,jj,arr_input_value_2);row_i++;}else if(row_i=3row_i=ii){tr_value+=mid_line(ii,jj,arr_get_re,base_variable_arr);// break;}}}*/tab_value=""+tr_value+"";tb_body=document.getElementById("div1");tb_body.innerHTML=tab_value;// hidden();document.getElementById("hidden1").value=jj;//把列数值jj赋给隐含文本document.getElementById("hidden2").value=ii;//把行数值ii赋给隐含文本}function first_line(i,jj,fs_wz,arr_first_varry){//第一行function:Add_Row(),Add_Column();Delete_Column()var td_value1="",td1_value="",Xj="",tr_value1="",Xj_all="";for(var j=1;jj++){Xj_all+=arr_first_varry[j-1].toString()+"$";td_value1=td_value1+""+arr_first_varry[j-1]+"";}}var base_input1=document.getElementById("first_bl");//变量存入隐含文本__7.10 base_input1.value=Xj_all; td1_value="XBb"+td_value1;//td1_value=td1_value+td_value1;//前两单元格tr_value1=""+td1_value+""; return tr_value1;function second_line(i,jj,arr_input_value_2){//第二行function:Result(),Delete_Row() vartd_value2="",td2_value="",txt_id="",tr_value2="" ,Xj="",input_str="";for(var j=0;jj++){if(arr_input_value_2[j]=="undefined"||arr_input_value_2[j]==null){arr_input_value_2[j]=""; }txt_id="txt"+i.toString()+j.toString();input_str="" ;td_value2=td_value2 +""+input_str+"";}td2_value="Z"+td_value2;tr_value2=""+td2_value+"";////alert("tr_value2 =="+tr_value2);return tr_value2;}function mid_line(ii,jj,arr_get_re,base_variable_arr){//中间行var arr_input_value_mid=new Array();vartd3_value="",td_value3="",txt_id="",txt_id1="",select_option1="",tr_value_m id=""; if(base_variable_arr==null){base_variable_arr=new Array()}for(var i=3;i=parseInt(ii);i++){arr_input_value_mid[i-3]=new Array();//alert("arr_get_re 2222 =="+arr_get_re.toString());if(arr_get_re!=""arr_get_re!="undefined"i=parseInt(ii)){//if(arr_get_re[i-2]!=""arr_get_re[i-2]!="undefined"){arr_input_value_mid[i-3]=arr_get_re[i-2].toString().substring(0,arr_get_re[i-2].length).toString().split(",");/////////////////}}else{arr_input_value_mid[i-3]=new Array();for(var n=0;narr_input_value_mid[i-3][n]="";}}for(var j=0;jj++){txt_id="txt"+i.toString()+j.toString();if(arr_input_value_mid[i-3][j]=="undefined"||arr_input_value_mid[i-3][j]==null){ arr_input_value_mid[i-3][j]="";}var X_value1="" ;td_value3 +=""+X_value1+"";}if(base_variable_arr[i-3]==null||base_variable_arr[i-3]==""||base_variable_arr[i-3]=="undefined"){base_variable_arr[i-3]="";}select_option1="td3_value +=""+base_variable_arr[i-3]+""+td_value3+"";tr_value_mid+=""+td3_value+"";td3_value="";td_value3="";}return tr_value_mid;}function Go_on() {//转标准形式var ii = 0, jj = 0;var input_value_str = "", get_re = "";var arr_input_value = new Array();//var aa=prompt("please input base variable quantity divideby'$':","");//输入基变量用"$" 做分隔符var aa = prompt("输入基变量用$ 做分隔符(例如X2$X3)", "");//输入基变量用"$" 做分隔符var base_variable_arr = new Array();if (aa != "" aa != null aa != "undefined") {document.getElementById("basic_standard").value=aa;base_variable_arr = aa.toString().split("$");// var base_input = document.getElementById("basic_standard");//基变量存入隐含文本__7.10// base_input.value = aa;}jj = parseInt(document.getElementById("hidden1").value);ii = parseInt(document.getElementById("hidden2").value);get_re = get_input_value(ii, jj);var get_res = get_re.replace(/,#/g, "#");var base_input2 = document.getElementById("mid_value");//基变量存入隐含文本__7.10base_input2.value = get_res;yemian(jj, ii, get_re, base_variable_arr);}function get_input_value(ii,jj){//获取table值input+select__ var txt_id="",input_value_str="",input_value_all="";for(var i=2;ii++){for(var j=0;jj++){txt_id="txt"+i.toString()+j.toString();input_value_str+=document.getElementById(txt_id).value+","; }input_value_str+="#";}return input_value_str;}function Add_Column(){//增加一列var ii=0,jj=0,get_re="";jj=parseInt(document.getElementById("hidden1").value)+1; ii=parseInt(document.getElementById("hidden2").value);get_re=get_input_value(ii,jj-1).toString();yemian(jj,ii,get_re);}function Delete_Column(){//删除一列var ii=0,jj=0,get_re="";jj=parseInt(document.getElementById("hidden1").value)-1;ii=parseInt(document.getElementById("hidden2").value);get_re=get_input_value(ii,jj+1).toString().substring(0,get_input_value(ii,jj+1) .length-1); yemian(jj,ii,get_re);}function Add_Row(){//增加一行var ii=0,jj=0,get_re="";jj=parseInt(document.getElementById("hidden1").value);ii=parseInt(document.getElementById("hidden2").value)+1;get_re=get_input_value(ii-1,jj).toString()+"#";yemian(jj,ii,get_re);}function Delete_Row(){//删除一行var ii=0,jj=0,get_re="";jj=parseInt(document.getElementById("hidden1").value);ii=parseInt(document.getElementById("hidden2").value)-1;get_re=get_input_value(ii+1,jj).toString().substring(0,get_input_value(ii+1,jj) .length-1); yemian(jj,ii,get_re);}function Result(){ //计算出最后结果,显示在页面上var str_base="",str_varry="",str_mid="";//var arr_base=new Array();var arr_varry=new Array();var arr_mid=new Array();var ew_arr_mid=new Array();var jj=0, ii=0;jj=parseInt(document.getElementById("hidden1").value);ii=parseInt(document.getElementById("hidden2").value);str_base=document.getElementById("basic_standard").value;;str_varry=document.getElementById("first_bl").value;str_mid=document.getElementById("mid_value").value;str_mid=str_mid.toString().substring(0,str_mid.length-1);// alert("str_base =="+str_base +" str_varry =="+str_varry +" str_mid //7_11_15_43 ls//arr_base=str_base.toString().split("$");arr_varry=str_varry.toString().substring(0,str_varry.length-1).split("$"); arr_mid=str_mid.toString().split("#");for(var k=0;kew_arr_mid[k]=new Array();ew_arr_mid[k]=arr_mid[k].toString().split(",");}for(var k=0;kfor(var j=0;jif(ew_arr_mid[k][j]==""){//alert("是空格啊");ew_arr_mid[k][j]=0;}else {ew_arr_mid[k][j]=parseFloat(ew_arr_mid[k][j]);}}}var arr_not_base_loc=find_not_base_loc(str_base,arr_varry);var fs_loc_min=first_line_juge(arr_not_base_loc,ew_arr_mid);=="+str_mid);if(fs_loc_min!=-1){alert("__2222这是基变量啊str_base============"+str_base); workout_result(ew_arr_mid,str_base,arr_varry,fs_loc_min,jj,ii);////__ }else{aler t("__已经是最优解,无需继续计算!");}}function find_not_base_loc(str_base,arr_varry){//找出非基变量的位置//var arr_loc_jl=new Array();var arr_loc_jl="";for(var i=0;ivar ss=arr_varry[i].toString();var loc_jl=str_base.toString().indexOf(ss,0);if(loc_jl==-1){arr_loc_jl=arr_loc_jl+(i+1)+",";//break;}}alert("非基变量的位置===="+arr_loc_jl);return arr_loc_jl;}function first_line_juge(arr_not_base_loc,ew_arr_mid){//找出非基变量负数最小的位置var fs_loc=-1,n_b_min=0;var arr_not_base=new Array();arr_not_base=arr_not_base_loc.split(",");for(var k=0;kvar kk=parseInt(arr_not_base[k]);var n_b_judge=parseInt(ew_arr_mid[kk]);if(n_b_judgen_b_min=n_b_judge;fs_loc=kk}}alert("主元所在的列数==="+fs_loc);return fs_loc;}//ew_arr_mid 中间数组串;str_base 基变量串;arr_varry 首行的数组;fs_loc_min 主元所在列;function workout_result(ew_arr_mid,str_base,arr_varry,fs_loc_min,jj,ii){ var bz_min_loc=-1;//记录最小位置var bz_jl=__;//记录基变量与最小负数列的比值确定换入换出变量//7_11_16_18 lsvar arr_base=new Array();arr_base=str_base.split("$"); for(var k=1;k0){ } } varbz_pd=ew_arr_mid[k]/ew_arr_mid[k][fs_loc_min];//比值if(bz_pd=0){ bz_jl=bz_pd; bz_min_loc=k; } if(bz_min_loc==-1){//比值全部为负(不是单纯刑法,未处理)alert("此题用单纯型法无法求解"); } else if(bz_min_loc!=-1){//arr_base[bz_min_loc-1]=arr_varry[fs_loc_min-1];//互换换入换出变量(arr_varry[fs_loc_min-1] 为X1,X2)(bz_min_loc 行)//7_11_16_26 lsarr_base[bz_min_loc-1]=arr_varry[fs_loc_min-1];//互换换入换出变量(arr_varry[fs_loc_min-1] 为X1,X2)(bz_min_loc 行)var jz_cs_z=ew_arr_mid[bz_min_loc][fs_loc_min];//(取出主元)基准乘数for(var m=0;mm++){//主元行除以主元值(主元化为1)ew_arr_mid[bz_min_loc][m]=ew_arr_mid[bz_min_loc][m]/jz_cs_z;}var a=1;//行下表出错for(var n=0;nvar jz_cs_f=ew_arr_mid[n][fs_loc_min];//基准乘数for(var j=0;jj++){if(n==bz_min_loc){a=1;}else if(n!=bz_min_loc){if(jz_cs_f==0){a=1;}else if(jz_cs_f!=0){ew_arr_mid[n][j]=parseInt(ew_arr_mid[n][j])+parseInt(ew_arr_mid[bz_min_l oc][j])*(-jz_cs_f);//循环改变值ew_arr_mid[n][j]=ForDight(ew_arr_mid[n][j],2);//保留两位小数a=1;}} } } str_base=""; for(var base_i=0;base_ivar fs_loc_min1=first_line_juge(arr_not_base_loc,ew_arr_mid);//找目标函数中,负数最小的位置if(fs_loc_min1!=-1){//若非基变量没有负数,则停止workout_result(ew_arr_mid,str_base,arr_varry,fs_loc_min1,jj,ii);}else{alert("__应经是最优解,无需继续计算!!!");}//得到最后结果,将最后结果显示在页面上var get_re="";for(var rr=0;rrfor(var cc=0;cccc++){get_re+=ew_arr_mid[rr][cc].toString()+",";//7_11_16_38 ls//get_re+=ew_arr_mid[rr+1][cc].toString()+",";}get_re+="#";}get_re=get_re.toString().substring(0,get_re.toString().length-1); yemian(jj,ii,get_re,arr_base,arr_varry);////////////////////////////////// }function ForDight(Dight,How){//保留小数两位Dight=Math.round(Dight*Math.pow(10,How))/Math.pow(10,How);。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《运筹学》课程设计报告姓名:班级:学号:一、问题描述1、机型指派问题机型指派优化设计是航空公司制定航班计划的重要内容,它要求在满足航班频率和时刻安排以及各机型飞机总数约束的条件下,将各机型飞机指派给相应的航班,使运行成本最小化。

本课程设计要求建立机型指派问题的数学模型,应用优化软件Lindo/Lingo进行建模求解,给出决策建议,包括各机型执行的航班子集和相应的运行成本。

2、问题描述已知某航空公司航班频率和时刻安排如《运筹学课程设计指导书》中表1所示,航班需求数据和运输距离如表2所示,其中,OrignA/P表示起飞机场,Dep.T.表示起飞时间,Dest.A/P表示目标机场,Dist表示轮挡距离,Demand表示航班需求量,Std Dev.表示需求的标准差。

该航空公司的机队有两种机型:9架B737-800,座位数162;6架B757-200,座位数200。

飞八个机场:A,B,I,J,L,M,O,S。

B737-800的CASM(座英里成本)是0.34元,B757-200是0.36元。

两种机型的 RASM(座英里收益)都是 1.2元。

以成本最小为目标进行机型指派,在成本方面不仅考虑运行成本,还必须考虑旅客溢出成本,否则将偏向于选取小飞机,使航空公司损失许多旅客。

旅客溢出成本是指旅客需求大于航班可提供座位数时,旅客流失到其他航空公司造成的损失。

旅客需求服从N(μ,σ)的正态分布。

如果机票推销工作做得好,溢出旅客并不全部损失,有部分溢出旅客将该成本航空公司其他航班,这种现象叫做“再获得”(Recapture)。

设有15%的溢出旅客被再获得。

将飞机指派到航班上去,并使飞机总成本最小。

二、分析建模1.确定决策变量经过对问题描述的分析得出,要解决飞机机型指派问题,我设定了两类变量:(1)针对各条航线的机型,令B737-800和B757-200分别为机型1和机型2,设变量Xi,j.其中101≤i≤142,j=1或2。

且对于变量Xi,j=0或1,当Xi,j=1,表示第i条航线由第j 种飞机运营。

例如,X101,1=1,则第101号航班由第1种机型飞行,且X101,2=0(2)针对机场时间节点飞机流的变量,设变量Gm,j.表示对于第m个节点上第j种机型的数量,例如,G A1,1表示A机场第1个节点上第1种机型的数量。

2.目标函数以飞机总成本最小为指派目标,而单个航班的飞机总成本包括两个部分:1.运输成本;2. 旅客溢出成本;其中运输成本的表达式为:B737-800的架数*162*0.34*该航班的轮挡距离+ B757-200的架数*200*0.36*该航班的轮挡距离;旅客溢出成本的表达式为:航班旅客溢出的期望值*1.2*该航班的轮挡距离*0.85。

详细计算公式如下:(1)营运成本 B737-800 :C1=∑iXi i Dist S CASM 1,*)(** 101≤i ≤142B757-200 :C2=∑iXi i Dist S CASM 2,*)(** 101≤i ≤142CASM 表示飞机座英里成本,S 表示飞机座位数,Dist (i )表示第i 条航线的轮挡距离(2)旅客溢出成本B737-800 :C1’=旅客溢出数期望值*机票价格 =∑-iXi i Dist RASM d E 1,*)(**)(%)151( 101≤i ≤142B757-200 : C2’=旅客溢出数期望值*机票价格 =∑-iXi i Dist RASM d E 2,*)(**)(%)151( 101≤i ≤142RASM 表示飞机座英里收益其中,对于两种机型的旅客溢出期望值 E (d )=⎰∞-cd d d f c d )()(=⎰∞--+σσμπ/)()(2/1d c c x e -(x2/2)dxμ表示航班需求量的期望,σ表示需求的标准差, c 表示飞机的座位数(3)建立目标函数Min C=C1+C2+C1’+C2’2.时空网络建模及其约束条件 (1)节点飞机平衡条件对于每种机型,在时空网络中各节点的飞机流必须保持平衡。

如某机型有一定数量航班到达,一定数量航班出发,因此该节点后该机型留下飞机数=原有飞机数+到达飞机数-离开飞机数。

下面会对各个机场的具体节点飞机流量状况进行解释说明。

(已设定B737-800为机型1, B757-200为机型2)如分析A机场的各机型飞机流量状况。

根据节点平衡条件,节点A1的约束条件:GA1,1=GA6,1-X110,1 (或者为GA1,2=GA6,2-X110,2)。

其中GA1,1代表该机场节点现存飞机数目,其中A代表机场,A1,1中前一个1代表机场A的第一个节点,第二个1代表机型1。

X110,1中代表飞入或飞出飞机架数,只能为0或1,110代表航班代号,1代表第一种机型。

以下约束条件具有相似的意义,将不作详细阐述。

并且只详尽列出节点A的约束条件,其他节点的情况可以同理写出。

对于机型1而言有如下约束条件机场A节点A2的约束条件:GA2,1=GA1,1+x131,1 Array节点A3的约束条件:GA3,1=GA2,1-x111,1节点A4的约束条件:GA4,1=GA3,1+x132,1节点A5的约束条件:GA5,1=GA4,1-x112,1节点A6的约束条件:GA6,1=GA5,1+x133,1对于机型2而言有如下约束条件节点A2的约束条件:GA2,2=GA1,2+x131,2)节点A3的约束条件:GA3,2=GA2,2+x111,2)节点A4的约束条件:GA4,2=GA3,2+x132,2)节点A5的约束条件:GA5,2=GA4,2+x112,2)节点A6的约束条件:GA6,2=GA5,2+x133,2)机场B机场I机场L机场M机场O机场S机场J(2)飞机总数约束每基地机场各机型过夜飞机数之和不超过该型飞机的总数对于机型1,有如下的总数约束:GA6,1+GB6,1+GI6,1+GJ40,1+GL6,1+GM6,1+GO6,1+GS6,1≤9对于机型2,有如下的总数约束:GA6,2+GB6,2+GI6,2+GJ40,2+GL6,2+GM6,2+GO6,2+GS6,2≤6(3)对每条航线飞机数的限制∑Xi,k=1 i代表航线,如101;k代表机型,只能是1和2。

具体表达如:X101,1+X101,2=1,并且X101,1和X101,2只能一个取0,一个取1三.模型求解Model:sets:flight/@OLE('data.xls','Flight_No')/:Dist,Demand,std_dev,Orign_AP,Dist_AP;Airport/1..8/; !个机场;airline/1..42/; !共42条航线;Timenode/1..6/; !对于除基地J机场外的7个机场,每个均有6个节点;Planetype/1,2/:seat,casm; !两种机型,座位数和座英里成本;flight_assign(flight,Planetype):x; !由航线和机型组成的指派二维变量; Airparking(Airport,airline,Planetype):G; !由机场,节点和机型组成的三维变量; link/1..84/:flightno,flag; !以对各机场的时间线节点为序的集;endsetsdata:Dist,Demand,std_dev,Orign_AP,Dist_AP=@OLE('D:\data1.xls'); !轮挡距离、航班需求量、需求标准差、起飞机场以及降落机场可从excel表格中直接读去数据;flightno,flag=@ole('D:\data2.xls');seat=162,200;casm=0.34,0.36;rasm=1.2;Recapture=0.15;enddata!objective 目标函数;min=@sum(flight_assign(i,j):x(i,j)*casm(j)*seat(j)*Dist(i)+x(i,j)*rasm*Dist(i)* std_dev(i)*(1-Recapture)*@psl(((seat(j)-Demand(i))/std_dev(i))));!目标为成本最小,运输成本和旅客溢出成本;!constraint 约束条件;@for(flight_assign:@bin(x)); !对每条航线的机型,指派后只能为0或1;@for(flight(i):@sum(Planetype(j):x(i,j))=1); !对每条航线,两种机型只能任选其一,故和为1;!各机场的节点飞机流平衡条件如下:对于第一机场(即A机场);G(1,1,1)=G(1,6,1)-x(10,1);G(1,1,2)=G(1,6,2)-x(10,2); !对两种机型过夜节点与第一个节点联系;@for(planetype(k):@for(Timenode(j)|j#ge#2:G(1,j,k)=G(1,j-1,k)+x(flightno(j) -100,k)*flag(j))); !按时间线上的节点顺序,建立平衡条件;!对于第二机场(即B机场);G(2,1,1)=G(2,6,1)-x(16,1);G(2,1,2)=G(2,6,2)-x(16,2);@for(planetype(k):@for(Timenode(j)|j#ge#2:G(2,j,k)=G(2,j-1,k)+x(flightno(j+6 )-100,k)*flag(j+6)));!对于第三机场(即I机场);G(3,1,1)=G(3,6,1)+x(40,1);G(3,1,2)=G(3,6,2)+x(40,2);@for(planetype(k):@for(Timenode(j)|j#ge#2:G(3,j,k)=G(3,j-1,k)+x(flightno(j+12 )-100,k)*flag(j+12)));!对于第四机场(即J机场);G(4,1,1)=G(4,42,1)-x(40,1);G(4,1,2)=G(4,42,2)-x(40,2);@for(planetype(k):@for(airline(j)|j#ge#2:G(4,j,k)=G(4,j-1,k)+x(flightno(j+18 )-100,k)*flag(j+18)));!对于第五机场(即L机场);G(5,1,1)=G(5,6,1)-x(1,1);G(5,1,2)=G(5,6,2)-x(1,2);@for(planetype(k):@for(Timenode(j)|j#ge#2:G(5,j,k)=G(5,j-1,k)+x(flightno(j+60 )-100,k)*flag(j+60)));!对于第六机场(即M机场);G(6,1,1)=G(6,6,1)-x(13,1);G(6,1,2)=G(6,6,2)-x(13,2);@for(planetype(k):@for(Timenode(j)|j#ge#2:G(6,j,k)=G(6,j-1,k)+x(flightno(j+66 )-100,k)*flag(j+66)));!对于第七机场(即O机场);G(7,1,1)=G(7,6,1)-x(7,1);G(7,1,2)=G(7,6,2)-x(7,2);@for(planetype(k):@for(Timenode(j)|j#ge#2:G(7,j,k)=G(7,j-1,k)+x(flightno(j+72 )-100,k)*flag(j+72)));!对于第八机场(即S机场);G(8,1,1)=G(8,6,1)-x(4,1);G(8,1,2)=G(8,6,2)-x(4,2);@for(planetype(k):@for(Timenode(j)|j#ge#2:G(8,j,k)=G(8,j-1,k)+x(flightno(j+78 )-100,k)*flag(j+78)));!每种机型的飞机总数构成的过夜飞机约束条件如下:第一种机型;G(1,6,1)+G(2,6,1)+G(3,6,1)+G(4,42,1)+G(5,6,1)+G(6,6,1)+G(7,6,1)+G(8,6,1)<=9; !第二种机型;G(1,6,2)+G(2,6,2)+G(3,6,2)+G(4,42,2)+G(5,6,2)+G(6,6,2)+G(7,6,2)+G(8,6,2)<=6; end四.结果分析1.对各条航线的机型指派结果:Variable Value Variable ValueX( 101, 1) 1.000000 X( 101, 2) 0.000000X( 102, 1) 1.000000 X( 102, 2) 0.000000 X( 103, 1) 1.000000 X( 103, 2) 0.000000X( 104, 1) 1.000000 X( 104, 2) 0.000000X( 105, 1) 1.000000 X( 105, 2) 0.000000X( 106, 1) 1.000000 X( 106, 2) 0.000000X( 107, 1) 1.000000 X( 107, 2) 0.000000X( 108, 1) 1.000000 X( 108, 2) 0.000000X( 109, 1) 1.000000 X( 109, 2) 0.000000X( 110, 1) 0.000000 X( 110, 2) 1.000000X( 111, 1) 0.000000 X( 111, 2) 1.000000X( 112, 1) 1.000000 X( 112, 2) 0.000000X( 113, 1) 0.000000 X( 113, 2) 1.000000X( 114, 1) 0.000000 X( 114, 2) 1.000000X( 115, 1) 1.000000 X( 115, 2) 0.000000X( 116, 1) 1.000000 X( 116, 2) 0.000000X( 117, 1) 0.000000 X( 117, 2) 1.000000X( 118, 1) 1.000000 X( 118, 2) 0.000000X( 119, 1) 1.000000 X( 119, 2) 0.000000X( 120, 1) 1.000000 X( 120, 2) 0.000000X( 121, 1) 1.000000 X( 121, 2) 0.000000X( 122, 1) 1.000000 X( 122, 2) 0.000000X( 123, 1) 1.000000 X( 123, 2) 0.000000X( 124, 1) 1.000000 X( 124, 2) 0.000000X( 125, 1) 1.000000 X( 125, 2) 0.000000X( 126, 1) 1.000000 X( 126, 2) 0.000000X( 127, 1) 1.000000 X( 127, 2) 0.000000X( 128, 1) 1.000000 X( 128, 2) 0.000000X( 129, 1) 1.000000 X( 129, 2) 0.000000X( 130, 1) 1.000000 X( 130, 2) 0.000000X( 131, 1) 0.000000 X( 131, 2) 1.000000X( 132, 1) 1.000000 X( 132, 2) 0.000000X( 133, 1) 0.000000 X( 133, 2) 1.000000X( 134, 1) 1.000000 X( 134, 2) 0.000000X( 135, 1) 0.000000 X( 135, 2) 1.000000 X( 136, 1) 0.000000 X( 136, 2) 1.000000 X( 137, 1) 0.000000 X( 137, 2) 1.000000X( 138, 1) 1.000000 X( 138, 2) 0.000000 X( 139, 1) 1.000000 X( 139, 2) 0.000000 X( 140, 1) 1.000000 X( 140, 2) 0.000000 X( 141, 1) 1.000000 X( 141, 2) 0.000000 X( 142, 1) 1.000000 X( 142, 2) 0.0000002.对约束条件的检验;(1)对飞机总数的约束:对于机型1: G( 1, 6, 1) 0.000000 0.000000G( 2, 6, 1) 1.000000 0.000000G( 3, 6, 1) 0.000000 0.000000G( 4, 42, 1) 3.000000 0.000000G( 5, 6, 1) 2.000000 0.000000G( 6, 6, 1) 0.000000 0.000000G( 7, 6, 1) 1.000000 0.000000G( 8, 6, 1) 2.000000 0.000000飞机总数为:1+3+2+1+2=9,满足条件对于机型2: G( 1, 6, 2) 1.000000 0.000000G( 2, 6, 2) 0.000000 0.000000G( 3, 6, 2) 0.000000 0.000000G( 4, 42, 2) 2.000000 0.000000G( 5, 6, 2) 0.000000 0.000000G( 6, 6, 2) 2.000000 0.000000G( 7, 6, 2) 0.000000 0.000000G( 8, 6, 2) 0.000000 0.000000飞机总数为:1+2+2=5,小于6 满足约束条件(2)对飞机流平衡分析仅取机场A,第一种机型为例:G( 1, 1, 1) 0.000000 X( 110, 1) 0.000000G( 1, 2, 1) 0.000000 X( 131, 1) 0.000000G( 1, 3, 1) 0.000000 X( 111, 1) 0.000000G( 1, 4, 1) 1.000000 X( 132, 1) 1.000000G( 1, 5, 1) 0.000000 X( 112, 1) 1.000000G( 1, 6, 1) 0.000000 X( 133, 1) 0.000000G(1,1,1)=G(1,6,1)-x(10,1); 0=0-0G(1,2,1)=G(1,1,1)+x(31,1) 0=0+0G(1,3,1)=G(1,2,1)-x(11,1) 0=0-0G(1,4,1)=G(1,3,1)+x(32,1) 1=0+1G(1,5,1)=G(1,4,1)-x(12,1) 0=1-1G(1,6,1)=G(1,5,1)+x(33,1) 0=1-1五.结论1.飞机机型指派结果用B737-800机型执行的航线为:101,102,103,104,105,106,107,108,109,112,115,116,118,119,120,121,122,123,124, 125,126,127,128,129,130,132,134,138,139,140,141,142用B757-200机型执行的航线为:110,111,113,114,117,131,133,135,136,1372.最小成本为:3352823元参考文献:[1]《运筹学》课程设计——指导书:南京航空航天东西,2010 。

相关文档
最新文档