QQ登录

只需要一步,快速开始

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

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

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

1

主题

4

听众

29

积分

升级  25.26%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2009-4-22 11:37 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
本帖最后由 厚积薄发 于 2010-1-26 21:10 编辑 0 [' ?& S, k9 x$ t% h7 ]  c
: [) X; \, K3 N0 A
看到一个题:0 g: a/ V& l$ C0 ^
职员时序安排模型  " h' @, A- l+ O0 V# g; h0 z
一项工作一周 7 天都需要有人(比如**工作) ,每天(周一至周日)所需的最少职员数为 20、16、13、16、19、14 和 12,并要求每个职员一周连续工作 5 天,试求每周所需最少职员数,并给出安排。注意这里我们考虑稳定后的情况。
9 ~$ k% {$ G! o0 C) {model:
) y; `( W$ ~" J" L1 O' {sets:
7 y% T6 A/ k7 D; l8 B  days/mon..sun/: required,start; 8 i: c& c2 G% J
endsets $ t7 D& G" @' L
data:
6 \' T5 B0 `! u" M  \1 g  !每天所需的最少职员数; : P4 B8 x& g- j
  required = 20 16 13 16 19 14 12;  
+ |8 }* v* X) Z+ ^) `enddata 1 l5 C5 X0 T. B0 G1 _, h0 ~
!最小化每周所需职员数;
) e3 t9 j: U! X6 F1 B  min=@sum(days: start); ) m/ R2 M# a5 X
  @for(days(J):
' B5 s0 ]+ }/ I' S    @sum(days(I) | I #le# 5: $ f# m0 P( Q9 r2 U7 P
      start(@wrap(J+I+2,7))) >= required(J)); . P6 J6 K8 B) {/ \2 p. l* S
end! ^6 I- X+ U: [; }) g6 u* N2 N6 m
8 }0 S  x$ I/ l6 N- r" ^
其中@sum(days(I) | I #le# 5: " B+ @' }9 l3 W- @; [
      start(@wrap(J+I+2,7))) >= required(J)); 是什么意思啊?我知道比如周一要排的人要从上个周四算起,但是不知道wrap中J+I+2和7各代表什么意思啊?还有这个函数怎么用啊?
8 Y  K% B1 E. b9 k% |请各位帮忙,谢谢了!
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
    4 \  h1 T2 B* k( I一个员工工作一天算一个工期
    ) X, t3 }! c; m2 S所有的天数加起来:总工期
    回复

    使用道具 举报

    追梦者 实名认证       

    13

    主题

    4

    听众

    594

    积分

    升级  98%

    该用户从未签到

    国际赛参赛者

    新人进步奖

    群组数模应用

    群组LINGO

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

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

    群组Mathematica研究小组

    本帖最后由 追梦者 于 2009-8-13 10:37 编辑
    # F* Z$ E. m, R5 a) ]
    @wrap(index,limit)函数在循环、多阶段计划编程中经常用到!表示index模limit再加1,limit相当于一个周期。~# d# v% A, H/ @0 Q/ z& f
    371568491 发表于 2009-4-22 22:35

    $ g8 B% i# _( P6 X4 m小弟与上面这位仁兄的理解稍有不同,英美中星期表示与我们不同,我们将星期一看成第一天,而他们则是将星期日看成第一天。在lingo中sun就表示第一天,用数字0标识。因此@wrap(index,limit)的用法就是index模limit而不加1。
    0 E3 P+ r' {3 `, n你可以运行下面的结论来看一看:7 ^4 W% M# P  e% M  E
    这是原程序) J/ J4 z# \  p/ @1 P% X0 a7 \# c; ?
    model:6 h* x0 @5 [, z: k' K( f6 w5 x
    sets:. W1 }8 M% g1 V# J5 j% o7 u' u
      days/mon..sun/: required,start;
    . j* J0 f1 z  H8 I, i. `3 M% i/ Kendsets
    5 |3 j4 _* c4 gdata:
    / T, y7 [/ z5 O& I2 {. N  !每天所需的最少职员数;* D1 W/ x. X; z& Y# I1 z6 j4 ^. G
      required = 20 16 13 16 19 14 12; % M- N6 p  I$ q0 I2 f0 {3 D
    enddata
    " g1 B) W* r6 h( L2 p" N5 R!最小化每周所需职员数;
    ! a" T. N+ Q- Z- h: o. }; y  min=
    - J* i* I# y5 g# @$ r@sum(days:start);- Y- U% D! V' u6 i/ Y. B0 R& L
      @for(days(J):
    ; Y* X# l7 y+ K  B6 m8 m5 z    @sum(days(I) | I #le# 5:
    / Y" {3 c0 }6 D+ z/ T      start(@wrap(J+I+2,7))) >= required(J));9 l0 a- \3 T  `) K9 Q/ g
    !外国人的第一天是星期日;( l0 g9 B$ ]% S+ Y7 w
    end
    0 j$ h% ~0 j) w+ }将上面的程序中的集修改为
    - R9 U# X& h9 R4 b- x6 osets:2 C9 `! Y2 w$ D8 M
    days/1 2 3 4 5 6 0/: required,start;
    + O2 k9 n5 A, A% Wendsets
    # l. N( t* d3 L2 e- X0 x在运行效果一样,证明了我的结论。

    点评

    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的值( u% ?) a3 \6 u; U- G" L0 ]
    我个人觉得也不是教程上说的加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-4-20 13:55 , Processed in 0.508889 second(s), 107 queries .

    回顶部