lindoapi数学软件介绍
LINDO简介

LINDO 使用简介LINDO(Linear, Interactive, and Discrete Optimizer)是一个专门求解数学规划问题的软件。
它的主要设计原则是,如果一个用户只是想解决一个简单的问题,就不应该在学习LINDO 的基本特性上花费太多的准备成本。
LINDO 主要有三个基本使用模式。
对于一些中小规模的问题,LINDO 只要通过键盘输入就可以方便地实现交互性良好的操作与使用。
另外,LINDO 也可以对外建文件进行处理,只要这些文件里包含有必要的命令代码和输入数据,处理后就可以生成用于报告目的的文档。
最后,你还可以自建子程序,然后直接与LINDO 相结合形成一个包括你自己的代码和LINDO 本身的优化库的综合程序。
这里用一个例子来说明怎样利用LINDO 输入和求解一个线形规划模型。
对于这样的问题,下文中红色表示的部分往往是最值得关注的。
没有说明具体的语法,希望读者可以通过示例程序理解。
对于如下线形规划问题max 23..43103512,0z x ys t x y x y x y =+ +≤ +≤ ≥ 只需输入:MAX 2X + 3YST4X + 3Y < 103X + 5Y < 12END即可开始求解,如图所示从Solve 菜单选择Solve 命令,或者在窗口顶部的工具栏里按Solve 按钮,LINDO 就会开始对模型进行编译。
首先,LINDO 会检查模型是否具有数学意义以及是否符合语法要求。
如果模型不能通过这一步检查,会看到以下报错信息:An error occurred during compilation on line: n (产生错误的行数),LINDO 会自动跳转到发生错误的行。
我们就可以检查该行的语法错误并改正过来。
通过这一检查阶段后,LINDO 就会正式开始求解,这由一个叫LINDO solver 的处理器完成。
当solver初始化时,会在屏幕上显示一个状态窗口,如下图所示:这个状态窗口可以显示solver的进度,下表是对各项数据/控制按钮的说明:数据项/控制说明Status 给出当前解决方案的状态,可能的值包括:Optimal(最优的), Feasible(可行的), Infeasible(不可行的),Unbounded(未定的)Iterations solver的重复次数Infeasibility 多余或错误约束条件数量Objective 目标函数的当前值Best IP 标示得到最优整数解决方案值,该项只出现在IP(整数规划)模型。
LINDO与LINGO软件介绍

查看模型的统计信息, 用Reports/statistics查看模型的统计信息, 查看模型的统计信息
第一行:模型有 行 约束4行),2个变量 个变量, 个整数变量 个整数变量( 个 变量 变量), 第一行:模型有5行(约束 行), 个变量,0个整数变量(0个0-1变量), 不是二次规划. 不是二次规划 第二行:非零系数10个 约束中非零系数6个 其中 个为1或 , 其中5个为 第二行:非零系数 个,约束中非零系数 个(其中 个为 或-1),模型密度 密度=非零系数 行数* 变量数+ 为0.667(密度 非零系数 行数*(变量数+1)]) . 密度 非零系数/[行数 变量数 第三行的意思:按绝对值看,系数最小、最大分别为1和 第三行的意思:按绝对值看,系数最小、最大分别为 和8. 第四行的意思:模型目标为极大化;小于等于、等于、 第四行的意思:模型目标为极大化;小于等于、等于、大于等于约束分别有 广义上界约束(GUBS)不超过 个;变量上界约束 不超过2个 变量上界约束(VUBS)不 2、0、2个;广义上界约束 不超过 不 少于0 所谓GUBS,是指一组不含有相同变量的约束;所谓 少于0个。所谓 ,是指一组不含有相同变量的约束;所谓VUBS,是 , 指一个蕴涵变量上界的约束,如从约束X1+X2-X3=0可以看出,若X3=0,则 可以看出, 指一个蕴涵变量上界的约束,如从约束 可以看出 , X1=0,X2=0(因为有非负限制),因此 ),因此 是一个VUBS约束。 约束。 , (因为有非负限制),因此X1+X2-X3=0是一个 是一个 约束 第五行的意思:只含1个变量的约束个数=0 冗余的列数=0 第五行的意思:只含1个变量的约束个数 0个;冗余的列数 0个
版本信息,可以通过 查询.我们还 版本信息,可以通过help/about查询 我们还 查询 可以查到允许的变量个数、约束个数、 可以查到允许的变量个数、约束个数、整数 变量个数、非零系数个数等. 变量个数、非零系数个数等
Lindo软件介绍及应用

