QQ登录

只需要一步,快速开始

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

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

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

1

主题

4

听众

29

积分

升级  25.26%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2009-4-22 11:37 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
本帖最后由 厚积薄发 于 2010-1-26 21:10 编辑
9 _8 t2 }( \& V' S  f# q5 @2 I9 _; ^6 _5 K
看到一个题:' A" Q4 p: `9 m% Y8 r+ a
职员时序安排模型  / @- X* G* r: j& [- r8 I
一项工作一周 7 天都需要有人(比如**工作) ,每天(周一至周日)所需的最少职员数为 20、16、13、16、19、14 和 12,并要求每个职员一周连续工作 5 天,试求每周所需最少职员数,并给出安排。注意这里我们考虑稳定后的情况。 7 K- Y( F% U' e- s4 y+ C( |
model:
3 X+ f8 \9 h/ Q; s" D. F( s" O# ?sets:
2 h" t2 \# W+ o( O  days/mon..sun/: required,start; * k/ U- @# K9 d, B5 n
endsets - |* z: z* }% N# q4 a3 w- ?
data:
; M3 ]! f$ ~. a  !每天所需的最少职员数; . X: B0 t1 a- i7 G$ o* ?  `/ O% L3 |
  required = 20 16 13 16 19 14 12;  
: O) n* U$ v( ?4 W. Jenddata ( O' v& X& i7 C3 I
!最小化每周所需职员数; 6 B6 e* e: W& i0 S
  min=@sum(days: start);
8 q0 ^8 a8 r" t: n  @for(days(J): 6 B3 e2 u, {* @8 i' n
    @sum(days(I) | I #le# 5:
$ q: z9 p- f" T% ~      start(@wrap(J+I+2,7))) >= required(J)); : W( V! i9 T, q  a
end
' N. x. b9 p, @; b
3 l5 i* C5 G, l' V/ @; ^其中@sum(days(I) | I #le# 5: / H. x' I2 o* O+ {; h3 W' t
      start(@wrap(J+I+2,7))) >= required(J)); 是什么意思啊?我知道比如周一要排的人要从上个周四算起,但是不知道wrap中J+I+2和7各代表什么意思啊?还有这个函数怎么用啊?9 n5 h# ]* D* [5 j+ Z1 ]. Z6 e
请各位帮忙,谢谢了!
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
    6 N5 x/ f. [$ F一个员工工作一天算一个工期
    # u. w4 O: F4 c, [# P所有的天数加起来:总工期
    回复

    使用道具 举报

    追梦者 实名认证       

    13

    主题

    4

    听众

    594

    积分

    升级  98%

    该用户从未签到

    国际赛参赛者

    新人进步奖

    群组数模应用

    群组LINGO

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

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

    群组Mathematica研究小组

    本帖最后由 追梦者 于 2009-8-13 10:37 编辑 ) n! ^3 ?9 o# a6 o: Z
    @wrap(index,limit)函数在循环、多阶段计划编程中经常用到!表示index模limit再加1,limit相当于一个周期。~" R/ B8 S) G3 @( z- ]; i3 ^9 [: j0 ?
    371568491 发表于 2009-4-22 22:35
    ; f1 f$ i- F2 F
    小弟与上面这位仁兄的理解稍有不同,英美中星期表示与我们不同,我们将星期一看成第一天,而他们则是将星期日看成第一天。在lingo中sun就表示第一天,用数字0标识。因此@wrap(index,limit)的用法就是index模limit而不加1。0 I9 O  W* U+ S0 m8 G2 [" }; n
    你可以运行下面的结论来看一看:
    1 @$ E5 ]4 m$ G) E6 ~& z; W# L, D这是原程序- C) `, {* y$ a: q1 p$ |
    model:, E) L1 C/ F6 ^5 I
    sets:4 a" U5 {/ Z$ u8 D! P- U
      days/mon..sun/: required,start;' d+ D' o3 _( p
    endsets' m5 R6 H9 U# d4 S: ]8 w4 Q
    data:
    # ]4 K: e" I! j" E  !每天所需的最少职员数;
    % g1 S3 }, D  ?- z  required = 20 16 13 16 19 14 12; 8 z; b8 Q- S: O  y" u
    enddata
    - d+ p' P. \: E. c% w* q, x!最小化每周所需职员数;4 w  c0 _- V8 o( T+ J4 e7 s
      min=
    ! Z7 h. D. l  |3 B  p' ?@sum(days:start);' d1 @. o5 c- h. V. s: f
      @for(days(J):/ J/ b( A! o1 E7 f& U
        @sum(days(I) | I #le# 5:- v8 ~( ~  ~8 ^. N1 h( G# h# ]# M
          start(@wrap(J+I+2,7))) >= required(J));# A) d: J0 R! c7 g( @( I
    !外国人的第一天是星期日;
      X" ~) m# n- T1 q# [1 n- gend
    ) X2 v& y8 h9 l- P) K将上面的程序中的集修改为 ( Y0 A9 W0 t, d! E# S$ L) y
    sets:2 D# K2 v& W, g" a
    days/1 2 3 4 5 6 0/: required,start;  f* P- l. v. q, l2 D$ `
    endsets+ T- k& ~4 F) T( p
    在运行效果一样,证明了我的结论。

    点评

    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的值# a. _4 i$ z$ S+ ]7 r2 @! u4 A; 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, 2026-4-21 06:01 , Processed in 0.431276 second(s), 107 queries .

    回顶部