QQ登录

只需要一步,快速开始

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

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

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

1

主题

4

听众

29

积分

升级  25.26%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2009-4-22 11:37 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
本帖最后由 厚积薄发 于 2010-1-26 21:10 编辑 % E) A1 `4 e- `% }& @- Q& _( K5 v
- }+ {  L& m4 R( ?
看到一个题:
9 A( u, T6 w5 }& R职员时序安排模型  6 p5 L+ _1 B; A9 ^- X5 p- {$ y
一项工作一周 7 天都需要有人(比如**工作) ,每天(周一至周日)所需的最少职员数为 20、16、13、16、19、14 和 12,并要求每个职员一周连续工作 5 天,试求每周所需最少职员数,并给出安排。注意这里我们考虑稳定后的情况。
  b' }! N) }  `" Tmodel:
# ^) m4 \9 J/ Z% r/ m8 J  ?$ }sets: : ~7 i3 G# y6 A" m! Z; i
  days/mon..sun/: required,start; + z/ V2 `" s9 k- B6 v5 {7 K
endsets $ O% j( [, K5 e. @, v
data:
) z) F* T7 N6 F7 l8 L' h! z  !每天所需的最少职员数; 0 o$ G3 ]6 }! R  ]% N3 Q$ Y
  required = 20 16 13 16 19 14 12;  
. h3 \8 l+ K3 x6 q) Q, s+ k; t: zenddata 7 Q+ K( n4 ~5 h8 T6 `* n
!最小化每周所需职员数; % ]3 [% r$ [6 M, l. |- A
  min=@sum(days: start);
; E& P& A' U, Y/ j; V! ^+ r  @for(days(J):
: ^% d/ \# K! v* B) i  s& ]8 U% u0 K    @sum(days(I) | I #le# 5: 5 o! J* |0 n/ }  b( z
      start(@wrap(J+I+2,7))) >= required(J));
" H1 I  K) i/ e8 rend4 T; v7 x, Q3 c. H
' @; w8 I/ F% u% ?
其中@sum(days(I) | I #le# 5: . u! k9 M  C' O7 V: ?: z0 X# s
      start(@wrap(J+I+2,7))) >= required(J)); 是什么意思啊?我知道比如周一要排的人要从上个周四算起,但是不知道wrap中J+I+2和7各代表什么意思啊?还有这个函数怎么用啊?% S& ^" M3 S; A& V  e: Z! x
请各位帮忙,谢谢了!
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
    $ _( M; \8 s4 L/ B' V一个员工工作一天算一个工期3 M( ~/ c7 A, @9 F" [
    所有的天数加起来:总工期
    回复

    使用道具 举报

    追梦者 实名认证       

    13

    主题

    4

    听众

    594

    积分

    升级  98%

    该用户从未签到

    国际赛参赛者

    新人进步奖

    群组数模应用

    群组LINGO

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

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

    群组Mathematica研究小组

    本帖最后由 追梦者 于 2009-8-13 10:37 编辑
    " `! w8 V; I9 K1 w" [
    @wrap(index,limit)函数在循环、多阶段计划编程中经常用到!表示index模limit再加1,limit相当于一个周期。~
    4 f+ A  `. a, N  r1 q371568491 发表于 2009-4-22 22:35

    2 |5 B! ?) O; [* o小弟与上面这位仁兄的理解稍有不同,英美中星期表示与我们不同,我们将星期一看成第一天,而他们则是将星期日看成第一天。在lingo中sun就表示第一天,用数字0标识。因此@wrap(index,limit)的用法就是index模limit而不加1。/ R$ N0 j+ ?: F1 [; I+ M; N
    你可以运行下面的结论来看一看:$ Z( q+ k3 ~1 ~6 D! S: _& a0 W
    这是原程序9 ^" v2 S' l- d( h* V4 }( C6 j
    model:' ~& R  E# x6 n8 ^
    sets:
    ; p* H& s$ h2 ~+ y  days/mon..sun/: required,start;
    / N. `) G. R3 X2 W* f6 v6 E6 Z, F, dendsets$ D$ `8 ^' T+ x) M& b  `" a
    data:
    6 N) C2 ?7 k/ l5 @/ ^  !每天所需的最少职员数;
    9 ]7 T: N: Y& D( V2 {  required = 20 16 13 16 19 14 12;
    & P) u$ S; ]2 h2 Tenddata% d6 I9 k5 b, G( F% M1 @2 t+ X
    !最小化每周所需职员数;
    0 j8 j: h& p( V) C4 z1 x1 J  min=  e" v& V- R! f2 L0 k( R
    @sum(days:start);- M% k! G0 A- X  u, n: E
      @for(days(J):
    : U$ Z" b4 D# H; V3 t9 A" O6 \    @sum(days(I) | I #le# 5:5 c- f: p7 A6 O, {' N+ N3 L
          start(@wrap(J+I+2,7))) >= required(J));
    / }: Q7 s) G8 S- ~!外国人的第一天是星期日;/ _$ c% V+ X6 d1 H0 H6 L0 L1 P/ f8 {
    end
    2 C  J; P; x. l* K/ Y9 f将上面的程序中的集修改为
    ' g* W( b# l  {$ o: u1 S$ L% `- M& g3 zsets:
    * A+ J( c1 E& M3 w2 W3 d4 Gdays/1 2 3 4 5 6 0/: required,start;  M9 u2 m5 k* l7 l3 B) K7 U# \
    endsets$ M6 X4 C- ~+ ^* N+ S: 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的值% \$ Q  B1 }+ ^
    我个人觉得也不是教程上说的加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-8-6 06:02 , Processed in 0.527634 second(s), 107 queries .

    回顶部