QQ登录

只需要一步,快速开始

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

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

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

1

主题

4

听众

29

积分

升级  25.26%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2009-4-22 11:37 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
本帖最后由 厚积薄发 于 2010-1-26 21:10 编辑
0 m9 ~* K" l( h8 d& b9 c! [* M
3 g3 q! D6 o* _2 R( ^$ r; G看到一个题:0 g* r6 X0 h/ U* [6 z  y" Z
职员时序安排模型  
" E; o# z4 F  a8 z7 N% }) X7 b0 e一项工作一周 7 天都需要有人(比如**工作) ,每天(周一至周日)所需的最少职员数为 20、16、13、16、19、14 和 12,并要求每个职员一周连续工作 5 天,试求每周所需最少职员数,并给出安排。注意这里我们考虑稳定后的情况。
0 n- w( f9 K# [, n: O( j2 Gmodel:
7 y9 u0 J" g* J/ q' B$ S& x8 vsets:
, r5 J7 n1 r% ?" M$ G$ i  days/mon..sun/: required,start;
! z( j. X4 W( s0 n! \endsets
, u/ q" H) Q$ ]+ k9 }data: 3 M( \1 q0 Y* H7 o/ @/ N
  !每天所需的最少职员数; 7 g1 f6 n& p, Q1 J$ l( W, ]
  required = 20 16 13 16 19 14 12;  
9 e: _- l6 Y4 Q  v0 Eenddata 5 I: B; A$ w# _; }& x+ C4 p# j
!最小化每周所需职员数;
! y/ Z9 L- }/ i' V  _4 Q1 \: _& s  min=@sum(days: start);
4 l' U+ s$ H  \  @for(days(J):
8 w* w1 i- p, t" Z# Y    @sum(days(I) | I #le# 5:
/ K9 q; q) j. F! V* K$ ?4 T* h      start(@wrap(J+I+2,7))) >= required(J));
8 ~6 I8 S. @: J/ [1 w6 k4 @/ @end; m$ T7 W9 o( q& i5 G$ j
3 F) o/ Y# z" n5 Q8 E; D$ C& ]% {
其中@sum(days(I) | I #le# 5: 8 |. K# G" v2 S
      start(@wrap(J+I+2,7))) >= required(J)); 是什么意思啊?我知道比如周一要排的人要从上个周四算起,但是不知道wrap中J+I+2和7各代表什么意思啊?还有这个函数怎么用啊?
9 C1 l1 _+ z3 M6 ]3 m4 C# }请各位帮忙,谢谢了!
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 , q5 c  r! P# i+ O& u  Z
    一个员工工作一天算一个工期
    , A; ?+ y2 r  T# Y1 G: N7 {" m4 }所有的天数加起来:总工期
    回复

    使用道具 举报

    追梦者 实名认证       

    13

    主题

    4

    听众

    594

    积分

    升级  98%

    该用户从未签到

    国际赛参赛者

    新人进步奖

    群组数模应用

    群组LINGO

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

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

    群组Mathematica研究小组

    本帖最后由 追梦者 于 2009-8-13 10:37 编辑 2 _2 }4 A( u% Z' D2 U- C
    @wrap(index,limit)函数在循环、多阶段计划编程中经常用到!表示index模limit再加1,limit相当于一个周期。~8 X7 \: |; ?# g; j9 q' E& r
    371568491 发表于 2009-4-22 22:35
    ' t: I8 J$ M1 C+ p+ {: \
    小弟与上面这位仁兄的理解稍有不同,英美中星期表示与我们不同,我们将星期一看成第一天,而他们则是将星期日看成第一天。在lingo中sun就表示第一天,用数字0标识。因此@wrap(index,limit)的用法就是index模limit而不加1。
    2 v; Q' U% C6 \- c  g你可以运行下面的结论来看一看:
    + K# \3 g9 q% _* [. n, S5 Y这是原程序
    7 w! d% h8 L& H# _model:( v4 |* r; A0 G+ f
    sets:
    ! [7 b& d# \$ s; v) o  days/mon..sun/: required,start;& f0 d0 J: r* }" ?8 R
    endsets  x; z0 B( S  d& o5 L$ F% \8 x* k" J
    data:4 e3 E5 t2 l5 m$ f% D) _
      !每天所需的最少职员数;
    8 p) c3 C" M2 b% X, }  required = 20 16 13 16 19 14 12; : M2 X# P4 S( H0 e7 z
    enddata
    + ]7 j  Y6 _* e/ |!最小化每周所需职员数;! E+ X& P8 \, @: R+ Z
      min=
    - f8 z/ t% y$ M: N@sum(days:start);- _' Y; h9 v& }9 O6 W
      @for(days(J):
    / n2 X$ C8 _2 U$ _    @sum(days(I) | I #le# 5:" t% F7 f. M! e0 r2 f5 G4 `
          start(@wrap(J+I+2,7))) >= required(J));3 c+ z+ Y1 R: }8 U/ R" F
    !外国人的第一天是星期日;
    3 i6 d! D0 I2 {; n: ~4 f/ cend7 {7 i% @. ?% I% {2 I% X1 `
    将上面的程序中的集修改为 : m6 }9 G" U( j$ R% F9 Y
    sets:
    6 N; [/ d# D3 Q2 S! ?: Vdays/1 2 3 4 5 6 0/: required,start;
    / {3 N3 L- K6 g! J( T$ rendsets3 w. z+ P0 `( p& }- x9 u7 R
    在运行效果一样,证明了我的结论。

    点评

    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的值
    ! D1 G5 ^- M0 B3 O我个人觉得也不是教程上说的加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-5-5 20:59 , Processed in 0.498664 second(s), 109 queries .

    回顶部