本专栏的所有内容均出自《LINGO和EXCEL在数学建模中的应用》,本人仅是对书中内容做提炼、解释,如果错误请不吝指出。
LINGO是一款专门解决各种数学规划问题的软件,而许多的优化问题都可以归结为优化问题。我们来看下面一道问题。
某工厂有两条生产线,分别用来生产M和P两种型号的产品,利润分别为200元/个和300元/个,生产线的最大生产能力分别为每日100和120,生产线每生产一个M产品需要1个劳动日(一个工人工作8个小时称为一个劳动日)进行调试、检测等工作,而每个P产品需要2个工作日,该厂工人每天攻击能提供160个劳动日,假如原材料等其他日傲剑不受到限制,问应如何安排生产计划,才能使获得的利润最大?
读题可知,我们的目标是利润最大化,所以可以设立对应的目标函数:
当然,只有目标函数,若是没有对变量进行约束,那么我们的最大利润就可以无限往上增加,所以我们需要根据题意设立约束条件。
题中说明生产线对于两种产品均有最大生产能力,得约束条件1:
生产每个产品均需要一定的时间,然而每个工人有具有的时间有上限,所以可得约束条件2:
当然,个人认为这道题有点表述不清,最后的问题应该是怎么安排每个工人的生产计划吧?当然这档子事不影响我们学习lingo。
你以为到这里就结束了吗?别忘了还有隐藏条件也需要满足,就是我们生产的数量必须是整数,还得全部大于0 :
那么分析到这就结束了,我们只需要把他们归结归结,就是一个完整的数学模型了(doge),上面写了这么多就是建模过程,下面是建模结果,或者叫数学模型。
得到最终数学模型之后,就可以照着模型写进lingo中了。
!目标函数;
MAX=200*X1+300*X2;
!约束条件;
X1<=100;
X2<=120;
X1+2*X2<=160;
一个优化模型通常由目标函数、决策变量、约束条件组成。在本例中,目标函数为第一行,这里要注意,在程序中,目标函数的z字母不需要写出来;决策变量为X1,X2,在程序中无需用下标的形式体现;约束条件按照模型直接抄进去即可。
注意!在每一句话结束之后都要加英文分号,记住是英文分号!!
在程序中添加注释要用到英文感叹号,分号结束即可。
运行程序有三种方法。一是选中输入的全部代码后右击鼠标,再点击solve;二是点击菜单栏的“solver”,再点击“solve”;三是点击菜单栏的靶子按钮,如下图。
在运行过后,软件会弹出“solution report”界面.
不同的版本跳出的排版格式不同,不过基本相似。
第二行“Objective value”为最优目标函数值,为29000。
"Model class"表示规划模型的类型,“LP”表示整数规划。
中间部分先跳过,在左下方的即为各个决策变量的取值,在本题中,x1取值100,x2取值30。