一、序言

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)

为真,输出信息框。

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

  1. 无任何编程基础的人,该怎么入门编程?

    相比于其他传统行业,程序员的确是低投入.高产出的工作.但你千万不要以为有台电脑,就能编程变现.零基础入行,如果方法不对,一定会困难重重.拿我自己来说吧,作为一个入行8年的老程序员,我不是科班生,完全是 ...

  2. python编程基础与应用-有哪些适合零编程基础的人学习Python的书?

    筛选了2年内优秀的python书籍,个别经典的书籍扩展到5年内. python现在的主流版本是3.7(有明显性能提升,强烈推荐) 3.6, 不基于这两个或者更新版本的书,慎重选择.很多库已经不提供py ...

  3. linux中signal函数返回值,signal函数、sigaction函数及信号集操作函数

    信号是与一定的进程相联系的.也就是说一个进程可以决定在进程中对哪些信号进行什 么样的处理.例如一个进程可以忽略某些信号而只处理其他一些信号另外一个进程还可以选择如何处理信号.总之这些总与特定的进程相联 ...

  4. python适合自学编程吗-对没有编程基础的人来说,直接学Python入门IT合适吗?

    原标题:对没有编程基础的人来说,直接学Python入门IT合适吗? 对于0基础的人,直接学 Python 编程合适吗? 小编只能说非常合适,因为在目前的编程语言中,Python的抽象程度是最高的,是最 ...

  5. 《假如编程是魔法之零基础看得懂的Python入门教程 》——(七)我把魔法变成了积木

    学习目标 了解魔法积木的使用--自定义函数 了解魔法积木的结果反馈--自定义函数返回值 了解魔法积木的原料传递--自定义函数传参 了解魔法积木的类型分类--类与对象 推荐 1.<备受好评的看得懂 ...

  6. 《假如编程是魔法之零基础看得懂的Python入门教程 》——(六)精简魔法更强大

    学习目标 了解对相似逻辑的简化编写--循环 推荐 1.<备受好评的看得懂的C语言入门教程> 目录 第一篇:<假如编程是魔法之零基础看得懂的Python入门教程 >--(一)既然 ...

  7. 《假如编程是魔法之零基础看得懂的Python入门教程 》——(四)了解魔法百宝箱列表、字典及基本数据类型

    学习目标 了解魔法世界中可更改容器--变量 了解魔法世界的基本数值类型--字符串.整数 了解魔法百宝箱--字典.列表 了解列表如何添加值 了解字典如何添加值 了解字典与列表定义的不同符号 目录 第一篇 ...

  8. 没有任何基础的可以学python吗-对没有编程基础的人来说,直接学Python入门IT合适吗?...

    原标题:对没有编程基础的人来说,直接学Python入门IT合适吗? 对于0基础的人,直接学 Python 编程合适吗? 小编只能说非常合适,因为在目前的编程语言中,Python的抽象程度是最高的,是最 ...

  9. python入门编程-对没有编程基础的人来说,直接学Python入门IT合适吗?

    原标题:对没有编程基础的人来说,直接学Python入门IT合适吗? 对于0基础的人,直接学 Python 编程合适吗? 小编只能说非常合适,因为在目前的编程语言中,Python的抽象程度是最高的,是最 ...

最新文章

  1. hive 使用技巧笔记
  2. Swift 4 无限滚动轮播图(UICollectionView实现)
  3. bzoj 3120 矩阵优化DP
  4. 记住,永远不要在MySQL中使用“utf8”-转
  5. 需求分析中适应性怎么写_商业计划书中的市场分析怎么写,这样才完整!
  6. Spring MVC——POST请求application/x-www-form-urlencoded方式参数嵌套POJO解决方案
  7. 【数组】 - 有序数组设计
  8. Linux下搭建FTP服务器笔记
  9. word List 50
  10. 邀请合作如何表达_如何邀请大咖嘉宾来商群分享
  11. vi/vim 基本使用方法
  12. 解决idea使用jdbc连接数据库失败的方法(针对驱动导入失败)
  13. 2021年全球人工智能行业调研及趋势分析报告
  14. Sails基础之View层
  15. C# 同间字查询 (汉字转拼音 拼音转汉字 简体繁体互转 )
  16. 安卓开发自己写的刻度尺测量,精确到mm.
  17. WDF开发USB设备驱动教程(2)
  18. TiDB 在特来电的实践
  19. 瓷砖铺贴方法_5种常见的瓷砖铺贴及施工方法
  20. Java通过FFmpeg录制屏幕

热门文章

  1. 【HTML】HTML网页设计---智能动物园系统网站端
  2. SwiftUI中NavigationLink多层嵌套导航无法返回上一层的原因及解决
  3. 2018便利蜂春招一面
  4. 微信小程序,安卓可以调接口,苹果调不了的解决方案
  5. WebShell -- Linux反弹
  6. VUE利用transition标签实现摇一摇抽签效果
  7. 《mysql是怎样运行的》读书笔记一
  8. 日历时间 linux,Linux查看日历
  9. 从键盘上输入任意个任意字母,统计元音字母 a、e、i、o、u 共出现多少次。
  10. 百度SEO站群Listable英文版主题-目录列表主题(WordPress响应式)