版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数学规划模型概述,假期你想去旅游。假如你只去一个地方而且只有一条线路可走,反倒省心一些如果你要去许多地方,又有许多路线,许多交通工具,而你还想尽量节省路费,那么你就要考虑“最优决策”或“最优(方案)设计”的问题了最优化(optimization)是企业运作、科技研发和工程设计中常见的问题要表述一个最优化问题(即建立数学模型),应明确三个基本要素: 决策变量(decision variables) 约束条件(constraints) 目标函数(objective function),决策变量(decision variables):它们是决策者所控制的那些数量,它们取什么数值需要决策者来决策,最
2、优化问题的求解就是找出决策变量的最优取值 约束条件(constraints):它们是决策变量在现实世界中所受到的限制,或者说决策变量在这些限制范围之内取值才有实际意义 目标函数(objective function):它代表决策者希望对其进行优化的那个指标。目标函数是决策变量的函数,如果一个最优化问题的决策变量不是时间的函数,则属于静态优化(static optimization)或有限维优化(finite dimensional optimization)的范畴 按照静态优化问题的结构是否线性分为线性规划和非线性规划线性规划的特征是目标函数和约束条件中的函数都是决策变量的线性函数,并且约束是
3、必不可少的(否则不存在有实际意义的解),三要素:决策变量;目标函数;约束条件,数学规划模型的一般形式,规划问题:求目标函数在约束条件下的最值 可行解(只满足约束)与最优解(取到最优值),数学规划模型的 简单分类,线性规划(lp) 目标和约束均为线性函数 非线性规划(nlp) 目标或约束中存在非线性函数 二次规划(qp) 目标为二次函数、约束为线性 整数规划(ip) 决策变量(全部或部分)为整数 整数线性规划(ilp),整数非线性规划(inlp) 纯整数规划(pip), 混合整数规划(mip) 一般整数规划,0-1(整数)规划,连续优化,离散优化,数学规划,matlab优化工具箱能求解的优化模型
4、,优化工具箱3.0 (matlab 7.0 r14),连续优化,离散优化,无约束优化,非线性 极小 fminunc,非光滑(不可 微)优化 fminsearch,非线性 方程(组) fzero fsolve,全局 优化 暂缺,非线性 最小二乘 lsqnonlin lsqcurvefit,线性规划 linprog,纯0-1规划 bintprog 一般ip(暂缺),非线性规划 fmincon fminimax fgoalattain fseminf,上下界约束 fminbnd fmincon lsqnonlin lsqcurvefit,约束线性 最小二乘 lsqnonneg lsqlin,约束优化
5、,二次规划 quadprog,优化,线性规划,非线性规划,二次规划,连续优化,整数规划,lindo,lingo,lindo/lingo软件能求解的模型,lp qp nlp ip 全局优化(选) ilp iqp inlp,lingo软件的求解过程,lingo预处理程序,线性优化求解程序,非线性优化求解程序,分枝定界管理程序,1. 确定常数 2. 识别类型,1. 单纯形算法 2. 内点算法(选),1、顺序线性规划法(slp) 2、广义既约梯度法(grg) (选) 3、多点搜索(multistart) (选),lingo软件的功能与特点,lingo模型的优点,集成了线性(非线性) / 连续(整数)
6、优化功能 具有多点搜索 / 全局优化功能 提供了灵活的编程语言(矩阵生成器),可方便地输入模型 提供与其他数据文件的接口 提供与其他编程语言的接口 lindo api 可用于自主开发 运行速度较快,lindo 公司软件产品简要介绍,美国芝加哥(chicago)大学的linus schrage教授于1980年前后开发, 后来成立 lindo系统公司(lindo systems inc.), 网址:,lindo: linear interactive and discrete optimizer (v6.1) lindo api: lindo application programming int
7、erface (v4.1) lingo: linear interactive general optimizer (v10.0) whats best!: (spreadsheet e.g. excel) (v8.0),演示(试用)版、高级版、超级版、工业版、扩展版 (求解问题规模和选件不同),历史悠久,理论成熟,应用广泛 运筹学的最基本的方法之一,网络规划、整数规划、目标规划和多目标规划都是以线性规划为基础的。 解决稀缺资源最优分配的有效方法,使付出的费用最小或获得的收益最大。,线性规划模型,1939年前苏联康托洛维奇(kohtopobuz) 生产组织与计划中的 数学方法提出 “解乘数法”
8、。,线性规划理论的发展,美国科学院院士dantzig(丹齐克),1948年在研究美国空军资源的优化配置时提出线性规划及其通用解法 “单纯形法”。被称为线性规划之父。,线性规划之父的dantzig (丹齐克)。据说,一次上课,dantzig迟到 了,仰头看去,黑板上留了几个题目,他就抄了一下,回家后埋头苦做。几个星期之后,疲惫的去找老师说,这件事情真的对不起,作业好像太难了,我所以现在才交,言下很是惭愧。几天之后,他的老师就把他召了过去,兴奋的告诉他说他太兴奋了。dantzig很不解, 后来才知道原来黑板上的题目根本就不是什么家庭作业,而是老师说的本领域的未解决的问题,他给出的那个解法也就是单纯
9、形法。这个方法是上个世纪前十位的算法。,1960年,“最佳资源利用的经济计算” 康托洛维奇和库伯曼斯(koopmans) 。两人因对资源最优分配理论的贡献而获1975年诺贝尔经济学奖,1961年,查恩斯与库伯提出了目标规划,艾吉利提出了用优先因子来处理多目标问题。 20世纪70年代,斯姆李与杰斯开莱尼应用计算机处理目标规划问题,从1964年诺贝尔奖设经济学奖后,到1992年28年间的32名获奖者中有13人(40%)从事过与线性规划有关的研究工作,其中著名的有simon,samullson,leontief,arrow,miller等。,保罗-萨缪尔逊(paul a samuelson ), 他
10、发展了数理和动态经济理论,将经济科学提高到新的水平。他的研究涉及经济学的全部领域。于1970年获得诺贝尔经济学奖。 华西里列昂惕夫(wassily leontief) ,美国人,他发展了投入产出方法,该方法在许多重要的经济问题中得到运用。曾获1973年诺贝尔经济科学奖。 肯尼斯-j-阿罗(kenneth j. arrow),美国人,因与约翰-希克斯(john r. hicks)共同深入研究了经济均衡理论和福利理论获得1972年诺贝尔经济学奖。 牟顿-米勒(merton m. miller),1923-2000, 美国人,由于他在金融经济学方面做出了开创性工作,于1990年获得诺贝尔经济奖。,一
11、个农场有50亩土地, 20个劳动力, 计划种蔬菜,棉花和水稻. 种植这三种农作物每亩地分别需要劳动力 1/2 1/3 1/4, 预计每亩产值分别为 110元, 75元, 60元. 如何规划经营使经济效益最大.,种植蔬菜 x1 亩, 棉花 x2 亩, 水稻 x3 亩(决策变量) 以取得最高的产值的方式达到收益最大的目标. 求f=110 x1+75x2+60 x3的最大值(目标函数、优劣标准) 约束条件 x1+x2+x3 50 1/2x1+1/3x2+1/4x3 20 x1,x2,x3 0,例1 农作物种植,max : z =110 x1+75x2+60 x3 s.t. x1+x2+x3 50 1
12、/2x1+1/3x2+1/4x3 20 x1,x2,x3 0,如果规划问题的数学模型中,决策变量的取值可以是连续的,目标函数是决策变量的线性函数,约束条件是含决策变量的线性等式或不等式,则该类规划问题的数学模型称为线性规划的数学模型。 实际问题中线性的含义: 一是严格的比例性 二是可叠加性,关于线性的界定,比例性:决策变量变化引起目标的改变量与决策变量改变量成正比; 可加性:每个决策变量对目标和约束的影响独立于其它变量; 连续性:每个决策变量取连续值; 确定性:线性规划中的参数aij , bi , ci为确定值。,正则模型 决策变量: x1,x2,xn. 目标函数: z=c1x1+c2x2+c
13、nxn. 求目标函数的最小或最大 约束条件: a11x1+a1nxnb1, am1x1+amnxnbm,线性规划的数学模型及其标准化,标准化模型 决策变量 x1, x2, xn, max z = c1x1+ cnxn, s. t. a11x1+ a1nxn= b1, am1x1+ amnxn= bm, x1 0, xn 0,模型的标准化 10. 引入松弛变量将不等式约束变为等式约束 若有 ai1x1+ainxnbi, 则引入xn+i 0, 使得 ai1x1+ainxn+ xn+i =bi 若有 aj1x1+ajnxnbj, 则引入xn+j 0, 使得 aj1x1+ajnxn- xn+j =bj
14、. 且此时目标函数 z=c1x1+c2x2+cnxn+0 xn+1+0 xn+m. 20. 将目标函数的优化变为目标函数的极大化. 若求 min z, 令 z=z, 则问题变为 max z. 30. 引入人工变量,使得所有变量均为非负. 若xi没有非负的条件,则引入 xi 0和xi0, 令xi= xi xi,则可使得问题的全部变量均非负.,线性规划的对偶性和影子价格,农作物种植(续):一个农场有50亩土地,20个劳动力, 计划种蔬菜,棉花和水稻. 种植这三种农作物每亩地分别需要劳动力1/2 1/3 1/4,预计每亩产值分别为110元,75元,60元. 如果出租土地和劳动力如何规划经营使经济效益
15、最大.,决策变量: 单位土地和单位劳力出租价格分别为 y1 y2,目标函数: g=50y1+20y2,优劣准则: 应求g的最小值.(因为要达到的要求已经通过约束条件满足,决策者关心的是在基本要求达到时出租价格的心理底线是多少?标底),约束条件: y1+1/2y2 110 y1+1/3y2 75 y1+1/4y2 60 (成本不小于产值)(我出租出去要比自己种植合适。出租底线),对偶线性规划,原问题 max f=ctx s.t. ax b xi 0,i=1,2,n.,对偶问题 min f=bty s.t. aty c yi 0, i=1,2,m.,max : z =110 x1+75x2+60
16、x3 s.t. x1+x2+x3 50 1/2x1+1/3x2+1/4x3 20 x1,x2,x3 0,a 是m n 矩阵, c 是 n 1向量,b 是 m 1向量 x 是 n 1向量, y 是 m 1向量,min:g=50y1+20y2 s.t. y1+1/2y2 110 y1+1/3y2 75 y1+1/4y2 60 y1,y2 0,对偶定理: 互为对偶的两个线性规划问题 若其中一个有有穷的最优解,则另一个也有有穷的最优解,且最优值相等. 若两者之一有无界的最优解,则另一个没有可行解。,模型ii 给出了生产中资源的最低估价. 这种价格涉及到资源的有效利用,它不是市场价格,而是根据资源在生产
17、中做出的贡献确定的估价,被称为“影子价格”。,模型i 给出了生产中的资源最优分配方案。,灵敏度分析主要包括下面几个内容: 1:当约束条件的右边常数项变化的影响; 2:约束条件的系数变化的影响; 3:目标函数的系数变化的影响。 可能的影响结果: 1:最优解保持不变; 2:基变量保持不变,但值变了; 3:基本解变化。,线性规划的灵敏度分析,例:简单的线性规划(lp)问题,在空白的模型窗口中输入这个lp模型:,max 2x+3y st 4x+3y=10 3x+5y12 end,附录1:用lindo解线性规划,如图:, 程序以“max”(或“min”)开始,表示目标最大化(或最小化)问题,后面直接写出
18、目标函数表达式和约束表达式; 目标函数和约束之间用“st”分开; (或用“s.t.”,“sunject to”) 程序以“end”结束( “end” 也可以省略)。 系数与变量之间的乘号必须省略。 系统对目标函数所在行自动生成行名“1)”,对约束默认的行名分别是“2)” “3)”,用户也可以自己输入行名;行名放在对应的约束之前。 书写相当灵活,不必对齐,不区分字符的大小写。 默认所有的变量都是非负的, 所以不必输入非负约束。 约束条件中的“=”可分别用“”代替。 一行中感叹号“!”后面的文字为是注释语句,可增强程序的可读性,不参与模型的建立。,lindo程序有以下特点,模型求解,用鼠标点击工具
19、栏中的图标 , 或从菜单中选择solve|solve(ctrl+s)命令,lindo首先开始编译这个模型,编译没有错误则开始求解; 求解时会首先显示如右图所示的lindo“求解器运行状态窗口 ”。,求解器运行状态窗口显示的相应信息及含义,紧接着弹出一对话框,询问你是否需要做灵敏性分析(do range (sensitivity) analysis? )先选择“否(n)”按钮,这个窗口就会关闭。然后,再把状态窗口也关闭。,报告窗口,用鼠标选择“window | reports window”(报告窗口), 就可以查看该窗口的内容,保存文件,选择file|save(f5)命令把“结果报告”保存在一
20、个文件中(缺省的后缀名为ltx,即lindo文本文件) 类似地,回到模型窗口,可以把输入的模型保存在一个文件中。保存的文件将来可以用file | open(f3)和file | view(f4)重新打开,用前者打开的程序可以进行修改,而后者只能浏览。,如果模型有错误,运行时会弹出出错信息报告窗口(lindo error message),则需要修改模型。,例1:某家具公司制造书桌、餐桌和椅子,所用的资源有三种:木料、木工和漆工。生产数据如下表所示。,若要求桌子的生产量不超过5件,如何安排三种产品的生产可使利润最大?,解:,用desks、tables和chairs分别表示三种产品的生产量(决策变
21、量),容易建立lp模型。,在lindo模型窗口中输入模型:,max 60 desks + 30 tables + 20 chairs subject to 2) 8 desks + 6 tables + chairs = 48 3) 4 desks + 2 tables + 1.5 chairs = 20 4) desks + 1.5 tables + 0.5 chairs = 8 5) tables = 5 end,解这个模型,并对弹出的对话框 “ do range (sensitivity) analysis? ” 选择“是(y)”按钮,这表示你需要做灵敏性分析。然后,查看输出结果。,lp
22、 optimum found at step 2 objective function value 1) 280.0000 variable value reduced cost desks 2.000000 0.000000 tables 0.000000 5.000000 chairs 8.000000 0.000000 row slack or surplus dual prices 2) 24.000000 0.000000 3) 0.000000 10.000000 4) 0.000000 10.000000 5) 5.000000 0.000000 no. iterations=
23、1,输出结果的前半部分:,前半部分的输出结果的解释:,“lp optimum found at step2”表示两次迭代(旋转变换)后得到最优解。,“objective function value 1)280.000000”表示最优目标值为280。,“value”给出最优解中各变量的值:造2个书桌(desks), 0个餐桌(tables), 8个椅子(chairs)。所以desks、chairs是基变量(取值非0),tables是非基变量(取值为0)。,“slack or surplus”给出松驰变量的值。(在最优的情况下资源的剩余量) 第2行松驰变量 =24 (第1行表示目标函数,第2行对
24、应第1个约束) 第3行松驰变量 =0 第4行松驰变量 =0 第5行松驰变量 =5,“reduced cost”列出最优单纯形表中判别数所在行的变量的系数,表示当变量有微小变动时, 目标函数的变化率. 其中 基变量的reduced cost值应为0; 非基变量 xj,相应的 reduced cost值 1)表示当非基变量xj 增加一个单位时,目标函数相应减少的量( max型问题)。 2)理解为:为了使该非基变量变成基变量,目标函数中该变量前对应系数应增加的量。,本例中:变量tables对应的reduced cost值为5。 1)表示当非基变量tables 的值从0变为1时(此时假定其它非基变量保
25、持不变,但为了满足约束条件,基变量显然会发生变化),此时的最优的目标函数值为280 - 5=275。 2)理解为目前table的单价30元偏低,不值得生产,如果生产的话至少35元。,“dual price” (对偶价格)表示当对应约束有微小变动时, 目标函数的变化率. 输出结果中对应于每一个约束有一个对偶价格. 若其数值为p, 表示对应约束中不等式右端项若增加1个单位, 目标函数将增加p个单位(max型问题)。也就是相应的一个单位的该资源在生产过程中产生的效益,即其价值。 1)如果在最优解处约束正好取等号(也就是“紧约束”现有相应资源全部使用),该资源的对偶价格才可能不是0。例如本例中:第3行
26、是紧约束,对应的是资源是漆工,其对偶价格值为10,表示当紧约束 4 desks + 2 tables + 1.5 chairs = 20变为 4 desks + 2 tables + 1.5 chairs = 21时,目标函数值是280 +10 = 290。即若再增加一名漆工的话,可增加10的利润。 2)对于非紧约束(如本例中第2行木料是非紧约束),dual price 的值为0, 表示对应约束中不等式右端项的微小扰动不影响目标函数。因为最优的时候还有剩余。,输出结果的后半部分:,ranges in which the basis is unchanged: obj coefficient r
27、anges variable current allowable allowable coef increase decrease desks 60.000000 20.000000 4.000000 tables 30.000000 5.000000 infinity chairs 20.000000 2.500000 5.000000 righthand side ranges row current allowable allowable rhs increase decrease 2 48.000000 infinity 24.000000 3 20.000000 4.000000 4
28、.000000 4 8.000000 2.000000 1.333333 5 5.000000 infinity 5.000000,(报告中infinity表示正无穷 ),1.目标函数中系数变化的范围(obj coefficie nt ranges) 如本例中:目标函数中desks变量当前的系数(current coef)=60,允许增加(allowable increase)=4、允许减少(allowable decrease)= 2,说明当这个系数在60-4,60+20=56,80范围变化时,最优基保持不变。对tables、chairs变量,可以类似解释。由于此时约束没有变化(只是目标函数
29、中某个系数发生变化),所以最优基保持不变的意思也就是最优解不变(当然,由于目标函数中系数发生了变化,所以最优值会变化)。,这个部分包括两方面的敏感性分析内容:,2. 约束右端项变化的范围(right hand side ranges) 如本例中:第2行约束中当前右端项(current rhs)=48,允许增加(allowable increase)=infinity(无穷)、允许减少(allowable decrease)=24,说明当它在 48-24,48+ ) = 24, ) 范围变化时,最优基保持不变。第3、4、5行可以类似解释。不过由于此时约束发生变化,最优基即使不变,最优解、最优值也
30、会发生变化。,1.变量名由字母和数字组成,但必须以字母开头,且长度不能超过8个字符,不区分大小写字母,包括关键字(如max、min等)也不区分大小写字母。,2.对目标函数和约束用行号(行名)进行标识,这些标识会在将来的求解结果报告中用到。 行名可以和变量名一样命名,也可以只用数字命名,还可以含有中文字符,但长度同样不能超过8个字符。 为了方便将来阅读求解结果报告,建议用户总是自觉地对每个约束进行命名。 行名结束标志符号、即右括号“)”必须是英文字符,否则会出现错误。,lindo模型的一些注意事项,3.可以用“title”语句对输入的模型命名,用法是在title后面写出其名字(最多72个字符,可
31、以有汉字),在程序中单独占一行,可以在模型的任何地方。 模型命名的第一个作用类似于对模型的注释和说明。 模型命名的另一个目的,是为了方便将来阅读求解结果报告。因为用户有可能同时处理多个模型,很容易混淆模型与求解结果的对应关系。这时如果对不同模型分别进行了命名,就可以随时(例如在求解当前模型前)使用菜单命令“file|title”将当前模型的名字显示在求解结果报告窗口中,这样就容易判别每个求解结果与每个模型的对应关系。,4.模型中以感叹号“!” 开头的是注释行(注释语句,或称为说明语句),可以帮助他人或以后自己理解这个模型。实际上,每行中“!”符号后面的都是注释或说明。注释语句中可以使用汉字字符
32、 。,5.变量不能出现在一个约束条件的右端(即约束条件的右端只能是常数);变量与其系数间可以有空格(甚至回车),但不能有任何运算符号(包括乘号“*”等)。,6.模型中不接受括号“( )”和逗号“,”等符号(除非在注释语句中)。 例如: 4(x1+x2)需写为4x1+4x2;“10,000”需写为10000。,7.表达式应当已经经过化简。 如不能出现2x1 + 3x2 - 4x1,而应写成 -2x1 + 3x2等。,8.lindo 中已假定所有变量非负。若要取消变量的非负假定,可在模型的“end”语句后面用命令“free”。例如,在“end”语句后输入free vname,可将变量vname的非
33、负假定取消。,9.可以在模型的“end”语句后面用命令“sub”(即设置上界(set upper bound)的英文缩写)设定变量的上界,用命令“slb” (即设置下界(set lower bound)的英文缩写)设定变量的上下界。其用法是:“sub vname value”将变量vname的上限设定为value;“slb”的用法类似。 用“sub”和“slb”表示的上下界约束不计入模型的约束,因此lindo也不能给出其松紧判断和敏感性分析。,10.数值均衡化考虑:如果约束系数矩阵中各非零元的绝对值的数量级差别很大(相差1000倍以上),则称其为数值不均衡的。为了避免数值不均衡引起的计算问题,
34、 使用者应尽可能自己对矩阵的行列进行均衡化。此时还有一个原则, 即系数中非零元的绝对值不能大于100000 或者小于.0001。lindo 不能对lp 中的系数自动进行数值均衡化,但如果lindo 觉得矩阵元素之间很不均衡, 将会给出警告。,11. 简单错误的检查和避免: 输入模型时可能会有某些输入错误. 当问题规模较大时, 要查找错误是比较困难的。在lindo 中有一些可帮助寻找错误的功能,其中之一就是菜单命令“report | picture(alt+5)” , 它的功能是可以将目标函数和约束表达式中的非零系数通过列表(或图形)显示出来。,附录2:用matlab优化工具箱解线性规划,min
35、 z=cx,1. 模型:,命令:x=linprog(c, a, b),2. 模型:min z=cx,命令:x=linprog(c,a,b,aeq,beq),注意:若没有不等式 ,则令a= ,b= .,3. 模型:min z=cx,vlbxvub,命令: x=linprog(c,a,b,aeq,beq, vlb,vub),注意: 若没有等式约束: , 则令 aeq= , beq= .,4. 命令:x,fval=linprog() 返回最优解及处的目标函数值fval.,问题2 任务分配问题:某车间有甲、乙两台机床,可用于加工三种工件。假定这两台车床的可用台时数分别为800和900,三种工件的数量分
36、别为400、600和500,且已知用不同车床加工单位数量的不同工件所需的台时数和加工费用如下表.问怎样分配车床的加工任务,才能既满足加工工件的要求,又使加工费用最低?,解 设在甲车床上加工工件1、2、3的数量分别为x1、x2、x3,在乙车床上加工工件1、2、3的数量分别为x4、x5、x6,可建立以下线性规划模型:,编写m文件xxgh3.m如下: f = 13 9 10 11 12 8; a = 0.4 1.1 1 0 0 0 0 0 0 0.5 1.2 1.3; b = 800; 900; aeq=1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1; beq=400 600
37、 500; vlb = zeros(6,1); vub=; x,fval = linprog(f,a,b,aeq,beq,vlb,vub),结果: x = 0.0000 600.0000 0.0000 400.0000 0.0000 500.0000 fval =1.3800e+004 即在甲机床上加工600个工件2,在乙机床上加工400个工件1、500个工件3,可在满足条件的情况下使总加工费最小为13800.,注:本问题应还有一个约束条件:决策变量取整数.故它是一个整数线性规划问题。这里把它当成一个线性规划来解,求得其最优解刚好是整数,故它就是该整数规划的最优解。若用线性规划解法求得的最优解
38、不是整数,将其取整后不一定是相应整数规划的最优解,这样的整数规划应用专门的方法求解。,整数规划、0-1规划 如果要求决策变量取整数,或部分取整数的数学规划问题,称为整数规划. 如果要求决策变量只取0 或 1的线性规划问题, 称为0-1规划. 0-1 约束不一定是由变量的性质决定的, 更多地是由于逻辑关系引进问题的.,整数规划、01规划模型,整数规划问题一般形式,整数线性规划(ilp) 目标和约束均为线性函数 整数非线性规划(nlp) 目标或约束中存在非线性函数,整数规划问题的分类,纯(全)整数规划(pip) 决策变量均为整数 混合整数规划(mip) 决策变量有整数,也有实数,0-1规划 决策变
39、量只取0或1,取消整数规划中决策变量为整数的限制(松弛),对应的连续优化问题称为原问题的松弛问题,整数规划问题对应的松弛问题,下界(对min问题) 上界(对max问题),用连续优化方法求解松弛问题,如果松弛问题最优解(分量)全为整数,则也是原整数规划问题的最优解(见例2),对松弛问题的最优解(分量)舍入为整数,得到的往往不是原整数规划问题的最优解(甚至不是可行解),去掉整数限制后,可行域为点(0,0), (6,0), (0,5), p (2.25,3.75) 围成的4边形,从lp最优解经过简单的 “移动”不一定能得到ip最优解,例,lindo可用于求解线性纯整数规划或混合整数规划(ip), 模
40、型的输入与lp问题类似, 但需在end标志后定义整型变量。,0/1型的变量可由integer(可简写为int)命令来标识, 有以下两种可能的用法: int vname int n 前者只将决策变量vname标识为0/1型, 后者将当前模型中前n 个变量标识为0/1型(模型中变量顺序由模型中输入时出现的先后顺序决定, 该顺序可由输出结果中的变量顺序查证是否一致)。,一般的整数变量可用命令gin (是general integer的意思),其使用方式及格式与int 命令相似。,lindo求解整数线性规划概述,纯整数规划 - 聘用方案,决策变量:周一至周日每天(新)聘用人数 x1, x2,x7,目标
41、函数:7天(新)聘用人数之和,约束条件:周一至周日每天需要人数,连续工作5天,设系统已进入稳态(不是开始的几周),聘用方案,整数规划 模型(ip),首先在lindo模型窗口输入模型 :,min x1 + x2 + x3 + x4 + x5 + x6 + x7 subject to mon) x1 + x4 + x5 + x6 + x7 = 50 tue) x1 + x2 + x5 + x6 + x7 = 50 wed) x1 + x2 + x3 + x6 + x7 = 50 thu) x1+ x2 + x3 + x4 +x7 = 50 fri) x1 + x2 + x3 + x4 - x5 =
42、 80 sat) x2 + x3 + x4 - x5 + x6 = 90 sun) x3 + x4 - x5 + x6 + x7 = 90 end gin 7,其中“gin 7”表示7个变量都是一般整数变量。 (仍然默认为取值是非负的),求解后状态窗口中与整数相关的三个域有了相关结果:,“best ip :94”表示当前得到的最好的整数解的目标函数值为94(人)。 “ip bound :93.5” 表示该整数规划目标值的下界为93.5 (人)。 “branches :1”表示分枝数为1(即在第1个分枝中就找到了最优解)。 我们前面说过,lindo求解ip用的是分枝定界法。,显然,上面第二条“整
43、数规划目标值的下界为93.5 (人)”表明至少要聘用93.5名员工,由于员工人数只能是整数,所以至少要聘用94(人)。而第一条说明目前得到的解就是聘用94(人),所以已经是最优的了。,lp optimum found at step 8 objective value = 93.3333359 set x2 to = 4 at 1, bnd= -94.00 twin= -93.50 18 new integer solution of 94.0000000 at branch 1 pivot 18 bound on optimum: 93.50000 delete x2 at level 1
44、enumeration complete. branches= 1 pivots= 18 last integer solution is the best found re-installing best solution.,求解结果的报告窗口如下:,(接下页),objective function value 1) 94.00000 variable value reduced cost x1 0.000000 1.000000 x2 4.000000 1.000000 x3 40.000000 1.000000 x4 2.000000 1.000000 x5 34.000000 1.00
45、0000 x6 10.000000 1.000000 x7 4.000000 1.000000 row slack or surplus dual prices mon) 0.000000 0.000000 tue) 2.000000 0.000000 wed) 8.000000 0.000000 thu) 0.000000 0.000000 fri) 0.000000 0.000000 sat) 0.000000 0.000000 sun) 0.000000 0.000000 no. iterations= 18 branches= 1 determ.= 1.000e 0,报告窗口中前两行告
46、诉我们:在8次迭代后找到对应的线性规划(lp)问题的最优解,最优值=93.3333359。 lindo求解ip用的是分枝定界法,紧接着几行显示的是分枝定界的信息,在第1个分枝中设定x2=4,并在该分枝中找到了整数解,而且就是全局整数最优解,所以算法停止。旋转迭代(pivot)共18次。,后面显示的是最后的最优解:x=(0,4,40,2,34,10,4). 松弛和剩余变量(slack or surplus)仍然可以表示约束的松紧程度,但目前ip尚无相应完善的敏感性分析理论,因此reduced cost和dual prices的结果在整数规划中意义不大。,聘用方案(续) 邮局一周中每天需要不同数目
47、的雇员,设周一至少需要a1人,周二至少需要a2人,周三至少需要a3人,等等。又规定应聘者需连续工作5天,问邮局每天聘多少雇员才能既满足需求,又使聘用总人数最少。 进一步考虑,上述指全时雇员(每天工作8小时)。如果邮局也可聘用半天雇员(每天工作4小时,连续工作5天),设全时和半时雇员的工资每小时为3元和2元,并且限制半时雇员的工作量不应超过总工作量的四分之一,问邮局如何安排聘用方案,使所付工资总额最少?,分析 此时决策变量由两部分构成: 全时雇员x1,x2, x3,x4,x5,x6,x7; 半时雇员y1,y2, y3,y4,y5,y6,y7. 目标值应该是雇员的总工资,标准是最少: min : z=385xi245yi 约束条件: 每天的工作量应该折合为小时工作量(以周一的工作量为例) 8(x4x5x6x7x1)4 (y4y5y6y7y1) =8a1 半时雇员的限制 45yi=0.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 肠道感染防治措施培训
- 2024年春七年级语文下册 第四单元 13 叶圣陶先生二三事教学设计 新人教版
- 炼厂气加工工班组管理模拟考核试卷含答案
- 湿疹患者自我管理指南
- 23.3.1方差(教学设计)-2023-2024学年冀教版九年级上学期数学
- 中国公民健康素养科普
- 2025-2026学年观察物体三教学设计模板
- 2025届高考语文二轮复习:鉴赏诗歌景物形象 教学设计
- 8.3 摩擦力 教学设计-物理八年级下册教科版
- 2025-2026学年天津育婴里小学教学设计
- 红莲大桥施工方案(3篇)
- 犬脑炎毕业论文
- 安徽省江南十校2026届高三3月联考数学试卷(含解析)
- 2025-2030非洲矿业资源开发风险及投资机会评估规划
- 2025-2025高考电化学真题
- T∕WSJD 93-2025 中子外照射个人剂量监测技术规范
- 2026年南通科技职业学院单招综合素质考试题库附答案详解(模拟题)
- 香石竹生产技术
- GB/T 10801.2-2025绝热用挤塑聚苯乙烯泡沫塑料(XPS)
- 实验室5S培训课件
- 2026ACOG临床共识解读:非妊娠患者HCG阳性管理课件
评论
0/150
提交评论