QQ登录

只需要一步,快速开始

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

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

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

1

主题

4

听众

29

积分

升级  25.26%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2009-4-22 11:37 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
本帖最后由 厚积薄发 于 2010-1-26 21:10 编辑
. J: G9 K( M0 ?/ X( m
! {( v/ ~) |1 }& k# G. w, D8 r看到一个题:
& F6 E& C3 D( s职员时序安排模型  
8 _" W% v* _0 ?" ~  f* j3 z# z1 m一项工作一周 7 天都需要有人(比如**工作) ,每天(周一至周日)所需的最少职员数为 20、16、13、16、19、14 和 12,并要求每个职员一周连续工作 5 天,试求每周所需最少职员数,并给出安排。注意这里我们考虑稳定后的情况。
6 [' A+ J6 G3 T9 ~* kmodel:
( g/ |, C9 {7 K( bsets: : {1 r# i- Q8 c! Q5 m6 x
  days/mon..sun/: required,start; - Q1 E( Q" f7 J& N! v
endsets
3 r* B4 Q( f- ~5 T* ^data: 4 l! g/ m" p6 ?7 H7 p' t9 Y; b
  !每天所需的最少职员数; ( |; k, H1 q: Q7 g0 ~3 x
  required = 20 16 13 16 19 14 12;  
8 y  r3 q+ j. V9 U+ l1 r9 Oenddata
9 p* l! D0 b& y!最小化每周所需职员数; ( j! G1 A' A" U2 S) W
  min=@sum(days: start); 3 C/ _5 `  m3 A% J' g# D
  @for(days(J):
3 k$ z# y+ M3 p' B    @sum(days(I) | I #le# 5: 8 v7 L1 w+ ?2 z  N1 F/ m
      start(@wrap(J+I+2,7))) >= required(J)); 6 P. K2 n8 O% E% L8 I9 Z
end( b; K; }1 e, I7 t8 E) X7 R
7 e2 X. }: s' I1 B3 d1 d/ M/ F+ I
其中@sum(days(I) | I #le# 5: ) C% I5 ]* q/ W6 Z
      start(@wrap(J+I+2,7))) >= required(J)); 是什么意思啊?我知道比如周一要排的人要从上个周四算起,但是不知道wrap中J+I+2和7各代表什么意思啊?还有这个函数怎么用啊?8 ~+ g& @# r+ 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
    + I3 E9 b6 v  I5 L& W& q一个员工工作一天算一个工期
    / Q2 p9 c! y1 G' d7 b, i所有的天数加起来:总工期
    回复

    使用道具 举报

    追梦者 实名认证       

    13

    主题

    4

    听众

    594

    积分

    升级  98%

    该用户从未签到

    国际赛参赛者

    新人进步奖

    群组数模应用

    群组LINGO

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

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

    群组Mathematica研究小组

    本帖最后由 追梦者 于 2009-8-13 10:37 编辑 / Y1 Z/ E( S. f' ~' Y
    @wrap(index,limit)函数在循环、多阶段计划编程中经常用到!表示index模limit再加1,limit相当于一个周期。~
    " g. I+ Z. A- ?: b- r371568491 发表于 2009-4-22 22:35
    7 Z/ K& y1 Y0 o! V6 n! U2 t# @
    小弟与上面这位仁兄的理解稍有不同,英美中星期表示与我们不同,我们将星期一看成第一天,而他们则是将星期日看成第一天。在lingo中sun就表示第一天,用数字0标识。因此@wrap(index,limit)的用法就是index模limit而不加1。& y+ y7 J" L! s- {5 Q
    你可以运行下面的结论来看一看:) w) a+ K/ b( v8 k/ k
    这是原程序8 ]& j+ E! e9 u- S3 w) W4 N
    model:% J  \1 G& z8 e  A" _7 ~
    sets:' B. y, Z2 f% a/ o" k4 {$ h
      days/mon..sun/: required,start;' F% N! a2 R# ^) W+ f
    endsets3 X- U. ~. t: y' C1 k$ x8 D0 U
    data:
    2 W  M& C$ R7 ?0 u( u  !每天所需的最少职员数;& y3 S3 T" Q( A; m8 I* r* _
      required = 20 16 13 16 19 14 12; - s) T" m+ N( V6 N/ _5 S6 M# q
    enddata+ n' h# ^& d& a4 v0 A7 y
    !最小化每周所需职员数;: o$ }( e( k& Y$ x
      min=% s. ?; j+ x9 s  p4 C! f1 S
    @sum(days:start);) r/ Z: a. Y3 {, A# }- F$ m, e
      @for(days(J):
    7 f; {6 \; j2 s5 U# b! {% _. w, ?8 V    @sum(days(I) | I #le# 5:  F/ H. [* s/ k* {* S* [/ T
          start(@wrap(J+I+2,7))) >= required(J));3 h% C, g. Z3 Q5 N5 |$ C% M# }' w
    !外国人的第一天是星期日;
    , D2 z! H$ B, ~1 Qend
    3 ~6 c* H0 V- T2 i将上面的程序中的集修改为 0 v* T8 v' v. U& r
    sets:+ ^7 x: y( C+ \2 ?8 @9 j5 I, W
    days/1 2 3 4 5 6 0/: required,start;) _" h/ q2 z; r& |( c' W8 I
    endsets0 F: v5 J, P' o: S2 t8 O' ?
    在运行效果一样,证明了我的结论。

    点评

    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的值  E" b1 Y2 f8 I/ G: R: I
    我个人觉得也不是教程上说的加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 16:25 , Processed in 0.461682 second(s), 107 queries .

    回顶部