一部适合有一点点lingo编程基础的人阅读的lingo入门教程——重学lingo,发现很多遗忘的小知识,并将其整理成册——运算符、数学函数、金融函数、概率密度函数、变量定界与集操作函数

一、序言

lingo是一款处理优化问题十分好用的软件。
虽然常常使用,但却许久未曾再系统的学习过,前段时间,重学MATLAB,发现了很多遗忘的知识点,今日,决定重学lingo,将易于遗忘的那些基本的语法,重新掌握到手。

二、运算符

对于运算符,大家都耳熟能详了,但是lingo中运算符的顺序,大家又知道多少呢?
下面给出(从高到低):

#not# -
^
* /
+ -
#eq# #ne# #gt# #ge# #lt# #le#
#and# #or#
<= = >=(<都看做<=)(lingo中没有严格的小于,要通过加极小量来实现)

三、数学函数

基本的三角函数、指数函数、对数函数、符号函数等都不再加以说明了。
lgm(x)——返回x的gamma函数的自然对数
floor(x)——向零取整
smax(x1,x2,…,xn)
smin(x1,x2,…,xn)——顾名思义,只是前面多了个s而已(我竟然以为之前没有)

四、金融函数

金融函数主要用于计算净值
@FPA(I,N)——返回后面情况下的总净现值
@FPL(I,N)——返回后面情形下的净现值

4.1净现值

你可能还不知道什么是净现值,巧了,我也不太清楚,于是我百度了一下,找到了如下的一组示例。
在这里插入图片描述
简单的说明一下,就是净现值是反应项目投资获利能力的一组指标。
大于0时,方案可行。
小于0时,不可行。
这个值自然是越大越好了。

五、概率函数

令人头疼的概率函数,他又来了。
算了,来吧来吧,该来的,躲不掉的。

确实是很多,非常多,而你只需浏览一遍,而不需要记住,没错,不需要记忆,有印象,知道有这么个函数,到时候需要的时候,来查阅就可以了。

告诉大家一个记忆技巧,记忆函数居然不如记忆英语要快,
概率函数除了随机数的几个之外,其余函数均由三个字母组成:

开头字母全是p——概率密度函数我们不是常用p来表示吗。
中间字母是与这个分布有关的英文符号
结尾字母常常与分布的常用参数有关

累积分布函数

5.1 @pbn(p,n,x)——二项分布的累积分布函数。

神奇的是n和x居然可以不是整数,不是整数的时候,程序会根据线性插值法来进行计算。(tql——太强了)

Binomial——大概是二项的意思。

有人常常说不知道里面的参数怎么用,各种解释也听不懂,给个图,会不会好理解一点?(感觉效果好或者不好,都可以给我留言)
在这里插入图片描述

5.2 @pcx(n,x)——自由度为n的卡方分布的累积分布函数。

Chi-square——大概是卡方的意思。

自由度参数n,在图片中的式子里,自由度为k。
在这里插入图片描述

5.3 @pfd(n,d,x)——自由度为n和d的F分布的累积分布函数。

F分布,中间字母自然是f。

在这里插入图片描述
我们这个求出的F分布,应该是参数未知的情形,也就是上图中的性质6,性质5可做了解,概率统计的课程学习中,常会用到这个函数。

5.4 @phg(pop,h,g)——超几何分布的累积分布函数

hypergeometric——大概是超几何的意思

在这里插入图片描述
注意,我们求解的累积分布。

5.5 @pps(a,x)——泊松分布(poisson)的累积分布函数

x可以不是整数,此时,依旧是采用线性插值法计算。

5.6 @ppl(a,x)——泊松分布的线性损失函数

这又是一个与泊松分布有关的函数,

它返回max(0,z-x)的期望值,其中随机变量z服从均值为a的泊松分布。

5.7 @psl(x)——单位正态线性损失函数,

这又是一个线性损失函数,

它返回max(0,z-x)的期望值,其中随机变量z服从均值为a的泊松分布。

5.8 @psn(x)——标准正态分布的累积分布函数

