QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 25315|回复: 20
打印 上一主题 下一主题

【讨论】新手求助:关于lingo的wrap函数

[复制链接]
字体大小: 正常 放大
guarguar        

1

主题

4

听众

29

积分

升级  25.26%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2009-4-22 11:37 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
本帖最后由 厚积薄发 于 2010-1-26 21:10 编辑
( @5 q/ |2 T: R, v5 c9 |, P
" K: d0 n' ^% V" v1 e. P! `0 v看到一个题:; A8 L' g$ B1 N1 k+ ~- H: X
职员时序安排模型  ) a% q! e9 b6 i7 o2 e$ i
一项工作一周 7 天都需要有人(比如**工作) ,每天(周一至周日)所需的最少职员数为 20、16、13、16、19、14 和 12,并要求每个职员一周连续工作 5 天,试求每周所需最少职员数,并给出安排。注意这里我们考虑稳定后的情况。
" w* V% f4 t1 P% y& u+ F5 a% jmodel:
- n7 _: U- x2 nsets:
3 Y3 H0 T2 O. R5 }9 \) @0 q  days/mon..sun/: required,start; + n# _* T- u* B  k6 m+ n6 ^* z
endsets 5 Z3 o5 J& Q0 K& ^( e$ y2 a0 h
data: 2 z; h: t- B( A; D. G
  !每天所需的最少职员数;
" U5 Q' `* @8 o' i  required = 20 16 13 16 19 14 12;  
& B% h. _& [; b6 Denddata 4 V2 n& O5 `$ T% e/ k
!最小化每周所需职员数; ; n8 U- l8 H$ A& ]- i
  min=@sum(days: start); 4 w* A, k8 ~, ~( S4 g" F+ N* F% j
  @for(days(J): + g: H% p! y( p; |( J
    @sum(days(I) | I #le# 5:
* O. f& F$ X% l# Q5 h5 v0 U      start(@wrap(J+I+2,7))) >= required(J));
+ ^- N3 d; M; c4 U2 v8 @end
. \1 C* J7 _: h5 @8 S* k# Y3 Q( c6 m- F8 I
其中@sum(days(I) | I #le# 5:
3 _: J+ ]2 n" J9 ]* m; @) w      start(@wrap(J+I+2,7))) >= required(J)); 是什么意思啊?我知道比如周一要排的人要从上个周四算起,但是不知道wrap中J+I+2和7各代表什么意思啊?还有这个函数怎么用啊?0 X2 f: F+ H" a/ _. ?3 V
请各位帮忙,谢谢了!
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
buct 实名认证       

26

主题

3

听众

1156

积分

  • TA的每日心情
    开心
    2018-10-14 09:54
  • 签到天数: 2 天

    [LV.1]初来乍到

    新人进步奖 发帖功臣

    群组: 数学建模

    群组: 数学趣味、游戏、IQ等

    群组: 我行我数

    群组: Mathematica研究小组

    群组: 文献查询

    回复

    使用道具 举报

    371568491 实名认证       

    8

    主题

    3

    听众

    257

    积分

    升级  78.5%

  • TA的每日心情
    开心
    2012-9-14 15:36
  • 签到天数: 1 天

    [LV.1]初来乍到

    新人进步奖

    @wrap(index,limit)函数在循环、多阶段计划编程中经常用到!表示index模limit再加1,limit相当于一个周期。~
    回复

    使用道具 举报

    xieducx7        

    0

    主题

    4

    听众

    10

    积分

    升级  5.26%

    该用户从未签到

    新人进步奖

    1# guarguar
    2 r) |/ R" D) p4 Q% b: H一个员工工作一天算一个工期
    . t  o6 J3 w9 D; S5 w. o  \% Z0 k% J所有的天数加起来:总工期
    回复

    使用道具 举报

    追梦者 实名认证       

    13

    主题

    4

    听众

    594

    积分

    升级  98%

    该用户从未签到

    国际赛参赛者

    新人进步奖

    群组: 数模应用

    群组: LINGO

    群组: 四川农业大学数学建模协会

    群组: 重庆交通大学数学建模协会

    群组: Mathematica研究小组

    本帖最后由 追梦者 于 2009-8-13 10:37 编辑
    $ e& k2 Q9 {2 Q
    @wrap(index,limit)函数在循环、多阶段计划编程中经常用到!表示index模limit再加1,limit相当于一个周期。~
    5 J. j7 \  h8 X4 V; o371568491 发表于 2009-4-22 22:35
    ; Q, R1 c: t6 L5 b
    小弟与上面这位仁兄的理解稍有不同,英美中星期表示与我们不同,我们将星期一看成第一天,而他们则是将星期日看成第一天。在lingo中sun就表示第一天,用数字0标识。因此@wrap(index,limit)的用法就是index模limit而不加1。
    3 Z6 s( T/ |- s% r* c3 q你可以运行下面的结论来看一看:
    + @% c3 R, }' I" I) ~% h, x1 [3 n这是原程序8 [8 {- `& i, P# ?) ~
    model:
    . q* }" x7 p" @/ ?3 usets:
    3 Q8 @& d# K; P% c5 r# }  days/mon..sun/: required,start;! u; P$ N, R1 Y& s' X
    endsets
    ( @2 E  p' x6 }1 d  odata:
    ; E+ p7 q6 x) p  !每天所需的最少职员数;
    ; i1 [% i  U7 R! n2 r8 e  required = 20 16 13 16 19 14 12; ! b# ?5 A% x% {. O
    enddata) C, r7 Y6 `6 D  ?
    !最小化每周所需职员数;* s( K" e" c" f& s9 A7 c5 ^
      min=
    ' r. ^. N8 m! l& e" Q@sum(days:start);
    2 J# x7 K, ~! \  @for(days(J):
    ! F# x& N6 t. }( @2 Z1 W1 W    @sum(days(I) | I #le# 5:
    / j- b  Z  ]9 e      start(@wrap(J+I+2,7))) >= required(J));# |' M) x) Z3 P+ a& @$ T
    !外国人的第一天是星期日;
    / ?/ _/ p: }: A- z' [end
    & z9 [9 C, b/ X2 N将上面的程序中的集修改为
    4 U: y" d4 O# c2 \3 W/ W! qsets:( ^& Y: F: E- h
    days/1 2 3 4 5 6 0/: required,start;
    * r* @4 Y+ n, n3 @) W$ M( gendsets, b  R: f3 O) Q% y
    在运行效果一样,证明了我的结论。

    点评

    dirk190  换成1到7 结果相同的  详情 回复 发表于 2014-7-19 22:15
    ganquanlife  我也觉得不用+1啊,  详情 回复 发表于 2013-1-30 19:56
    回复

    使用道具 举报

    0

    主题

    0

    听众

    7

    积分

    升级  2.11%

    该用户从未签到

    新人进步奖

    回复

    使用道具 举报

    唐超超 实名认证       

    0

    主题

    4

    听众

    79

    积分

    升级  77.89%

    该用户从未签到

    群组: 数学建模

    回复

    使用道具 举报

    phylince        

    0

    主题

    4

    听众

    47

    积分

    升级  44.21%

    该用户从未签到

    新人进步奖

    就是1到limit,没有0了,0应该替换成Limit的值
    + }9 D& D( N. r7 f+ s- w7 r2 H我个人觉得也不是教程上说的加1
    回复

    使用道具 举报

    sqk20091 实名认证       

    0

    主题

    4

    听众

    6

    积分

    升级  1.05%

    该用户从未签到

    自我介绍
    逗你玩儿
    回复

    使用道具 举报

    0

    主题

    2

    听众

    7

    积分

    升级  2.11%

    该用户从未签到

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-9-27 17:53 , Processed in 5.566690 second(s), 107 queries .

    回顶部