lingo中@wrap的用法
来源:互联网 发布:网络售后 编辑:程序博客网 时间:2024/06/04 23:20
在这里纠正下网上部分的理解错误。
lingo中的一道经典例题:职员时序安排模型
一项工作一周7天都需要有人(比如护士工作),每天(周一至周日)所需的最少职员数为20、16、13、16、19、14和12,并要求每个职员一周连续工作5天,试求每周所需最少职员数,并给出安排。注意这里我们考虑稳定后的情况。
model:
sets:
days/mon..sun/: required,start;
endsets
data:
!每天所需的最少职员数;
required = 20 16 13 16 19 14 12;
enddata
!最小化每周所需职员数;
min=@sum(days: start);
@for(days(J):
@sum(days(I) | I #le# 5:
start(@wrap(J+I+2,7))) >= required(J));
end
解释下:
@for(days(J):
@sum(days(I) | I #le# 5:
start(@wrap(J+I+2,7))) >= required(J));
当day(J)为1时,day(I)=1,2,3,4,5.由于7为循环周期,故@warp(J+I+2)返回的值是4,5,6,7,1的职员和.当day(J)为2时,@warp(J+I+2)返回的值是5,6,7,1,2的职员和,以此类推。
网上有一种说法是,英美中星期表示的不同,中国将星期一看成第一天,而国外则是将星期日看成第一天。在lingo中sun就表示第一天,用数字0标识。因此@wrap(index,limit)的用法就是index模limit再加1。将上面的程序中的集修改为
sets:
days/1 2 3 4 5 6 0/: required,start;
endsets
在运行效果一样。详见
http://www.madio.net/mcm/redirect.php?fid=495&tid=43018&goto=nextoldset
我本人的理解是@wrap(index,limit)的用法就是index模limit再加1。其中的1并不是代表的星期一是否为第一天,假如真的像上述说法似地@wrap函数只能用在周数的问题了。0,1代表的是逻辑函数,1就是进行循环周期,0代表不循环周期。上述程序中的循环周期可以是1 2 3 4 5 6 0,可以是1 2 3 4 5 6 7,也可以是2 7 9 5 8 0 1,只要是七位数字即可,运行的效果完全一样。
- lingo中@wrap的用法
- 关于lingo的@wrap函数
- lingo中对start(@wrap(J+I+2,7))) >= required(J))的理解
- css3中word-wrap的用法?
- wrap用法
- wrap 用法
- jquery中wrap,wrapAll,wrapInner的区别
- JQuery中wrap,wrapAll,wrapInner的区别
- jquery中$.proxy及wrap()的使用
- jQuery中wrap和wrapAll用法以及区别
- jQuery中wrap、wrapAll和wrapInner用法以及区别
- jQuery中wrap、wrapAll和wrapInner用法以及区别
- word-wrap,word-break,white-space,text-overflow的用法
- 关于jQuery自动生成html代码的方法--wrap用法
- lingo的脚本类型
- 关于lingo的例子
- LINGO的NLP问题
- LINGO的数据段
- 如何有效地使用对话框
- hibernate级联删除 inverse cascade
- Solaris 上安装Eclipse的问题
- Spring 学习笔记(一)
- 解决 RNI接口调用出现的异常UnsatisfiedLinkError: no jtokyocabinet in java.library.path 及 wrong ELF class: ELFCLASS64问题
- lingo中@wrap的用法
- 遵循Unix哲学 简化系统最安全
- Studying note of GCC-3.4.6 source (33)
- Linux 的多线程编程
- Java与C#平台通信 WCF CXF SOAP
- 开张剪彩
- cgic: 为C语言编写CGI的C函数库
- 转:CIO的职责是什么----CIO攻略 职责随需而变
- 50个实用的JavaScript工具- - JavaEye技术网站