Lingo速上手攻略

Posted cmcshenwei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Lingo速上手攻略相关的知识,希望对你有一定的参考价值。

Lingo速上手攻略

核心思想

lingo引入了集合(set)概念,集合是这一组相关的对象构成的组合,代表模型中的实际事物。集合的事先声明包括集合的名称、集合的要素、集合的属性,形如WH/W1..W6/:AI

多个基本集合可以通过Links(WH,VD):C,X的方式组成一个衍生集合,衍生集合如果没有指定衍生的成员,将会取所有可能的组合

lingo中数据段的定义是通过DATA: ENDDATA来实现一直变量的赋值的。

基本语法

@sum()求和函数,括号里面填写求和的集合名称(表示对这些成员进行)和表达式(表示对该表达式进行),以:做分割。如果参与运算的属性来自同一个集合,则索引符号可以省略。

@for()循环函数,括号填写同上。如果参与运算的属性来自同一个集合,则索引符号可以省略。

实例

  • okay,来看一个实例
    技术图片
    技术图片

首先建立模型,$min Z=sumsum c_{ij} x_{ij}$于是有 $$s.t. egin{cases}sum x_{ij}< a_i,i=1...6 sum_{i =1}^6 x_{ij} = d_{j} x_{ij}> 0end{cases}$$在lingo中求解如下

MODEL:
  SETS:
    WH/W1..W6/:AI;
    VD/V1..V8/:DJ;
    LINKS(WH,VD):C,X;
  ENDSETS
  
 DATA:
    AI = 60,55,51,43,41,52;
    DJ = 35,37,22,32,41,32,43,28;
    C  = 6,2,6,7,4,2,5,9
         4,9,5,3,8,5,8,2
         5,2,1,9,7,4,3,3
         7,6,7,3,9,2,7,1
         2,3,9,5,7,2,6,5
         5,5,2,2,8,1,4,3;
  ENDDATA

  MIN=@SUM(LINKS(I,J):C(I,J)*X(I,J)); !@SUM(LINKS:C*X);
  @FOR(WH(I):@SUM(VD(J):X(I,J))<=AI(I)); 
  @FOR(VD(J):@SUM(WH(I):X(I,J))= DJ(J));
END

以上是关于Lingo速上手攻略的主要内容,如果未能解决你的问题,请参考以下文章

VSCode插件开发全攻略代码片段设置自定义欢迎页

Gin框架系列01:极速上手

Gin框架系列01:极速上手

WEB幻想速升+赚钱+好装备攻略

Kafka3.x核心知识速查手册-一快速上手篇

Kafka3.x核心知识速查手册-一快速上手篇