logo资料库

lingo基本用法(精华版)20分钟学会.doc

第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
资料共4页,全文预览结束
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) @sin(x) @cos(x) @tan(x) @exp(x) @log(x) @lgm(x) @sign(x) @floor(x) 返回 x 的绝对值 返回 x 的正弦值,x 采用弧度制 返回 x 的余弦值 返回 x 的正切值 返回常数 e 的 x 次方 返回 x 的自然对数 返回 x 的 gamma 函数的自然对数 如果 x<0 返回-1;否则,返回 1 返回 x 的整数部分。当 x>=0 时,返回不超过 x 的最大整数;当 x<0 时,返回不低于 x 的最大整数。 最大最小函数: @smax(x1,x2,…,xn) 返回 x1,x2,…,xn 中的最大值 @smin(x1,x2,…,xn) 返回 x1,x2,…,xn 中的最小值 边界限定函数: @bin(x) @bnd(L,x,U) @free(x) @gin(x) 辅助函数 限制 x 为 0 或 1 限制 L≤x≤U 取消对变量 x 的默认下界为 0 的限制,即 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为整数的条件下的最小值。 在代码窗口中编写 min=x1^2+3*x2-x1*x2+@exp(x3); x1+x2>=350; x1+x3<50; 2*x1+x2+x3<=600; @bin(x1);@gin(x2);
以上是 lingo 最基本的用法  逻辑运算符 LINGO 具有9种逻辑运算符: 若两个运算数相等,则为 true;否则为 flase 若两个运算符不相等,则为 true;否则为 flase 若左边的运算符严格大于右边的运算符,则为 true;否则为 flase 若左边的运算符大于或等于右边的运算符,则为 true;否则为 flase 若左边的运算符严格小于右边的运算符,则为 true;否则为 flase 若左边的运算符小于或等于右边的运算符,则为 true;否则为 flase #not# 否定该操作数的逻辑值,#not#是一个一元运算符 #eq# #ne# #gt# #ge# #lt# #le# #and# 仅当两个参数都为 true 时,结果为 true;否则为 flase #or# 这些运算符的优先级由高到低为: 高 #not# 仅当两个参数都为 false 时,结果为 false;否则为 true #eq# #ne# #gt# #ge# #lt# #le# 低 #and# #or# 例 4.2 逻辑运算符示例 2 #gt# 3 #and# 4 #gt# 2,其结果为假(0)。  模型求解状态 @status() 返回 LINGO 求解模型结束后的状态: 0 1 2 3 4 5 Global Optimum(全局最优) Infeasible(不可行) Unbounded(无界) Undetermined(不确定) Feasible(可行) Infeasible or Unbounded(通常需要关闭“预处理”选项后重新求解模型,以确 定模型究竟是不可行还是无界) 6 7 Local Optimum(局部最优) Locally Infeasible(局部不可行,尽管可行解可能存在,但是 LINGO 并没有找到 一个) Cutoff(目标函数的截断值被达到) Numeric Error(求解器因在某约束中遇到无定义的算术运算而停止) 8 9 通常,如果返回值不是 0、4 或 6 时,那么解将不可信,几乎不能用。该函数仅被用在 模型的数据部分来输出数据。
分享到:
收藏