Iterations Infeasibility Objective Best IP IP Bound Branches Elapsed Time
Update Interval 状态窗口更新周期(秒)。你可以把这个值设成任何一个非 负数,如果把它设成零的话很可能会增加求解时间。 Interrupt Solver 按下该按钮,solver将立刻停止并返回当前得到的最优解。 Close 按下该按钮关闭状态窗口,solver继续运行。状态窗口可以 通过选取相应命令重新打开。
进入lindo
Lindo应用实例求解 Lindo应用实例求解
【例一】 例一】 某河流上下游相距10km,已建成灌溉泵站 某河流上下游相距10km,已建成灌溉泵站 A、B两处,灌溉甲、乙、丙三个灌区,如图 两处,灌溉甲、 丙三个灌区, 所示。 所示。甲、乙、丙各灌区所需供水量的下限 分别为400万m3、800万 600万 分别为400万m3、800万m3和600万m3,现A 两泵站供水能力分别为1200万 、B两泵站供水能力分别为1200万m3和800 万m3,每万供水费用简表。 每万供水费用简表。 两泵站应如何对甲、 问A、B两泵站应如何对甲、乙、丙三灌区供 费用最小? 水、费用最小?
Optimizer) Optimizer)
是一种专门用于求解数学规划问题的软 件包。LINDO主要用于解线性规划 主要用于解线性规划、 件包。LINDO主要用于解线性规划、非线 性规划、二次规划和整数规划等问题。 性规划、二次规划和整数规划等问题。也可 以用于一些非线性和线性方程组的求解以及 代数方程求根等。 代数方程求根等。 因此在数学、科研和工业界得到广泛应用。
返回
“DUAL PRICE”(对偶价格)列出最 PRICE”(对偶价格) 优单纯形表中判别数所在行的松弛变量的 系数,表示当对应约束有微小变动时, 系数,表示当对应约束有微小变动时,目 标函数的变化率, 标函数的变化率,输出结果中对应每一个 约束有一个对偶价格。若其数值为X, X,表 约束有一个对偶价格。若其数值为X,表 示对应约束中不等式右端项若增加一个单 目标函数将增加X个单位( 位,目标函数将增加X个单位(max 型问 )。上例中 上例中: 题)。上例中:第二行对应的对偶价格值 应为2.5表示当约束 y<10变为 应为2.5表示当约束 2)y<10变为 2) y<11时 目标函数值=145+2.5= y<11时,目标函数值=145+2.5=147.5
LINDO软件使用简介

0.2x+0.7y+0.4z<1
End
Int x
Int y Int z
运算结果如下
OBJECTIVE FUNCTION VALUE
1) 7.000000 VALUE REDUCED COST
VARIABLE
X
Y Z
1.000000
1.000000 0.000000
-4.000000
-3.000000 -2.000000 DUAL PRICES
入 模 型
max 2x+3y
st
4x+3y<10
3x+5y<12 end
2. 存储模型
ห้องสมุดไป่ตู้
用SAVE命令将问题模型以LINDO格式存入文件(自己 输入文件名),如将上述输入模型存在sf1中。 3.模型求解 选择菜单“SOLVE”,并回答提示“DO RANGE
(SENSITIVITY)ANSLYSIS(灵敏性分析)”,yes或NO
COEF
X Y 2.000000 3.000000
INCREASE
2.000000 0.333333
DECREASE
0.200000 1.500000
RIGHTHAND SIDE RANGES ROW CURRENT ALLOWABLE ALLOWABLE
RHS
2 3 10.000000 12.000000
前者只将变量vname标识为0/1型,后者将前n个变量标识 为0/1型。 还可用命令GIN将变量仅限为整数型
例如,求解整数规划
max s.t.
w 4x 3y 2z 2.5 x 3.1z 5 0.2 x 0.7 y 0.4 z 1 x, y 0, 且为0或1
Lingo简介

