lingo的用法
发布网友
发布时间:2022-04-17 20:41
我来回答
共2个回答
懂视网
时间:2022-04-18 01:03
lingo使用的方法是:
1、根据实际问题,建立数学模型,即使用数学建模的方法建立优化模型。
2、根据优化模型,利用LINGO来求解模型。主要是根据LINGO软件,把数学模型转译成计算机语言,借助于计算机来求解。
LINGO是Linear Interactive and General Optimizer的缩写,中文名称为“交互式的线性和通用优化求解器”,是由美国LINDO系统公司(Lindo System Inc.)开发的一套专门用于求解最优化问题的软件包,用于求解线性规划和二次规划问题,LINGO可以求解非线性规划问题,也可以用于一些线性和非线性方程(组)的求解等。此外,LINGO还允许优化模型中的决策变量为整数(即整数规划),其执行速度很快 ,是求解优化模型的最佳选择。
热心网友
时间:2022-04-17 22:11
Lingo基本用法总结(除集函数部分)
LINGO是用来求解线性和非线性优化问题的简易工具。Lingo免费版可以支持30个未知数,lingo破解版可以支持几万个未知数、几万个约束条件。
当你在windows下开始运行LINGO系统时,会得到类似下面的一个窗口:
外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。在主窗口内的标题为LINGO Model – LINGO1的窗口是LINGO的默认模型窗口,建立的模型都都要在该窗口内编码实现。下面举两个例子。
例1.1 如何在LINGO中求解如下的LP问题:
在模型窗口中输入如下代码:
min=2*x1+3*x2;
x1+x2>=350;
x1>=100;
2*x1+x2<=600;
然后点击工具条上的按钮 即可。
得到如下结果:
所以当x1为250,x2为100时目标函数得到最大值。
? 算术运算符
Lingo中变量不区分大小写,以字母开头不超过32个字符
算术运算符是针对数值进行操作的。LINGO提供了5种二元运算符:
^ 乘方 ﹡ 乘 / 除 ﹢ 加 ﹣ 减
LINGO唯一的一元算术运算符是取反函数“﹣”。
这些运算符的优先级由高到底为:
高 ﹣(取反)
^
﹡/
低 ﹢﹣
运算符的运算次序为从左到右按优先级高低来执行。运算的次序可以用圆括号“()”来改变。
例:在x1+x2>=350,x1>=100,2*x1+x2<=600的条件下求2*x1+3*x2的最小值
在代码窗口中编写
min=2*x1+3*x2;
x1+x2>=350;
x1>=100;
2*x1+x2<=600;
然后单击上面菜单lingo菜单下solve键即可。
? 数学函数
标准数学函数:
@abs(x) 返回x的绝对值
@sin(x) 返回x的正弦值,x采用弧度制
@cos(x) 返回x的余弦值
@tan(x) 返回x的正切值
@exp(x) 返回常数e的x次方
@log(x) 返回x的自然对数
@lgm(x) 返回x的gamma函数的自然对数
@sign(x) 如果x<0返回-1;否则,返回1
@floor(x) 返回x的整数部分。当x>=0时,返回不超过x的最大整数;当x<0时,返回不低于x的最大整数。
最大最小函数:
@smax(x1,x2,…,xn) 返回x1,x2,…,xn中的最大值
@smin(x1,x2,…,xn) 返回x1,x2,…,xn中的最小值
边界限定函数:
@bin(x) *x为0或1
@bnd(L,x,U) *L≤x≤U
@free(x) 取消对变量x的默认下界为0的*,即x可以取任意实数
@gin(x) *x为整数
辅助函数
1.@if(logical_condition,true_result,false_result)
@if函数将评价一个逻辑表达式logical_condition,如果为真,返回true_ result,否则返回false_result
在默认情况下,LINGO规定变量是非负的,也就是说下界为0,上界为+∞。@free取消了默认的下界为0的*,使变量也可以取负值。@bnd用于设定一个变量的上下界,它也可以取消默认下界为0的约束。
例:求x1^2+3*x2-x1*x2+e^x3在 x1+x2>=350;x1+x3<50;2*x1+x2+x3<=600;x1只能取0或1;x2为整数的条件下的最小值。
在代码窗口中编写
[email=min=x1^2+3*x2-x1*x2+@exp(x3]min=x1^2+3*x2-x1*x2+@exp(x3[/email]);
x1+x2>=350;
x1+x3<50;
2*x1+x2+x3<=600;
@bin(x1);@gin(x2);
以上是lingo最基本的用法
? 逻辑运算符
LINGO具有9种逻辑运算符:
#not# 否定该操作数的逻辑值,#not#是一个一元运算符
#eq# 若两个运算数相等,则为true;否则为flase
#ne# 若两个运算符不相等,则为true;否则为flase
#gt# 若左边的运算符严格大于右边的运算符,则为true;否则为flase
#ge# 若左边的运算符大于或等于右边的运算符,则为true;否则为flase
#lt# 若左边的运算符严格小于右边的运算符,则为true;否则为flase
#le# 若左边的运算符小于或等于右边的运算符,则为true;否则为flase
#and# 仅当两个参数都为true时,结果为true;否则为flase
#or# 仅当两个参数都为false时,结果为false;否则为true
这些运算符的优先级由高到低为:
高 #not#
#eq# #ne# #gt# #ge# #lt# #le#
低 #and# #or#
例4.2 逻辑运算符示例
2 #gt# 3 #and# 4 #gt# 2,其结果为假(0)。
? 模型求解状态
@status()
返回LINGO求解模型结束后的状态:
0 Global Optimum(全局最优)
1 Infeasible(不可行)
2 Unbounded(无界)
3 Undetermined(不确定)
4 Feasible(可行)
5 Infeasible or Unbounded(通常需要关闭“预处理”选项后重新求解模型,以确定模型究竟是不可行还是无界)
6 Local Optimum(局部最优)
7 Locally Infeasible(局部不可行,尽管可行解可能存在,但是LINGO并没有找到一个)
8 Cutoff(目标函数的截断值被达到)
9 Numeric Error(求解器因在某约束中遇到无定义的算术运算而停止)
通常,如果返回值不是0、4或6时,那么解将不可信,几乎不能用。该函数仅被用在模型的数据部分来输出数据。追问if语句的使用方法是否可以讲解的详细一点?
lingo什么意思
LINGO意思是听不懂的话。lingo 变化形式:复数: lingos 易混淆的单词: LingoLINGO lingo 用法和例句:In market lingo those assets are inversely correlated .用市场行话说,这些资产呈反向关联。And tokyo 's commuter lingo doesn 't stop there-or get much cheerier .东京通勤领域的行话还有很多...
Lingo软件基础用法
lingo程序结构概述 程序以model开始,以end结束,内部包含四大部分:集合部分、数据部分、变量初始化部分与目标与约束部分。集合部分以“sets”开始,以“endsets”结束,定义所需变量。分为原始集合与导出集合两种,分别以具体语法形式呈现,用于定义集合属性。数据部分以“data”开始,以“enddata”结束,用...
lingo的用法
在默认情况下,LINGO规定变量是非负的,也就是说下界为0,上界为+∞。@free取消了默认的下界为0的限制,使变量也可以取负值。@bnd用于设定一个变量的上下界,它也可以取消默认下界为0的约束。例:求x1^2+3*x2-x1*x2+e^x3在 x1+x2>=350;x1+x3<50;2*x1+x2+x3<=600;x1只能取0或1;x...
LINGO和Excel在数学建模中的应用目录
首先,让我们从第1章开始,了解LINGO的基本用法。1.1节概述了LINGO,作为一款专业的数学优化软件,它的入门既简单又关键。它的基本用法包括建立模型、编写程序和设置参数。1.2部分详细介绍了如何利用LINGO的编程语言,构建模型,它以清晰的结构和强大的功能著称,能够高效地处理复杂的数学问题。LINGO的菜单...
如何使用LINGO软件?
本书在深入浅出地介绍LINGO基本用法和LINGO与外部文件接口的基础上,分两个层次介绍了LINGO软件及其应用:第一个层次以数学规划、图论与网络优化、多目标规划等LINGO软件常用领域为背景,介绍LINGO软件求解优化模型的常规手段和技巧。第二个层次以博弈论、存储论、排队论、决策分析、评价方法、最小二乘法等...
lingo怎么运行代码
5、Lingo基本用法总结(除集函数部分)LINGO是用来求解线性和非线性优化问题的简易工具。Lingo免费版可以支持30个未知数,lingo破解版可以支持几万个未知数、几万个约束条件。6、max=@sum(links:k*m);for(links:@bin(k));end你试一下就可以看到结果表示形式。第三个问题不太理解啥意思,我只见过...
lingo sum用法,下面图的式子完整的lingo程序怎么编啊,急求!
按照你的要求的话bai,因为你设定了一个目标函数du,所以zhi可以预计得到的矩阵fenzu是一个每行每列只dao有1个不为0的元素,且这个不为0的元素是1(因为1让目标函数取到最小值)。我在LINGO里面运行的结果,确实跟预计的一样。SETS:ROW/1..30/;COL/1..30/;MATRIX(ROW,COL):FENZU,TAG;END...
lingo中for函数用法?
for语句的格式为:@For(中间是具体的语言);中间具体的语言是:你定义的集合变量申明,然后冒号 之后就是你的运算表达式,表达式方式和正常的方式相同。比如 sets:ww/w1..w6/:x,y;endsets 定义了ww集合 for(ww(i):x(i)*y(i)
lingo问题,对专业的人来说很简单的。
然后是 data1txt文件应该放在lingo的安装目录下面。例如你是安装在D盘,那么只需要将data1txt文件放在相应的文件夹里面就是了。对于程序是不需要修改的。下面是我找的关于@FILE语句的用法:file函数 该函数用从外部文件中输入数据,可以放在模型中任何地方。该函数的语法格式为@file(’filename’)。这里...
lingo里的set具体用法
这个不是一句话可以说清楚的 建议你找个教程把集定义和集循环函数以及例子都好好看看就懂了 set的作用就是把同类的元素集合到一起组成一个集 然后可以用集循环函数方便的操作 定义写在set段 比如 sets:set1/1..10/:a,b;set2/1..8/:c,d;endsets for(set1(i):a(i)<=b(i));