关于LINDO/LINGO的学习材料
1、LINDO
这个就是一开始的那个软件,主要求解线性规划、整数规划、二次规划问题。现在版本好像是6.1。
2、GINO
一开始的时候这也是一个求非线性规划的工具,甚至她还用来求解一些非线性的方程根。它的特点是:包含了丰富的数学函数,尤其是概率函数!但是随着像Mathematica/Matlab的迅速发展,他逐渐的消亡,并演化为现在的函数引擎LINDO API,呵呵,现在版本2.0。
3、LINGO/LINGO NL
大家现在看到的LINGO8.0在一开始也是两部分:LINGO and LINGO NL,他们分别用于求解线性、整数规划以及非线性、线性、整数规划问题。可见这很混乱,所以现在就统一成为了LINGO,它与LINDO的主要主要区别在于:她内建了建模语言,可以简约的得描述大规模的优化问题。现在版本是8.0。
4、What's the best
这是一个组件,主要处理由Excell/Access生成数据文件的规划问题,安装之后会在你的Office中添加一个名为What's the best的宏,启用后会在Excell中生成一个工具条,就像Adobe的pdf插件一样。现在版本是7.0。
注解:上面这些旨在说明这些软件名字是有各自的含义的,首先要明确他们各自的长处是什么,才能有的放矢!至于学习方法,很简单,阅读、运行程序自带实例。呵呵,打算每天一个例子吧🙂一些他们的区别在具体例子中会比较说明!
说一下这里的lindo和lingo程序结构的差异:
1、基本程序架构
(1)lindo是这样的:
MAX 目标函数表达
ST
变量约束1
变量约束2
变量约束3
END
(2)lingo是这样的:
MAX=目标函数表达;
变量约束1;
变量约束2;
变量约束3;
注意:可见它们的基本frame不同,在lingo80中每个语句后面必须以分号结束,包括以开头的注释语句。
2、简单的示例
假设现在一个计算机厂商要生产两种型号的PC:标准型(standard)和增强型(turbo),由于生产线和劳动力工作时间的约束,使得标准型PC最多生产100台。增强型PC最多生产120台;一共耗时劳动力时间不能超过160小时。已知每台标准型PC可获利润$100,耗掉1小时劳动力工作时间;每台增强型PC可获利润$150,耗掉2小时劳动力工作时间。请问:该如何规划这两种计算机的生产量才能够使得最后获利最大?
这个问题是标准的线性规划,目标函数是100*standard+150*turbo最大!lindo/lingo的程序分别如下:
(1)[lindo sourcecode]:
max 100 standard+150 turbo
st
standard<=100
turbo<=120
standard+2 turbo<=160
end
运行结果如下:
LP OPTIMUM FOUND AT STEP 2
OBJECTIVE FUNCTION VALUE
1) 14500.
VARIABLE VALUE REDUCED COST
STANDARD 100.000000 0.000000
TURBO 30.000000 0.000000
ROW SLACK OR SURPLUS DUAL PRICES
2) 0.000000 25.000000
3) 90.000000 0.000000
4) 0.000000 75.000000
NO. ITERATIONS= 2
注解:第一行告知线性优化步数为2,下面是目标函数值=14500,在standard=100/turbo=30时取到;下面是对偶值。
(2)[lingo sourcecode]:
max=100*standard+150*turbo;
standard<=100;
turbo<=120;
standard+2*turbo<=160;
运行结果如下:
Global optimal solution found at iteration: 3
Objective value: 14500.00
Variable Value Reduced Cost
STANDARD 100.0000 0.000000
TURBO 30.00000 0.000000
Row Slack or Surplus Dual Price
1 14500.00 1.000000
2 0.000000 25.00000
3 90.00000 0.000000
4 0.000000 75.00000
注意:同样的一个问题,lingo却用了3次迭代!实际上lingo的长处在于它的内建的建模语言,从而刻画大型的规划问题简单,小规模的规划问题好像lindo有更好的效率!
我实际上更喜欢用lingo,总觉得她和matlab更接近一点!特别是一些基本的数学运算符。非常不习惯lindo不用*表示乘,却用空格,sigh...
从本部分介绍lingo的强大的数学优化建模语言。这是他专门为大规模优化建模提供的一套
规范语言,下面介绍简单的例子来说明他的基本组成。
一、原始问题(运输问题):
现在WW(Wireless Widgets)公司拥有6个仓库,向其8个销售商供应它的产品。要求每个
仓库供应不能超量,每个销售商的需求必须得到满足。WW公司需要决策具体的从每个仓库
运输多少产品到每个销售商。以使得所花的运输费用最少?
二、问题的已知数据:
1、产品仓库数据:
仓库编号 产品库存量
1 60
2 55
3 51
4 43
5 41
6 <