6. “ltx”:Lindo格式的模型文件;
7. “mps”:MPS(数学规划系统) Lingo软件模型一般由5部分组成: 1. 集合段(SETS):“SETS:”开始,“ENDSETS”结束; 2. 目标与约束段; 3. 数据段(DATA):“DATA:”开始,“ENDDATA”结束; 4. 初始化段(INIT):“INIT:”开始,“ENDINIT”结束;
无限
800 3200
无限
4000 16000
无限
Lindo/Lingo 软件简介
Lindo是英文Linear INteractive and Discrete Optimizer 字母的缩写,可求解线性规划(LP)和二次规划(QP)。
Lingo是英文Linear INteractive and General Optimizer 字母的缩写,除了具有Lindo所有功能之外,还可以用于求 解非线性规划(NLP),也可用于一些线性和非线性方程 的求解等。
Lindo/Lingo 软件简介
Lindo/Lingo内部求解器: 1. 直接求解程序(Direct Solver)
2. 线性优化求解程序(Linear Solver)
3. 非线性优化求解程序(Nonlinear Solver) 4. 分支定界管理程序(Branch and Bound Manager)
Lindo/Lingo 软件简介
美国芝加哥大学 Linus Schrage 教授于1980年前后开发 的一套专门用于求解最优化问题的软件包。 软件包括:Lindo、Lingo、Lindo API以及What’sBest! 这四款软件分为演示版(试用版)和正式版,两者的区别 在于求解问题的规模不同。正式版又可以分为求解包 (Solver Suite)、高级版(Super)、超级版(Hyper)、 工业版(Industrial)、扩展版(Extended)。
数学建模Lingo软件简介

版本类型 总变量数 整数变量数 非线性变量数 约束数
演示版 求解包 高级版 超级版 工业版 扩展版
300 500 2000 8000 32000 无限
30 50 200 800 3200 无限
30 50 200 800 3200 无限
150 250 1000 4000 16000 无限
Lingo(Linear Interactive and General Optimizer),即交互 式的线性和通用优化求解器,可求解线性规划,也可以求解非 线性规划,还可以用于一些线性和非线性方程组的求解等。 Lingo软件的最大特),而且执行速度很快。Lingo实际上还是最 优化问题的一种建模语言,包括许多常用的数学函数共建立优 化模型时调用,并可以接受其它数据文件。
2. 建立LINDO/LINGO优化模型需要注意的几个基本问题
1. 尽量使用实数优化模型,尽量减少证书约束和整数变 量的个数;
2. 尽量使用光滑优化模型,尽量避免使用非光滑函数; 3. 尽量使用线性优化模型,尽量减少非线性约束和非线 性变量的个数; 4. 合理设定变量的上下界,尽可能给出变量的初始值; 5. 模型中使用的单位的数量级要适当。
演示版和正式版的基本功能是类似的,只是试用版能够
求解问题的规模受到严格限制,对于规模稍微大些的问题就不 能求解。即使对于正式版,通常也被分成求解包(solver suite)、 高级版(super)、超级版(hyper)、工业版(industrial)、扩展版 (extended)等不同档次的版本,不同档次的版本的区别也在于 能够求解的问题的规模大小不同,下表给出了不同版本 LINGO程序对求解规模的限制:
LINDO,LINGO,LINDO API 和 What’s Best! 在最优化软件的市场上占有很大的份额,尤其在供微机上使用 的最优化软件的市场上,上述软件产品具有绝对的优势。根据 LINDO公司主页()上提供的信息,位列 全球《财富》杂志500强的企业中一半以上使用上述产品,其 中位列全球《财富》杂志25强企业中有23家使用上述产品。读 者可以从上述主页下载上面4种软件的演示版和大量应用例子。
LINDO简介

