Lingo基础知识

Lingo(Linear Interactive and General Optimizer)即”即交互式的线性和通用优化求解器”, 可以用于快速求解各种优化问题(图论问题分分钟解决有木有, Σ( ° △ °|||)︴, 算法竞赛中各种被图论坑!), 语法简洁, 可以直接读取各种数据.


Lingo语法:


1.基本运算符:

  • 算数运算符

    针对数值进行操作

    - ^ 乘方
    - \*   乘
    - /  除
    - \+ 加
    -  \- 减/取反
    
  • 逻辑运算符:

    主要用于集循环函数的条件表达式中, 来控制在函数中哪些成员被包含, 哪些被排斥.在创建稀疏集时用在成员资格过滤器中.

    - #not#
    - #eq#
    - #ne#
    - #gt#
    - #ge#
    - #lt#
    - #le#
    - #and#
    - #or#
    
    助记规律: g - greater , l - less , e - equal , t  - than , n - not
    
  • 关系运算符:

    主要用在模型中, 指定一个表达式的左右大小关系, 对模型进行约束. (需注意与逻辑运算符的差别:一个是控制运算过程; 一个是得出运算值)

    - = 
    - <=
    - >=
    - <
    - >
    
    由于Lingo不支持严格大于或小于关系运算, < 和 <=, > 和 >= 同效.
    想要实现真正的<或>,可以这样:
    令A+& <= B,   其中&取一个较小的正数, 使A在取上限的时候可以与B近似的看为相等.
    

    各运算符优先级

    优先级运算符
    #not# -(取反)1
    ^2
    * /3
    + -4
    #eq# #ne# #gt# #ge# #lt# #le#5
    #and# #or#6
    <= => =7

2.常用函数:

  • 数学函数

    • @abs(x)
    • @sin(x)
    • @cos(x)
    • @tan(x)
    • @exp(x)
    • @log(x)
    • @lgm(x)
    • @sign(x)
    • @floor(x)
    • @smax(x1, x2, … , xn)
    • @smin(x1, x2, … , xn)
  • 概率函数

    • @pbn(p, n, x)
    • @pcx(n, x)
    • @peb(a, x)
    • @pel(a, x)
    • @pfd(n, d, x)
    • @pfs(a, x, c)
    • @phg(pop, g, n, x)
    • @ppl(a, x)
    • @pps(a, x)
    • @psl(x)
    • @psn(x)
    • @ptd(n, x)
    • @qrand(seed)
    • @rand(seed)
  • 变量界定函数

    • @bin(x)
    • @bnd(L, x, U)
    • @free(x)
    • @gin(x)
  • 集操作函数

    • @in(set_name, primitive_index_1, [, primitive_index_2, …])
    • @index([set_name, ]primitive_set_element)
    • @wrap(index, limit)
    • @size(set_name)
  • 输入输出函数

    • @file
    • @text
    • @ole
    • @ranged(variable_or_row_name)
    • @rangeu(variable_or_row_name)
    • @status()
    • @dual
  • 辅助函数

    • @if(logical_condition, true_result, false_result)
    • @warn(‘text’, logical_condition)

3.代码规范

  • 模型以”MODEL: “开始, 以”END “结束 ;
  • 每行代码以 ; 结束 ;
  • 变量名不区分大小写, 但只能以字母开头, 长度不能超过32 ;
  • 变量默认限制为非负, 可用@free(x)函数解除限制 ;
  • 表达式"max = … 和 min = …"分别表示求最大值和最小值 ;
  • 以 ! 开头代表注释, 同时也要以;结束 ;
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值