QQ登录

只需要一步,快速开始

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

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

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

1

主题

4

听众

29

积分

升级  25.26%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2009-4-22 11:37 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
本帖最后由 厚积薄发 于 2010-1-26 21:10 编辑 ( y) ?# v! X$ w1 Z0 ^1 [( I  I7 t) T
1 x( K+ P4 H. s/ _
看到一个题:
3 y% V' @* @' Q4 F9 a6 z职员时序安排模型  
  ]' f' n# S- @, r, Y一项工作一周 7 天都需要有人(比如**工作) ,每天(周一至周日)所需的最少职员数为 20、16、13、16、19、14 和 12,并要求每个职员一周连续工作 5 天,试求每周所需最少职员数,并给出安排。注意这里我们考虑稳定后的情况。
8 p( t2 {5 I: c1 ]model:
4 x+ `* D5 B3 }; P: Isets:   ^1 c% O, L/ N! J& ]0 T: f: i
  days/mon..sun/: required,start; % h6 l9 T: a$ L% }
endsets
* J) Q/ x; U! P9 B) T7 f% odata: % Y2 q3 {/ D2 u# `& o/ D9 s* W
  !每天所需的最少职员数;
1 W2 u: q0 N& r3 p' A* X& b  required = 20 16 13 16 19 14 12;  
) l+ D5 W$ [. Uenddata
; B" c7 p8 f: j# d1 D; X+ {: F!最小化每周所需职员数; 3 [8 y- \% b$ E0 w% X: \
  min=@sum(days: start); 1 B. x- o: U- p* `4 G2 A0 X4 r
  @for(days(J): 9 i3 U7 X% G  m! z
    @sum(days(I) | I #le# 5: " q) u, {4 S9 K/ O# L
      start(@wrap(J+I+2,7))) >= required(J));
7 d) H/ h/ D- O  _, }* Fend
( E% i) E  Z/ e2 j3 z$ k% x. I2 D
2 i' P9 b+ |; m其中@sum(days(I) | I #le# 5: ) `; E2 U* J) \/ e  ~
      start(@wrap(J+I+2,7))) >= required(J)); 是什么意思啊?我知道比如周一要排的人要从上个周四算起,但是不知道wrap中J+I+2和7各代表什么意思啊?还有这个函数怎么用啊?
2 o+ H6 N; U% f请各位帮忙,谢谢了!
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 1 a# `& v8 t8 q
    一个员工工作一天算一个工期1 q* U1 [! n$ |* W+ V# D# ^
    所有的天数加起来:总工期
    回复

    使用道具 举报

    追梦者 实名认证       

    13

    主题

    4

    听众

    594

    积分

    升级  98%

    该用户从未签到

    国际赛参赛者

    新人进步奖

    群组数模应用

    群组LINGO

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

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

    群组Mathematica研究小组

    本帖最后由 追梦者 于 2009-8-13 10:37 编辑
    + v5 C/ B/ ]; ]8 Q4 o' t% a
    @wrap(index,limit)函数在循环、多阶段计划编程中经常用到!表示index模limit再加1,limit相当于一个周期。~1 w- X  n3 x4 G* o" {; i  S
    371568491 发表于 2009-4-22 22:35
    $ C# q6 T  u8 }6 L6 B" H6 r
    小弟与上面这位仁兄的理解稍有不同,英美中星期表示与我们不同,我们将星期一看成第一天,而他们则是将星期日看成第一天。在lingo中sun就表示第一天,用数字0标识。因此@wrap(index,limit)的用法就是index模limit而不加1。& k& a3 m1 h) m9 V, H
    你可以运行下面的结论来看一看:
    - R8 [5 w" c$ m1 s, p6 c9 p这是原程序- D! P  ~  ?) m* e$ C7 _
    model:
    4 q, d, ^% I6 Ksets:* O' X* r* k' E) [6 w
      days/mon..sun/: required,start;
    , h. e: G; _5 D1 Sendsets0 u1 `# O; a) {6 a
    data:5 F1 @0 R9 p# h/ z) e% L
      !每天所需的最少职员数;/ i' f* p9 K1 g7 p; m" \0 }
      required = 20 16 13 16 19 14 12; 9 H2 C4 y: Z! Q
    enddata
    ' m- L4 h( r$ E! k: z! z!最小化每周所需职员数;6 |3 ?3 b1 I7 L, c+ o; ?4 I
      min=5 _; F. H1 r; |& ?4 ]
    @sum(days:start);  z# P1 J" i! n6 z/ Q
      @for(days(J):
    ) d" n+ g, R4 `; O5 a# D9 n& h    @sum(days(I) | I #le# 5:
    ; n5 i1 [% Z" s! z* Q% w0 @' [      start(@wrap(J+I+2,7))) >= required(J));; u( R* u& P( T$ a% w! J
    !外国人的第一天是星期日;
    : b+ Y! j' W% [6 jend
    % R& a- x2 {/ f! d+ L) t- c& O" F将上面的程序中的集修改为 ' m- I/ g- u4 c6 q+ d
    sets:
    6 Y% a. X8 I1 c0 \days/1 2 3 4 5 6 0/: required,start;0 |" @: P8 a! F% R
    endsets
    ' A/ |. i, |! T( s0 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的值
    ; ?; h: z# Z6 d5 I1 C" }- {# 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, 2025-8-19 10:59 , Processed in 0.938740 second(s), 109 queries .

    回顶部