在输入的最后一行中“qcp 4” ,表示原问题中的实际约束是从输入的第四行开始的,注 意这里“s.t.”并不能算作是一行,而“c3)”行才是真正的第四行。 对该问题求解,得到的报告窗口为:
可以看出,迭代了 7 步,得到最优解(0.666667,0.333333) ,最优值 1.355556。求解二 次规划时的灵敏度分析也同整数规划类似,是没有意义的,我们无法利用。 注意在求解二次规划时,最好是将最大化问题都改写为最小化问题来求解。
目前整数规划尚无相应完善的灵敏度分析,因此检验数和影子价格无实际意义。
五、求解二次规划
利用 LINDO 求解二次规划时需要对问题进行改写才能够进行,我们通过事例来进行说 明。 例 3.求解下述二次规划问题:
2 2 + x2 − x1 x 2 + 0.4 x2 min z = 3 x1
1.2 x1 + 0.9 x 2 > 1.1 x + x = 1 1 2 s.t . x 2 < 0.7 x1 , x2 ≥ 0
题目中有三个约束条件是我们需要考虑的,而第四个约束(非负约束)在 LINDO 中可 以不去考虑,因此我们设出与有效约束数目相同的变量 L1、L2、L3,它们分别对应三个约 束,然后写出下述函数:
2 2 3 x1 + x2 − x1 x 2 + 0.4 x 2 − L1(1.2 x1 + 0.9 x 2 − 1.1)
+ L2( x1 + x 2 − 1) + L 3( x 2 − 0.7 )
由该函数可以看出,它的第一部分就是目标函数,而 L1 与第一个约束相乘,L2 与第二 个约束相乘,L3 与第三个约束相乘。由于第一个约束是“>” ,因此在 L1 前面用的是减号。 将该函数分别对两个决策变量求偏导,并令其大于零,得到两个线性约束:
数学建模软件LinDoLinGo的简介(修改)

