QQ登录

只需要一步,快速开始

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

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

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

1

主题

4

听众

29

积分

升级  25.26%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2009-4-22 11:37 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
本帖最后由 厚积薄发 于 2010-1-26 21:10 编辑
  F3 G& y; [/ }
4 K5 ^8 {- n$ v  [看到一个题:' [& z' u6 R/ M/ z
职员时序安排模型  ; {1 G& |5 H* a, l- \7 a. j
一项工作一周 7 天都需要有人(比如**工作) ,每天(周一至周日)所需的最少职员数为 20、16、13、16、19、14 和 12,并要求每个职员一周连续工作 5 天,试求每周所需最少职员数,并给出安排。注意这里我们考虑稳定后的情况。
/ {3 A; C7 k4 B- Fmodel: 8 k( g9 y2 u+ K' ^) L- E7 \6 M! K- G
sets: ; H2 e' v: |" F1 D4 A
  days/mon..sun/: required,start; , Y# X* K+ e3 J
endsets
, d0 q) ?( S& o: Zdata: # E: n2 u& p0 |8 ^3 M4 `! j
  !每天所需的最少职员数;   u( ]& H: K& Y- M# Q7 [$ g1 G, r, J
  required = 20 16 13 16 19 14 12;  
1 F, F: a- i5 y3 o/ T9 Z9 penddata
( J' ^! ^" b% Z: w- }!最小化每周所需职员数; 8 x/ b- c+ Z9 v% M) ~* B8 `8 y
  min=@sum(days: start);
+ r8 k8 t/ }2 V% ~& p  @for(days(J):
, n/ W, f# x. T; R    @sum(days(I) | I #le# 5: 6 E. U& c4 g, o1 Z
      start(@wrap(J+I+2,7))) >= required(J)); - ]5 X% }) b; J* L2 S* M' r
end
/ w- D$ r; J8 y
. L# |" B; X3 Z, V' F其中@sum(days(I) | I #le# 5:
: ~, i5 p9 w; u, p9 H      start(@wrap(J+I+2,7))) >= required(J)); 是什么意思啊?我知道比如周一要排的人要从上个周四算起,但是不知道wrap中J+I+2和7各代表什么意思啊?还有这个函数怎么用啊?
2 y9 X2 ?8 `* n6 D$ @请各位帮忙,谢谢了!
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
buct 实名认证       

26

主题

3

听众

1151

积分

  • 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 F/ G: K1 @. x4 R. i9 }3 [
    一个员工工作一天算一个工期- T# s- h* `! H/ \
    所有的天数加起来:总工期
    回复

    使用道具 举报

    追梦者 实名认证       

    13

    主题

    4

    听众

    594

    积分

    升级  98%

    该用户从未签到

    国际赛参赛者

    新人进步奖

    群组数模应用

    群组LINGO

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

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

    群组Mathematica研究小组

    本帖最后由 追梦者 于 2009-8-13 10:37 编辑
    $ |/ y5 _  j) u% L/ \8 q
    @wrap(index,limit)函数在循环、多阶段计划编程中经常用到!表示index模limit再加1,limit相当于一个周期。~
    ! m/ S9 @2 B/ o. C0 H4 _% X5 l371568491 发表于 2009-4-22 22:35

    1 W% _1 e& v" V$ z小弟与上面这位仁兄的理解稍有不同,英美中星期表示与我们不同,我们将星期一看成第一天,而他们则是将星期日看成第一天。在lingo中sun就表示第一天,用数字0标识。因此@wrap(index,limit)的用法就是index模limit而不加1。
    + {1 ]- _) X) X; r5 Q  L/ A你可以运行下面的结论来看一看:
    3 N, F: t& s9 v3 F7 Y6 d) ^这是原程序
    % b& q' Z/ \* Z( Gmodel:
    % y8 h. B3 _- E4 u4 C: x' Esets:
    ! q# M! O, m- g& F/ s6 X. E  days/mon..sun/: required,start;9 ~4 C( x9 T% }$ m) Z* P" v
    endsets5 u9 q  }) K# A" E: q
    data:
    % V! ?" V  y& v5 \5 b, k& a  !每天所需的最少职员数;
    ) m/ R! b; \" A( S- [9 ~  required = 20 16 13 16 19 14 12;
    ; L- K, u% Q5 N  Senddata
    - D% m, ?' P/ A% L9 ?!最小化每周所需职员数;* N) u4 n' [4 G3 @: x! N" A
      min=; y- t, h. r$ t2 _
    @sum(days:start);! ]: c; h5 t8 B" |7 L+ T3 `
      @for(days(J):
    , G  {$ a! b3 e! ^- S' P% `; O    @sum(days(I) | I #le# 5:
    , k5 q4 l' C6 R/ m$ @# e      start(@wrap(J+I+2,7))) >= required(J));
    # h& _) @( H, N! C- S8 T& t!外国人的第一天是星期日;
    8 O  q7 r9 L' F- b% ]: kend) ~! H* i: D5 ?6 u
    将上面的程序中的集修改为 * d. {3 D% E) U% U+ M+ Z7 \
    sets:
    ! K' s: R- A+ A9 R4 M* l" Kdays/1 2 3 4 5 6 0/: required,start;
    9 E; l2 N  m6 ?! M. Y5 Jendsets
    $ }  l7 E' v: f0 D6 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的值9 a% i, d3 [, m7 f  d
    我个人觉得也不是教程上说的加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, 2024-4-23 19:35 , Processed in 0.637857 second(s), 106 queries .

    回顶部