QQ登录

只需要一步,快速开始

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

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

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

1

主题

4

听众

29

积分

升级  25.26%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2009-4-22 11:37 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
本帖最后由 厚积薄发 于 2010-1-26 21:10 编辑
6 j' P. U' Y3 m. T( `2 }6 Q: r4 l3 F
看到一个题:( s9 c" a9 x  X3 O7 _4 m  B* k1 s
职员时序安排模型  : N- j% N, I- s6 g2 d
一项工作一周 7 天都需要有人(比如**工作) ,每天(周一至周日)所需的最少职员数为 20、16、13、16、19、14 和 12,并要求每个职员一周连续工作 5 天,试求每周所需最少职员数,并给出安排。注意这里我们考虑稳定后的情况。
  r- M2 `4 n* x4 ?/ H8 lmodel: # d0 d$ ~! k! e
sets:
. l! E& j/ }' M5 j7 L2 k  days/mon..sun/: required,start; / T) Y! ~' ~4 I# e& Z
endsets
+ u9 I# `  n" {1 G7 s2 Xdata:
9 i" l8 {5 d" J2 J# C, @  !每天所需的最少职员数;
4 |# S- O8 }' z$ K) l+ Q  required = 20 16 13 16 19 14 12;  
  L! c/ O0 I- Q" E$ p0 C: [enddata 8 b# E( a- s& }9 g/ c; o  M
!最小化每周所需职员数;
3 e& B' ~% M9 a8 F" b  min=@sum(days: start);
+ d9 j4 P/ M7 Q, X$ @8 Y+ Q* m  @for(days(J):
# |8 p; O  c9 K. ?3 D    @sum(days(I) | I #le# 5: 9 `' @+ e# H/ b5 r, G+ [& u
      start(@wrap(J+I+2,7))) >= required(J)); 0 ~; v/ x/ U! |  e1 D
end
) H7 n$ V9 u; C6 U
$ N2 `6 l7 a: I, v! z4 ?( c其中@sum(days(I) | I #le# 5: . L* e8 I, q, L* L/ n9 w5 [, r4 Y
      start(@wrap(J+I+2,7))) >= required(J)); 是什么意思啊?我知道比如周一要排的人要从上个周四算起,但是不知道wrap中J+I+2和7各代表什么意思啊?还有这个函数怎么用啊?% q" ~& s& S  p. V& B( W
请各位帮忙,谢谢了!
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
buct 实名认证       

26

主题

3

听众

1155

积分

  • 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
    - d$ |: W; w/ X4 p1 s& I6 P& l" O一个员工工作一天算一个工期
    4 q/ y5 O& e2 |所有的天数加起来:总工期
    回复

    使用道具 举报

    追梦者 实名认证       

    13

    主题

    4

    听众

    594

    积分

    升级  98%

    该用户从未签到

    国际赛参赛者

    新人进步奖

    群组数模应用

    群组LINGO

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

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

    群组Mathematica研究小组

    本帖最后由 追梦者 于 2009-8-13 10:37 编辑
    3 I7 i+ l8 i, j$ }0 V* z/ U: J
    @wrap(index,limit)函数在循环、多阶段计划编程中经常用到!表示index模limit再加1,limit相当于一个周期。~
    ! T2 P& t; |: U+ A% p, e8 e. E371568491 发表于 2009-4-22 22:35
    ( X( v# c5 R- r) k) m- |
    小弟与上面这位仁兄的理解稍有不同,英美中星期表示与我们不同,我们将星期一看成第一天,而他们则是将星期日看成第一天。在lingo中sun就表示第一天,用数字0标识。因此@wrap(index,limit)的用法就是index模limit而不加1。  H  E- I3 e  |3 [0 P: x! q# o
    你可以运行下面的结论来看一看:
    * C  h; y; K, `4 G& m, x' P这是原程序
    4 w+ a1 n8 ^4 z5 l) @; A- K# pmodel:
    / A0 R) _3 f0 |3 v& Wsets:+ x0 ]! j; r. `( D& n8 W
      days/mon..sun/: required,start;8 t/ Z+ o! x3 I. Z- E, X7 m% `
    endsets
    # w* z7 H( i  D* }' l, K9 ]+ Fdata:0 _( V8 q" S! h8 q
      !每天所需的最少职员数;; a$ p# J7 A7 Y. b5 e6 ]
      required = 20 16 13 16 19 14 12;
    ! N7 p" \+ R! g2 f5 N4 P) h" Henddata2 D  M* \5 @/ o+ T+ L5 B& \5 O" d
    !最小化每周所需职员数;
    ; N( j, d" _: j+ L& X4 R  min=1 |" v; ]; @& W3 i6 n  W: B
    @sum(days:start);8 e& O; |$ o8 j. h
      @for(days(J):. m& K" d1 B# c
        @sum(days(I) | I #le# 5:2 t1 u5 h2 y9 u% u
          start(@wrap(J+I+2,7))) >= required(J));3 ~6 p& t, }# X7 X& T
    !外国人的第一天是星期日;
    ) k; b5 Q1 J9 V: S5 Nend2 _9 V  ]/ A& f9 v5 o4 P
    将上面的程序中的集修改为 ) t; D( O. B8 z' u
    sets:
    : W9 j4 [( _$ V$ u% _" t) ^5 z) p5 wdays/1 2 3 4 5 6 0/: required,start;
    , d- O) Y' }, u6 x2 Bendsets
    8 N9 a, R1 j' N, E; a  }# z& }在运行效果一样,证明了我的结论。

    点评

    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的值$ l8 D# r3 A3 m9 ?+ V# y, i0 _
    我个人觉得也不是教程上说的加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, 2025-11-8 10:30 , Processed in 0.832208 second(s), 106 queries .

    回顶部