• 一些语法:

    • 变量不区分大小写
    • 语句以分号结尾
    • 以感叹号!开头写注释,同样需要分号结尾
    • 系统默认变量非负,除非用@free/@sub/@slb函数另行说明
    • lingo一次只能输出一组解,要检验是否有其他解,加额外的约束
  • 集合sets和属性的概念:
    QU/1,2,3/:x1,x2,x3,x4;/1..3/
    QU集合有三个元素,1~3每个元素都有x1~x4四个属性变量,另外x1~x4也都是大小为3的数组。
    集合就是一维数组,定义二维数组/矩阵:set3(set1,set2) 注意是括号不是/../

  • Lingo程序结构:

    1
    2
    3
    4
    5
    6
    7
    8
    MODEL:
    SETS:定义集合和属性,即变量结构
    ENDSETS
    DATA:声明常量, 属性=常数列表
    ENDDATA
    写目标函数:max=...../min=....
    约束条件
    END
  • 集合循环函数:
    FOR、MAX、MIN、SUM、PROD

    • @SUM(setname(i)|对i 的约束 : x(i)表达式)
      若集合中所有元素都要进行求和,则可以省略下标
    • @FOR(setname(i)|对i 的约束 : x(i)表达式)
      若集合中所有元素相同,则可以省略下标
    • 注:@SUM是遍历属性(横向),@FOR是遍历集合(纵向),遍历的方向不同
    • @PROD(s:e) 对集合s中的每个成员,分别得到 表达式e 的值,然后返回所有这些值的乘积
  • lingo中函数都以@开头
    限定取整数:@gin(x)
    0/1变量:@bin(x)
    @text(‘文件路径’)=’X为’x 输出集或属性的所有值 写在data块中,在model所有操作执行完后才执行
    @rand(seed) 产生0~1之间的随机数,seed为种子,0~1随便取

  • 模型类型:
    LP 线性规划
    ILP 整数线性规划
    NLP 非线性规划
    INLP 整数非线性规划
    MILP 混合整数线性规划
    IP 二次规划
    IQP 整数二次规划


Post Date: 2018-01-20

版权声明: 本文为原创文章,转载请注明出处