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)——返回后面情形下的净现值
你可能还不知道什么是净现值,巧了,我也不太清楚,于是我百度了一下,找到了如下的一组示例。 简单的说明一下,就是净现值是反应项目投资获利能力的一组指标。 大于0时,方案可行。 小于0时,不可行。 这个值自然是越大越好了。
令人头疼的概率函数,他又来了。 算了,来吧来吧,该来的,躲不掉的。
确实是很多,非常多,而你只需浏览一遍,而不需要记住,没错,不需要记忆,有印象,知道有这么个函数,到时候需要的时候,来查阅就可以了。
告诉大家一个记忆技巧,记忆函数居然不如记忆英语要快, 概率函数除了随机数的几个之外,其余函数均由三个字母组成:
开头字母全是p——概率密度函数我们不是常用p来表示吗。 中间字母是与这个分布有关的英文符号 结尾字母常常与分布的常用参数有关
神奇的是n和x居然可以不是整数,不是整数的时候,程序会根据线性插值法来进行计算。(tql——太强了)
Binomial——大概是二项的意思。
有人常常说不知道里面的参数怎么用,各种解释也听不懂,给个图,会不会好理解一点?(感觉效果好或者不好,都可以给我留言)
Chi-square——大概是卡方的意思。
自由度参数n,在图片中的式子里,自由度为k。
F分布,中间字母自然是f。
我们这个求出的F分布,应该是参数未知的情形,也就是上图中的性质6,性质5可做了解,概率统计的课程学习中,常会用到这个函数。
hypergeometric——大概是超几何的意思
注意,我们求解的累积分布。
x可以不是整数,此时,依旧是采用线性插值法计算。
这又是一个与泊松分布有关的函数,
它返回max(0,z-x)的期望值,其中随机变量z服从均值为a的泊松分布。
这又是一个线性损失函数,
它返回max(0,z-x)的期望值,其中随机变量z服从均值为a的泊松分布。
你以为概率分布函数到线性损失就结束了吗,最常用的正态分布可不能忘记啊。
我决定不再找百科给大家解释说明了,分布写到了现在,大家也看到了现在,你我都已经没有灵魂了。。。。。。 所以,知识点就在这里,详细解释就靠大家了
不过,好消息,分布到这里就结束了,大家可以稍作休息,下面来介绍几个其他的硬核概率密度函数。 首先让我们来瞅一瞅三个与排队论有关的函数,不知道直接跳过,学习排队论之后再来看就懂了,我也只会排队论的几个简单的小模型,但下面三个函数,还是十分简单而且有用的。a是顾客数乘以平均服务时间,再除以平均返修时间。
c,x可以不是整数,依旧采用插值法计算。
之后是两个随机数的产生函数
只允许在模型的数据部分使用,她将用拟随机数填满集属性。
这些随机数,是用分层抽样法生产的。
常用法: U(k+1) = @rand( U(k) )
没什么好说的,常用,应当聊熟于心。
在集合中,返回1,否则,返回0
集合名可以省略
返回j=index-k*limit,类似于限制在【1,limit】区间了
返回元素个数
@for,@max,@min,@sum,@size,@in等等,都很常用,不多说什么了。
该函数从外部文件输入数据,可以放在模型的任何地方。 注意读入方式,以~结尾,作为记录结束标记,读取完最后一条记录后,lingo会关闭文件。 注意,同时打开的文件总数不能超过16个
输出数据的函数,用于将数据输出值文本文件。
如果没有指定输出文件名,就会输出到标准输出设备(显示器)。
从Excel中引入或者输出数据
为了保持最优基不变,变量的费用系数或约束行的右端项允许减少的量
同上,不过输出允许增加的量
返回Lingo求解模型结束后的状态 0——GlobalOptimun 1——Infeasible 2——Unbounded 3——Undeterminded(不确定) 4——Feasible 5——InfeasibleorUnbounded(通常需要关闭预处理选项后,重新求解模型,以确定究竟是不可行还是无界) 6——LocalOptimun 7——LocallyInfeasible 8——Cutoff(目标函数的截断值被达到) 9——NumericError(遇到无定义的运算而终止)
返回变量的判别数(检验数) 或约束行的对偶(影子)价格(dualprice)
为真,返回true_return 反之亦然
为真,输出信息框。