Lingo使用笔记

Lingo是一款用于线性、非线性、整数规划问题求解的软件,其建模语言不区分大小写,变量默认为非负实数。核心概念是Set集合,用于描述约束。Lingo中通过定义集合段和数据段来设置模型,并利用@FOR、@SUM等关键字设定约束。本文详细介绍了Lingo的语法和应用实例。
摘要由CSDN通过智能技术生成

Lingo是用于求解线性规划、非线性规划、整数规划的专门软件。使用Lingo建模语言描述问题后,软件能自动化为标准形式,并根据问题选择相应的求解器。

Lingo代码每行以分号结尾。变量和关键字不区分大小写。除Calc段和Init段外,代码各行的顺序随意。
Lingo中变量不需要定义直接使用。默认变量类型为非负实数。使用

@FREE(x)  !移除非负约束 
@GIN(x)   !添加整数约束
@BND(lower_bound, x, upper_bound)  !上下界约束
@SEMIC( lower_bound, variable, upper_bound)  !上下界或零

Lingo中没有”数组”的概念,对应最接近的概念是”Set集合”。
Set是Lingo中的核心概念之一,是描述具有轮转和对称性约束的主要手段。
在Lingo中使用sets: …… endsets关键字定义集合段。

定义一维集合

setname [/ member_list /] [: attribute_list];
WAREHOUSES /1..6/: location,price;

定义集合时也可以不指定大小,lingo会根据初始值的维度自动决定


定义二维集合

setname(parent_set_list) [ / member_list /] [: attribute_list];

SETS:
  PRODUCT / A B/;
  MACHINE / M N/;
  WEEK / 1..2/;
  ALLOWED(PRODUCT, MACHINE, WEEK);
ENDSETS

ALLOWED集合是PRODUCT和MACHINE集合的笛卡尔积。
若只需要生成部分集合,可手工指定成员列表

ALLOWED(PRODUCT, MACHINE, WEEK) / A M 1, A N 2<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值