QQ登录

只需要一步,快速开始

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

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

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

1

主题

4

听众

29

积分

升级  25.26%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2009-4-22 11:37 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
本帖最后由 厚积薄发 于 2010-1-26 21:10 编辑   U( g( g5 O4 Y$ w0 `; ?  d6 ]
# D4 s/ x1 v6 U4 o2 Z9 Q
看到一个题:
; H0 f( H6 }& N* p( n职员时序安排模型  
+ Y5 C0 v: N. Q/ h一项工作一周 7 天都需要有人(比如**工作) ,每天(周一至周日)所需的最少职员数为 20、16、13、16、19、14 和 12,并要求每个职员一周连续工作 5 天,试求每周所需最少职员数,并给出安排。注意这里我们考虑稳定后的情况。
1 N- i4 }$ ^9 Ymodel: # T0 Z/ z7 t; ~# \& `- m( K( Q
sets: ' a8 x: x; g7 q9 @% Z
  days/mon..sun/: required,start; ! T$ `( K5 {) E3 ~
endsets
3 I1 R- ^8 V! A6 O2 [( Ydata: + V% ~7 G% R6 y' n4 \7 d
  !每天所需的最少职员数; . \! P9 @9 j* n0 z
  required = 20 16 13 16 19 14 12;  6 a3 Y& P* k: b% |9 X% W" |
enddata 7 {' X* r, W5 X5 D. I" T
!最小化每周所需职员数;
, N+ f$ [& H4 F' R4 f3 W8 K" P  min=@sum(days: start); 4 \9 d" V3 p7 i6 F: X9 {
  @for(days(J):
  d5 V6 Y, }, G9 j/ S    @sum(days(I) | I #le# 5:
( Z' F, T0 ?  r- }      start(@wrap(J+I+2,7))) >= required(J)); ( Y# y# c0 X- N4 _, j' \
end5 ?- g: Y+ T. X7 E. H7 p9 X

; v, {; b  I6 j7 h2 b+ I7 Z其中@sum(days(I) | I #le# 5:
$ s$ w8 D5 |% e/ B# y1 u      start(@wrap(J+I+2,7))) >= required(J)); 是什么意思啊?我知道比如周一要排的人要从上个周四算起,但是不知道wrap中J+I+2和7各代表什么意思啊?还有这个函数怎么用啊?
; s3 B. |( c) _% 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
    $ e0 W' n4 D) r2 p2 m+ f一个员工工作一天算一个工期. `  o" ?1 u- g. |
    所有的天数加起来:总工期
    回复

    使用道具 举报

    追梦者 实名认证       

    13

    主题

    4

    听众

    594

    积分

    升级  98%

    该用户从未签到

    国际赛参赛者

    新人进步奖

    群组数模应用

    群组LINGO

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

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

    群组Mathematica研究小组

    本帖最后由 追梦者 于 2009-8-13 10:37 编辑 # G9 J1 m+ w2 m* A
    @wrap(index,limit)函数在循环、多阶段计划编程中经常用到!表示index模limit再加1,limit相当于一个周期。~
      _+ c' f6 ?( e  W# h371568491 发表于 2009-4-22 22:35

    6 Q% s/ [( W) w9 Y( j* g9 s小弟与上面这位仁兄的理解稍有不同,英美中星期表示与我们不同,我们将星期一看成第一天,而他们则是将星期日看成第一天。在lingo中sun就表示第一天,用数字0标识。因此@wrap(index,limit)的用法就是index模limit而不加1。
    : o! @9 ^0 i+ B1 L; [, X0 N. K9 i你可以运行下面的结论来看一看:2 {& X2 f% N# R3 R8 A0 r
    这是原程序
    : i& }2 k* `! Z2 m( v7 Amodel:
    8 f1 Y0 x! w& U! D8 Z. jsets:
    / U) }# S' I( o  X4 z+ u- p  days/mon..sun/: required,start;( \8 J/ U& T. u( f  z
    endsets; e  [6 e2 m/ a9 E7 ~: o
    data:
    7 Y! D. r8 }+ G# T! w1 j  !每天所需的最少职员数;% `% h! b, p4 w! [
      required = 20 16 13 16 19 14 12;
    2 s) j7 \( M) `7 Tenddata5 s, H: G# T, V$ Q
    !最小化每周所需职员数;# O2 K* b* k! X1 J; |) X8 E: B3 c
      min=
    6 B/ R* r4 K5 e( u+ Q: X@sum(days:start);: ~0 S6 ^/ I1 H8 R9 W8 v) @
      @for(days(J):
    ; [2 O& G7 k' C5 J    @sum(days(I) | I #le# 5:
    7 z, U3 k1 g) H0 v+ L/ Q5 Q* t7 u      start(@wrap(J+I+2,7))) >= required(J));
    2 m- S% I& ^# k6 J!外国人的第一天是星期日;
    / \9 V1 [0 v/ S$ ?8 Z: ^end
    + ^4 i) O( x* W6 |) ^将上面的程序中的集修改为 % Z4 V: Y- N8 ?4 l0 h
    sets:
    3 t6 @* J: m2 v& m6 w9 Fdays/1 2 3 4 5 6 0/: required,start;& N: I1 Q% H5 v! [
    endsets
    ( ]% l( c1 q4 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的值1 `; H0 s8 d  b, @0 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, 2026-6-9 18:21 , Processed in 0.462088 second(s), 106 queries .

    回顶部