LINGO学习笔记

题目:
职员时序安排模型
一项工作一周7天都需要有人(比如护士工作),每天(周一至周日)所需的最少职员数为20、16、13、16、19、14和12,并要求每个职员一周连续工作5天,试求每周所需最少职员数,并给出安排。注意这里我们考虑稳定后的情况。

model:
sets:    !集合段;
WP/W1..W7/: A,X;  !注意,W1与W7之间有2个点:
endsets
DATA :    !数据段;
A=20 16 13 16 19 14 12; !数据之间可以用空格或者逗号做分隔符:
ENDDATA
INIT:  !初始段;

ENDINIT
MIN=@SUM(WP:X);!目标与约束段;
@FOR(WP:@gin(X));
!函数之间可以嵌套调用;
!变量遍历约束方法  WP(I)|I #LE# 5 ;
@for(WP(J):@sum(WP(I)|I #LE# 5:X(@WRAP(J+I+2,7)))>A(J));
!WRAP函数:类似于求余,但是当余数为0时,结果为整数倍除数的整数倍;
end

知识点:
1:整体结构组织上看,和汇编语言有类似的地方;
2:每个语句行后面要有分号
3: " * "必不可少
4:LINGO 中只有当模型以“MODEL: ”开始时 才能以“END”结束);
5:lingo函数以@开头
6:lingo默认假定变量非负,使用@free函数解除对变量的非负限制
7:lingo默认>等同于>=, <等同与<=;如果想要严格限制这种<,>关系,则写成a>b+1*e-10;

以下是另一个规划题练习:
SAILCO 公司需要决定下四个季度的帆船生产量。下四个季度的帆船需求量分别是40 条, 60 条, 75 条,25 条,这些需求必须按时满足。每个季度正常的生产能力是40 条帆船,每条船的生产费用为400 美元。如果加班生产,每条船的生产费用为450 美元。每个季度末,
每条船的库存费用为20 美元。假定生产提前期为0,初始库存为10 条船。如何安排生产可使总费用最小?

解题:
用DEM,RP,OP,INV 分别表示需求、正常生产的产量、加班生产的产量、库存量,则DEM,RP,OP,INV 对每个季度都应该有一个对应的值,也就说他们都应该是一个由4 个元素组成的数组,其中DEM 是已知的,RP,OP,INV 是未知数。
约束条件

model:
sets:
WP/W1..W4/:RP,OP,INV,DEM;
endsets
DATA :
DEM=40 60 75 25;
ENDDATA
MIN=@SUM(WP:400*RP+450*OP+20*INV);
@FOR(WP:RP<40);
INV(1)=RP(1)+OP(1)-DEM(1)+10;
@FOR(WP(I)|I#GE#2:INV(I)=RP(I)+OP(I)-DEM(I)+INV(I-1));
@FOR(WP:@GIN(RP));
@FOR(WP:@GIN(OP));
@FOR(WP:@GIN(INV));
end

注意;
1:相等这个条件是"=",而不是"=="
2:代码中的"=“和”#EQ#“不可互换,”#GE#“与”>="不可互换

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值