X——表示变量X可取任意实数值。 GIN X——表示变量X只取非负整数值。 INT X——表示变量X只能取0或1。 SLB X value——表示变量X以value为下界。 SUB X value——表示变量X以value为上界。 FREE m——表示问题的前m个变量为自由变量 GIN m——表示问题前m个变量为非负整数值 INT m——表示问题前m个变量为0-1变量。
LINGO 示例
查看简单例子
LINHGO程序
Lindo模型到Lingo模型的转换
“ST”在Lingo模型中不再需要,所以删除了; 在每个系数与变量之间增加了运算符“*”;
将目标函数的表示方式从“MAX”变成“MAX=”;
每行(目标、约束和说明语句)后面均增加了一
个分号“;”; 约束的名字被放ngo中模型以“Model:”开始,以“END”结束。 对简单模型,这两个语句也可以省略。
LINDO/LINGO软件 使用简介
LinDo/LinGo简介
LINDO(Linear Interactive and Discrete Optimizer),即“交互式的线性和离散优化求解 器”,可以用来求解线性规划(LP)和二次规划 (QP); LINGO(Linear Interactive and General Optimizer),即“交互式的线性和通用优化求解 器”,除了用来求解线性规划(LP)、二次规划 (QP)和非线性规划,还可用于线性和非线性方程 组的求解。 最大的特色:允许决策变量是整数(即整数规划,包 括0-1规划)。
Lindo求解整数规划
Lindo求解整数规划程序
LP OPTIMUM FOUND AT STEP 2 OBJECTIVE VALUE = 998.811951
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
lindoapi数学软件介绍
LINDO是一种专门用于求解数学
规划问题的软件包。
由于LINDO执行速度很快、易于方便输入、求解和分析数学规划问题。
因此在数学、科研和工业界得到广泛应用。
LINDO主要用于解线
性规划、非线性规划、二次规划和整数规划等问题。
也可以用于一些非线性和线性方程组的求解以及代数方程求根等。
LINDO中包含了一种建模语言和许多常用
的数学函数(包括大量概论函数),可供使用者建立规划问题时调用。
LINDO 6.1是求解线性、整数和二个规划问题的多功能工具。
LINDO
6.1互动的环境可以让你容易得建立和求解最佳化问题,或者你可以将LINDO的最佳化引擎挂在您己开发的程序内。
而另一方面,LINDO也可以用来解决
一些复杂的二次线性整数规划方面的实际问题。
如在大型的机器上,LINDO被用来解决一些拥有超过50,000各约束条件和200,000万个变量的大规
模复杂问题
LINGO则用于求解非线性规划(NLP—NON—LINEAR PROGRAMMING)和二次规则(QP—QUARATIC
PROGRAMING)其中LINGO
6.0学生版最多可版最多达300个变量和150个约束的规则问题,其标准版的求解能力亦再10^4量级以上。
虽然LINDO 和LINGO不能直接求解目
标规划问题,但用序贯式算法可分解成一个个LINDO和LINGO能解决的规划问题。
什么是LINDO
在这里有必要先让大家知道什么是运筹学。
运筹学是近四十年来发展起来的一门新兴学科。
它的目的是为行政管理人员在作决策时提供科学的依据。
因此,它是实
现管理现代化的有力工具。
运筹学在生产管理、工程技术、军事作战、科学试验、财政经济以及社会科学中都得到了极为广泛的应用。
讲到这里,你已经被运筹学深
深吸引了吧,至于你会怎么去学不是我们讨论的问题,在这里我们只说学运筹学要用到的工具。
应用运筹学去处理问题有两个重要特征:一是从全局的观点出发;二
是通过建立模型如数学模型或模拟模型,对于要求解的问题得到最合理的决策。
好了,说到这里,LINDO该出场了,它的作用就是负责把问题的最优决策求出来,省去大量难以想象的人工计算。
如果你是运筹学的学习者,你就必须拥有
LINDO。
LINDO(Linear, INteractive, and Discrete Optimizer)是一
个解决二次线性整数规划问题的方便而强大的工具。
这些问题主要出现在商业、工业、研究和政府等领域。
已被证实LINDO能在其中发挥巨大作用的具体事务包括:产品分销、成分混合、生产与个人事务安排、存货管理……在这里不一一列举,但可以肯定的是,LINDO可以大展拳脚的领域是多不胜数的。
LINDO的主要设计原则是,如果一个用户只是想解决一个简单的问题,就不应该在学习LINDO 的基本特性上花费太多的准备成本。
例如,某个用户想解决以下这样一个问题:(看懂这个问题需要一定的运筹学知识,下面是一个实际问题的数学模型)
Maxmize 2X + 3Y
Subject to
4X + 3Y < 10
3X + 5Y < 12
那么,用户就只需要打开LINDO,然后直接输入以上内容即可。
而另一方面,LINDO也可以用来解决一些复杂的二次线性整数规划方面的实际问题。
如在大型的机器上,
LINDO被用来解决一些拥有超过50,000各约束条件和200,000万个变量的大规模复杂问题。
LINDO主要有三个基本使用模式。
对于一些中小规模的问题,LINDO只要通过键盘输入就可以方便地实现交互性良好的操作与使用,如输入一个模型是相当简单方便的事情。
另外,LINDO也可以对外建文件进行处理,只要这些文件里包含有必要的命令代码和输入数据,处理后就可以生成用于报告目的的文档。
最后,你还可以自建子程序,然后直接与LINDO相结合形成一个包括你自己的代码和LINDO本身的优化库的综合程序。
好了,别说那么多了,相信大家手都痒了,赶快用一个例子来看看它是怎样使用的。
输入一个模型
现在让我们用例子来说明怎样输入和求解一个模型。
当我们打开LINDO后,屏幕将出现以下窗口:
在外面标题为"LINDO"的是主窗口,它包含所有的其他
窗口以及所有命令菜单和工具栏。
在里面的是一个新的空白的模型窗口,等下我们就会在那里直接输入一个简单的范例模型,但在此之前,我们首先需要简明地了解一下一个LINDO模型所必须具备的基本条件和要素。
一个LINDO模型至少需要具备三个要素:目标、决策变量和约束条件。
第一个基本要素是目标,顾名思义,是指一个问题解决后所要达到的目标。
有两种目标可选择:MAX或MIN,也就是最大化或最小化。
在一个典型的经济问题里,你可能想使你的获利最大化或成本最小化。
因此,LINDO模型里的第一个字必须是MAX或是MIN。
然后,在其后输入的一个式子就叫做目标函数。
现在假设要使利益最大化,就需要输入:MAX 10X +15Y,然后回车。
那么,X和Y又是什么呢?他们是第二个要素:模型里的决策变量,LINDO就是通过调整这些变量的值,使你的利益达到最大化。
它们可以表示两种产品的销售量,或者两个不同公司的销售量。
在这里每单位X(产品)的毛利是10,Y的是15。
他们是变量,在LINDO里,从开始使用他们的时候起,他们就存在。
目标和变量就讲这么多。
现在让我们来看一下约束条件。
在某种意义上,约束条件是我们所建立的模型中最重要的部分,它们需要认真地考虑。
在前面的例子里,我们打算使式子10X +15Y的值最大,但对X和Y能卖出多少却没有加以限制,这当然不可能,因为在现实世界里会存在诸如劳动产出和有效性等限制因素。
所以我们会把X和Y的值限制在一个合理的范围之内而不是任其随意地取值。
于是我们需要在模型的另外一行里输入"SUBJECT TO"字样(或者可以只输入ST),跟着在后面分行输入X < 10 和Y < 12。
有一点值得注意的是,LINDO会将"<"符号理解为小于或等于而不是绝对的小于。
如果你喜欢的话,你可以用"<="来代替"<"。
很好,我们已经对X和Y加以限制了。
再假设我们只有有限的劳动力,如16单位的劳动力,产品X需要一个单位而Y 需要两个单位。
现在我们继续加上一条约束条件:X + 2 Y < 16。
最后,我们在另一行加上END字样以表明约束条件的结束。
这时,建立后的模型应该就是下面这个样子:
这样我们就建立了一个简单的模型,下面我们可以开始求解了。
从Solve菜单选择Solve命令,或者在窗口顶部的
工具栏里按Solve按钮,LINDO就会开始对模型进行编译。
首先,LINDO会检查模型是否具有数学意义以及是否符合语法要求。
如果模型不能通过这一步检查,会看到以下报错信息:An error occurred during compilation on line: n(产生错误的行数),LINDO会自动跳转到发生错误的行。
我们就可以检查该行的语法错误并改正过来。
通过这一检查阶段后,LINDO就会正式开始求解,这由一个叫LINDO solver 的处理器完成。
当solver初始化时,会在屏幕上显示一个状态窗口,如下图所示:
这个状态窗口可以显示solver的进度,下表是对各项数据/控制按钮的说明:数据项/控制
说明Status
给出当前解决方案的状态,可能的值包括:Optimal(最优的), Feasible(可行的), Infeasible(不可行的),Unbounded(未定的)Iterations
solver的重复次数Infeasibility
多余或错误约束条件数量Objective
目标函数的当前值Best IP
标示得到最优整数解决方案值,该项只出现在IP(整数规划)模型。
IP Bound
IP模型中目标的理论范围Branches
由LINDO IP solver分生出来的整型变量个数Elapsed Time
solver启动后所经过时间Update Interval
状态窗口更新周期(秒)。
你可以把这个值设成任何一个非负数,如果把它设成零的话很可能会增加求解时间。
Interrupt Solver
按下该按钮,solver将立刻停止并返回当前得到的最优解。
Close
按下该按钮关闭状态窗口,solver继续运行。
状态窗口可以通过选取相应命令重新打开。