双原油问题
清华大学肖秀波梁湧老师翻译的Rardin教授的《运筹学》[1]已于今年年中出版,感谢机械工业出版社张有利老师的推荐和赠书,让我能看到如此完美的千页级宏篇译著。该书的翻译质量非常高,书中内容深入浅出,附有大量的应用案例(Application)和练习题库。尤其让人欣喜的是该著作能与计算实践密切结合,凡有计算机图案标记的练习都是与计算和软件应用相关的,彰显了运筹学的应用数学本质。有鉴于此,笔者计划对该书中的问题进行大量实践,争取达到双位数的规模,编号先从001开始。
双原油问题
双原油问题是该书中的一个案例(Application),见原书第二章,案例2-1(Page 19, Page 22)。我们对此模型进行了+Leapms建模和求解。
+Leapms生成的模型摘录
对任何问题,+Leapms都建议直接用+Leapms建模语言直接写出模型,并进行模型调试。
我们的经验是,模型调试能够发现模型的不足、促进建模的完美性,甚至可以促进对问题的更加深入的了解。
当模型调试完毕,对模型的正确性有充分的信心后,+Leapms系统可生成模型摘录,包括数学概念模型(即使用标引符号表示的数学模型)和+Leapms源码供思路交流使用。
以下是双原油问题的+Leapms模型摘录(pdf屏幕截图):
+Leapms模型求解结果
change home path done. +Leapms>load Current directory is "ROOT". ......... RLX2-1.leap ......... please input the filename:RLX2-1 ================================================================ 1: //Rardin R. L 著,肖勇波、梁湧译. 运筹学. 北京:机械工业出版社,2018 2: //Rardin-Liang&Xiao:案例2-1(Page 19, Page 22) 3: 4: min 100x1 +75 x2 5: s.t. 6: 0.3 x1+0.4x2>=2.0//汽油需求 7: 0.4x1+0.2x2>=1.5//气体燃料需求 8: 0.2x1+0.3x2>=0.5//润滑油需求 9: x1<=ub[1] //沙特原油供应量 10: x2<=ub[2] //委内瑞拉原油供应量 11: where 12: ub is a set of numbers 13: x1,x2 are variables of nonnegative numbers 14: data 15: ub={9 6} 16: ================================================================ >>end of the file. Parsing model: 1D 2R 3V 4O 5C 6S 7End. .................................. number of variables=2 number of constraints=5 .................................. +Leapms>solve The LP is solved to optimal. 找到线性规划最优解.非零变量值和最优目标值如下: ......... x1*=2 x2*=3.5 ......... Objective*=462.5 ......... +Leapms>
讨论
在原书中,双原油问题并未被当成标引模型(即对大规模模型中的变量和常量符号等实用脚标标引形式给出)举例,但因为+Leapms是一种以标引模型为主要表达方式的语言,因此此处的+Leapms还是采用的标引模型的形式。当然,+Leapms也支持非标引形式模型。
参考文献
[1] Rardin R. L 著,肖勇波、梁湧译. 运筹学. 北京:机械工业出版社,2018