LinGo基本用法总结

更新时间:2023-06-15 21:04:06 阅读: 评论:0

LinGo 基本⽤法总结
⼀、界⾯及基本⽤法
所有代码在 Lingo - Lingo 1中编写,写完后点击⼯具条上的红⾊的靶⼦运⾏
例:求解
求得x1=3,x2=1,最⼤值为4.运⽤matlab求时可以发现有两组解:x1=3,x2=1和x1=2,x2=2。通过验证也可知这两组解均满⾜。Lingo的⼀个缺陷是:每次只能输出最优解中的⼀个(有时不只⼀个)。那么,怎样求得其他解呢?⼀个办法是将求得的解作为约束条件,约束x1不等于3,x2不等于1,再求解。如下:线性整数规划 model:max=x1+x2;x1+9/14*x2<=51/14;-2*x1+x2<=1/3;@gin(x1);@gin(x2);end
1
2
3
4
5
6
7
8
9
10
11
12
求得x1=2,x2=2.若再次排除这组解,发现Lingo解不出第三组解了,这时我们可以断定:此优化模型有两组解:
x1=3,x2=1和x1=2,x2=2.
求解模型时需注意:Lingo中,默认变量均为⾮负;输出的解可能是最优解中的⼀组,要判断、检验是否还有其他解(根据具体问题的解的情况或⽤排除已知最优解的约束条件法)。
⼆、常⽤函数及运算符
1、LINGO具有9种逻辑符号
#not# 否定该操作数的逻辑值,#not#是⼀个⼀元运算符
#eq# 若两个运算数相等,则为true;否则为fla
格列佛游记全文下载
#ne# 若两个运算符不相等,则为true;否则为fla
#gt# 若左边的运算符严格⼤于右边的运算符,则为true;否则为fla
#ge# 若左边的运算符⼤于或等于右边的运算符,则为true;否则为fla
#lt# 若左边的运算符严格⼩于右边的运算符,则为true;否则为fla
#le# 若左边的运算符⼩于或等于右边的运算符,则为true;否则为fla
#and# 仅当两个参数都为true 时,结果为true;否则为fla
#or# 仅当两个参数都为fal 时,结果为fal;否则为true
这些运算符的优先级由⾼到低为:
2、Lingo中关系运算符
在LINGO中,关系运算符主要是被⽤在模型中,来指定⼀个表达式的左边是否等于、⼩于等于、或者⼤于等于右边,形成模型的⼀个约束条件。关系运算符与逻辑运算符截然不同,前者是模型中该关系运算符所指定关系的为真描述,⽽后者仅仅判断⼀个该关系是否被满⾜:满⾜为真,不满⾜为假。
LINGO有三种关系运算符:“=”、“<=”和“>=”。LINGO中还能⽤“<”表⽰⼩于等于关系,“>”表⽰⼤于等于关系。LINGO 并不⽀持严格⼩于和严格⼤于关系运算符。
3、数学函数model:max=x1+x2;x1+9/14*x2<=51/14;-2*x1+x2<=1/3;@gin(x1);@gin(x2);@abs(x1-3)>0.001;@abs(x2-1)>0.001;end
1
2
3
4
5
6
7
8
9西点培训学校
英国留学一年的费用10
11
12
13
14
15⾼  #not #    #eq #  #ne # #gt # #ge # #lt # #le #低  #and # #or #例:2 #gt# 3 #and# 4 #gt# 2,其结果为假(0)。
1
2
3
4
5
6
7
8
LINGO提供了⼤量的标准数学函数 @abs(x) 返回x 的绝对值 @sqrt() 开⽅ @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 中的最⼩值
变量界定函数 变量界定函数实现对变量取值范围的附加限制,共4种 @bin(x) 限制x 为0 或1 — ⽤于0-1规划 @bnd(L,x,U) 限制L≤x≤U @free(x) 取消对变量x 的默认下界为0 的限制,即x 可以取任意实数 @gin(x) 限制x 为整数 在默认情况下,LINGO 规定变量是⾮负的,也就是说下界为0,上界为+∞。@free 取消 了默认的下界为0的限制,使变量也可以取负值。@bnd⽤于设定⼀个变量的上下界,它也可 以取消默认下界为0的约束。
概率函数
1 . @pbn(p,n,x) ⼆项分布的累积分布函数。当 n 和(或)x 不是整数时,⽤线性插值法进⾏计算。
2.@pcx(n,x) ⾃由度为n的χ2分布的累积分布函数。
tdscdma是什么意思
3.@peb(a,x) 当到达负荷为 a,服务系统有 x 个服务器且允许⽆穷排队时的 Erlang 繁忙概率。
4.@pel(a,x) 当到达负荷为 a,服务系统有 x 个服务器且不允许排队时的 Erlang 繁忙概率。
5.@pfd(n,d,x) ⾃由度为 n 和 d 的 F 分布的累积分布函数。
6.@pfs(a,x,c) 当负荷上限为 a,顾客数为 c,平⾏服务器数量为 x 时,有限源的 Poisson 服务系统的 等待或返修顾客数的期望值。a 是顾客数乘以平均服务时间,再除以平均返修时间。当 c 和 (或)x 不是整数时,采⽤线性插值进⾏计算。
7.@phg(pop,g,n,x) 超⼏何(Hypergeometric)分布的累积分布函数。pop 表⽰产品总数,g 是正品数。从 所有产品中任意取出
n(n≤pop)件。pop,g,n 和 x 都可以是⾮整数,这时采⽤线性插值 进⾏计算。
8.@ppl(a,x)Poisson 分布的线性损失函数,即返回 max(0,z-x)的期望值,其中随机变量 z 服从均值 为 a 的 Poisson 分布。
9.@pps(a,x) 均值为 a 的 Poisson 分布的累积分布函数。当 x 不是整数时,采⽤线性插值进⾏计算。
10.@psl(x) 单位正态线性损失函数,即返回 max(0,z-x)的期望值,其中随机变量 z 服从标准正态 分布。
11.@psn(x) 标准正态分布的累积分布函数。
12.@ptd(n,x) ⾃由度为 n 的 t 分布的累积分布函数。
wire mesh13.@qrand(ed) 产⽣服从(0,1)区间的拟随机数。@qrand 只允许在模型的数据部分使⽤,它将⽤拟随机 数填满集属性。通常,声明⼀个 m×n 的⼆维表,m 表⽰运⾏实验的次数,n 表⽰每次实验所 需的随机数的个数。在⾏内,随机数是独⽴分布的;在⾏间,随机数是⾮常均匀的。这些随 机数是⽤“分层取样”的⽅法产⽣的。
14.@rand(ed) 返回 0 和 1 间的伪随机数,依赖于指定的种⼦。典型⽤法是 U(I+1)=@rand(U(I))。注 意如果 ed 不变,那么产⽣的随机数也不变。
集循环函数 其语法为 @function(tname[(t_index_list)[|conditional_qualifier]]: expression_list); @function相对应于下⾯罗列的四个集循环函数之⼀;tname是要遍历的集;t_index_list是集索引列表;conditional_qualifier 是⽤来限制集循环函数的范围,当集循环函数遍历集的每个成员时,LINGO都要对conditional_qualifier 进⾏评价,若结果为真,则对该成员执⾏@function操作,否则跳
过,继续执⾏下⼀次循环。expression_list是被应⽤到每个集成员的表达式列表,当⽤的是@for函数时,expression_list 可以包含多个表达式,其间⽤逗号隔开。这些表达式将被作为约束加到模型中。当使⽤其余的三个集循环函数时, expression_list 只能有⼀个表达式。如果省略t_index_list ,那么在expression_list中引⽤的所有属性的类型都是tname集。
1. @for
该函数⽤来产⽣对集成员的约束。基于建模语⾔的标量需要显式输⼊每个约束。@for函数允许只输⼊⼀个约束,然后LINGO ⾃动产⽣每个集成员的约束。
2. @sum
该函数返回遍历指定的集成员的⼀个表达式的和。
3. @min和@max
返回指定的集成员的⼀个表达式的最⼩值或最⼤值。
惊喜的英文怎么写⾦融函数: @fpa(I,,n):返回⼀个现值,其单位时间利率为I,连续⽀付n个时间段,该⽀付所对应的现值。 ⽰例程序如下: 贷款⾦额50000 元,贷款年利率 5.31%,采取分期付款⽅式(每 年年末还固定⾦额,直⾄还清)。问拟贷款 10 年,每年需偿还多少元?
辅助函数
@if(logical_condition,true_result,fal_result)
@if 函数将评价⼀个逻辑表达式logical_condition,如果为真返回true_ result,
否则返回fal_result。
@warn(’text’,logical_condition)
如果逻辑条件logical_condition为真,则产⽣⼀个内容为’text’的信息框。bloodpressure
@text(’…/’)=xx; 将xx的值输⼊到相应路径下的⽂件中!具体⽤法:例:ts:r/1..8/:d;c/1..8/:;    !就算没有集合属性也要写":";link(r,c):x,y;        !派⽣集合;endts @for(r(i):@for(c(j):x(i,j)<=y(i,j)));      !可⽤@for(link:x<=y)代替;@for(r(i)|i#ge#2:d(i)>=3)            !":"前说的是对哪个集合进⾏约束,":"后⾯说的事具体是什么样的约束;!"|"表⽰过滤,即筛选r(i)下标集中i>=2的下标,即/2,3..8/;plus:lingo 注释⽅法;  !注释内容;
1
2
3nutshell
4
5
6
7
柳州会计培训
8
9
10
11aggressive的意思
12
13
14
1550000 = x * @fpa(.0531,10)    @fpl (I ,n ):返回如下情形的净现值,单位时间的利率为I ,第n 个时间段⽀付单位费⽤的现值,可以认为对它求和得到@fpa (I ,n )的值。1
2
3

本文发布于:2023-06-15 21:04:06,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/146283.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:函数   分布   表达式   运算符   变量   关系   返回
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图