你以为概率分布函数到线性损失就结束了吗,最常用的正态分布可不能忘记啊。

5.9 @ptd(n,x)——自由度为n的t分布的累积分布函数

我决定不再找百科给大家解释说明了,分布写到了现在,大家也看到了现在,你我都已经没有灵魂了。。。。。。
所以,知识点就在这里,详细解释就靠大家了

不过,好消息,分布到这里就结束了,大家可以稍作休息,下面来介绍几个其他的硬核概率密度函数。

首先让我们来瞅一瞅三个与排队论有关的函数,不知道直接跳过,学习排队论之后再来看就懂了,我也只会排队论的几个简单的小模型,但下面三个函数,还是十分简单而且有用的。

5.10 @peb(a,x)——到达负荷a时,服务系统有x个服务器且允许无穷排队是的Erlang繁忙概率。

5.11 @peb(a,x)——与上一个函数的区别是,这个函数是不允许排队的繁忙概率。

5.12 @pfs(a,x,c)——当负荷上限为a,顾客数为c,平行服务器数量是x时,有限源的poisson服务系统的等待或返修顾客数的期望值。

a是顾客数乘以平均服务时间,再除以平均返修时间。

c,x可以不是整数,依旧采用插值法计算。

之后是两个随机数的产生函数

5.13 @qrand(seed)——产生(0,1)区间的拟随机数。

只允许在模型的数据部分使用,她将用拟随机数填满集属性。

这些随机数,是用分层抽样法生产的。

5.14 @rand(seed)——产生(0,1)区间的伪随机数,依赖于指定的种子。

常用法:
U(k+1) = @rand( U(k) )

六、变量定界函数与集操作函数

6.1 变量定界函数

没什么好说的,常用,应当聊熟于心。

6.1.1 @bnd(L,x,U)——限制L<=x<=U

6.1.2 @free(x)——取消大于等于0的限制

6.1.3 @gin(x)—— 限制x为整型变量

6.1.4 @bin(x)—— 限制x为0-1变量

6.2 集操作函数

6.2.1 @in(集合名,元素1,…)

在集合中,返回1,否则,返回0

6.2.2 @index(集合名,元素)

集合名可以省略

6.2.3 @wrap(index,limit)

返回j=index-k*limit,类似于限制在【1,limit】区间了

6.2.4 @size(集合名)

返回元素个数

七、集合循环函数与输入输出函数

7.1 集合循环函数

@for,@max,@min,@sum,@size,@in等等,都很常用,不多说什么了。

7.2 输入和输出函数

7.2.1 @file函数

该函数从外部文件输入数据,可以放在模型的任何地方。
注意读入方式,以~结尾,作为记录结束标记,读取完最后一条记录后,lingo会关闭文件。
注意,同时打开的文件总数不能超过16个

7.2.2 @text函数

输出数据的函数,用于将数据输出值文本文件。

如果没有指定输出文件名,就会输出到标准输出设备(显示器)。

7.2.3 ole函数

从Excel中引入或者输出数据

7.2.4 @ranged(variable_or_row_name)

为了保持最优基不变,变量的费用系数或约束行的右端项允许减少的量

7.2.5 @rangeu(variable_or_row_name)

同上,不过输出允许增加的量

7.2.6 @status()

返回Lingo求解模型结束后的状态
0——GlobalOptimun
1——Infeasible
2——Unbounded
3——Undeterminded(不确定)
4——Feasible
5——InfeasibleorUnbounded(通常需要关闭预处理选项后,重新求解模型,以确定究竟是不可行还是无界)
6——LocalOptimun
7——LocallyInfeasible
8——Cutoff(目标函数的截断值被达到)
9——NumericError(遇到无定义的运算而终止)

7.2.7 @dual(variable_or_row_name)

返回变量的判别数(检验数)
或约束行的对偶(影子)价格(dualprice)

八、辅助函数

8.1 if(logical_condition,true_return,false_return)

为真,返回true_return
反之亦然

8.2 warn(‘text’,logical_condition)

为真,输出信息框。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值