QQ登录

只需要一步,快速开始

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

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

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

1

主题

4

听众

29

积分

升级  25.26%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2009-4-22 11:37 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
本帖最后由 厚积薄发 于 2010-1-26 21:10 编辑 & E+ s6 P1 O: t
4 ~! r/ T% ], y" N) Z7 p8 h$ Z  u
看到一个题:
2 V3 d; k  y, J  u2 ?! n' H职员时序安排模型  + ]; {6 e5 v  T, \7 Z1 q3 ^# Z: v
一项工作一周 7 天都需要有人(比如**工作) ,每天(周一至周日)所需的最少职员数为 20、16、13、16、19、14 和 12,并要求每个职员一周连续工作 5 天,试求每周所需最少职员数,并给出安排。注意这里我们考虑稳定后的情况。
" W4 Y0 Y3 v* f5 ?3 _1 E! Amodel: / k5 A- P: K5 s
sets: & n5 \- I- h! z; I) M
  days/mon..sun/: required,start;
& Z5 ]4 c& O" m4 T9 Nendsets   b% y! Y2 l6 @( U2 j8 Z' b) l+ v
data:
& X8 r' B) O) w) y' {) a+ K  c  !每天所需的最少职员数; ) @& s$ P" Z1 N  D3 P0 S
  required = 20 16 13 16 19 14 12;  
% G" f+ L1 \0 ^7 `! f0 y8 Zenddata 6 G& ~( N! I$ U& |( P# M; W% W5 A9 _
!最小化每周所需职员数; ( R8 U' x( u) @8 d" q; ]& H6 W. i
  min=@sum(days: start); 8 H2 e) K4 _+ I
  @for(days(J): 9 ]5 t- L( I. `3 a6 h6 W
    @sum(days(I) | I #le# 5: 3 f  r# N, `7 w9 N& b, D
      start(@wrap(J+I+2,7))) >= required(J)); / T2 `: ^5 g2 u5 y# P
end
! b9 g+ T4 C) u0 H) q- I' e9 K% z# ?& T+ K5 }* u
其中@sum(days(I) | I #le# 5:
% |% a( G6 \$ N+ O* l      start(@wrap(J+I+2,7))) >= required(J)); 是什么意思啊?我知道比如周一要排的人要从上个周四算起,但是不知道wrap中J+I+2和7各代表什么意思啊?还有这个函数怎么用啊?
) x+ b) m) w/ `  k! T: w' F请各位帮忙,谢谢了!
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
buct 实名认证       

26

主题

3

听众

1155

积分

  • 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
    , e: j/ J  K# u0 R" i- ~2 h一个员工工作一天算一个工期
    8 A) K7 O2 I0 I+ C所有的天数加起来:总工期
    回复

    使用道具 举报

    追梦者 实名认证       

    13

    主题

    4

    听众

    594

    积分

    升级  98%

    该用户从未签到

    国际赛参赛者

    新人进步奖

    群组数模应用

    群组LINGO

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

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

    群组Mathematica研究小组

    本帖最后由 追梦者 于 2009-8-13 10:37 编辑 & \; y% c4 z7 P, H
    @wrap(index,limit)函数在循环、多阶段计划编程中经常用到!表示index模limit再加1,limit相当于一个周期。~
    ! C* T& A  M  [371568491 发表于 2009-4-22 22:35
    7 N- |1 m1 B2 \" B
    小弟与上面这位仁兄的理解稍有不同,英美中星期表示与我们不同,我们将星期一看成第一天,而他们则是将星期日看成第一天。在lingo中sun就表示第一天,用数字0标识。因此@wrap(index,limit)的用法就是index模limit而不加1。
    % L, V" C5 Z$ K- G# h3 n你可以运行下面的结论来看一看:
    ; A/ _, C6 d! v, h: w; E2 D, Q3 R这是原程序
    + x& y% C8 c: r% V  D# w5 X7 Qmodel:) ~) ~: [6 P( s- N* _3 f  p2 Y
    sets:
    ) U+ O( T- E' Q7 I9 L  days/mon..sun/: required,start;
    7 R' R# |8 Y8 D+ P& [( vendsets
    / T2 r: z5 U' ?% c, q* c, j* Bdata:! B4 S- U, C2 ?: y! X4 p+ _1 T
      !每天所需的最少职员数;
    0 n$ x& c& Z3 |. u, g  required = 20 16 13 16 19 14 12; * M2 s/ p4 C( F" o7 \+ b
    enddata
    ! D' a) Y1 s1 }1 W5 L; g$ Y!最小化每周所需职员数;
    3 {4 y9 t- X. o" [( T  min=2 }9 r  H- N+ f1 |  }4 |
    @sum(days:start);6 ]; e- M# L. D. Y1 r9 X, Z" i
      @for(days(J):
    * A! Z3 p6 G: n# |% D    @sum(days(I) | I #le# 5:
    & K$ W  Q% T1 O1 S3 j: C      start(@wrap(J+I+2,7))) >= required(J));
    1 W9 u5 K7 W4 G* I5 y- z; p; i! g!外国人的第一天是星期日;
    & C- F2 u* T5 t- T( u9 d: uend
    3 I, E) L! n) j# u. G/ _将上面的程序中的集修改为 " q+ ]5 v/ K1 l3 y+ c
    sets:3 I" q6 W2 o8 j$ f3 X. @6 S$ r8 T
    days/1 2 3 4 5 6 0/: required,start;
    * ?; m& l$ k' s% Z1 @  Uendsets
    ! f# }0 l  \4 K, c7 f- f% C在运行效果一样,证明了我的结论。

    点评

    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的值; c) v9 [' M& K
    我个人觉得也不是教程上说的加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-11-7 10:36 , Processed in 1.193423 second(s), 106 queries .

    回顶部