QQ登录

只需要一步,快速开始

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

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

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

1

主题

4

听众

29

积分

升级  25.26%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2009-4-22 11:37 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
本帖最后由 厚积薄发 于 2010-1-26 21:10 编辑
, O5 j, ~6 p; o1 d* l/ W, A- Q+ R6 _# g, [
看到一个题:
, U& {! \8 x- A! }6 r' k职员时序安排模型  
; T- v8 Y4 O2 Q9 w/ L3 G2 g* t一项工作一周 7 天都需要有人(比如**工作) ,每天(周一至周日)所需的最少职员数为 20、16、13、16、19、14 和 12,并要求每个职员一周连续工作 5 天,试求每周所需最少职员数,并给出安排。注意这里我们考虑稳定后的情况。 ) {3 H1 k$ f3 w$ G, V
model: 0 O, t: S9 \% N$ q; C) E# j
sets:
2 G: M! f2 a1 d- H  days/mon..sun/: required,start;
9 ~( ^! b, x: M0 y. nendsets - g) R8 @1 l6 a* `. {
data: % T7 H5 h% @) m( z+ }
  !每天所需的最少职员数;
2 T' k, D  N2 |$ v5 G: J  required = 20 16 13 16 19 14 12;  # u0 \7 Z. E. s0 s/ K
enddata
0 R. J. G9 F. o& Q!最小化每周所需职员数;
/ y5 }- S' p, c4 a/ H3 H2 G- g  min=@sum(days: start); $ C( ?; O9 N- Z$ J7 y
  @for(days(J):
- n0 Y% ^- X0 u7 d' }: m- U, P    @sum(days(I) | I #le# 5: / y6 k& l: B! o1 |" s
      start(@wrap(J+I+2,7))) >= required(J)); 1 k3 n6 o# }: X, y( M7 W
end
& N/ W, A( a; q, E% v4 X
: ]3 j# J& u3 T7 r6 c其中@sum(days(I) | I #le# 5:
) I9 d: H$ K$ r6 h7 c5 Y      start(@wrap(J+I+2,7))) >= required(J)); 是什么意思啊?我知道比如周一要排的人要从上个周四算起,但是不知道wrap中J+I+2和7各代表什么意思啊?还有这个函数怎么用啊?
* }, `, d# ~3 Y3 T6 b+ 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 7 h& M) c& w  U5 q) b
    一个员工工作一天算一个工期; Q- U# L- D) t8 x7 G4 y
    所有的天数加起来:总工期
    回复

    使用道具 举报

    追梦者 实名认证       

    13

    主题

    4

    听众

    594

    积分

    升级  98%

    该用户从未签到

    国际赛参赛者

    新人进步奖

    群组数模应用

    群组LINGO

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

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

    群组Mathematica研究小组

    本帖最后由 追梦者 于 2009-8-13 10:37 编辑 8 |$ t( ~/ E4 `6 N5 X$ ]
    @wrap(index,limit)函数在循环、多阶段计划编程中经常用到!表示index模limit再加1,limit相当于一个周期。~1 I! ]$ @/ H+ j# `1 g6 C" T+ K
    371568491 发表于 2009-4-22 22:35

    : F* g! |0 j& h+ o3 z* q小弟与上面这位仁兄的理解稍有不同,英美中星期表示与我们不同,我们将星期一看成第一天,而他们则是将星期日看成第一天。在lingo中sun就表示第一天,用数字0标识。因此@wrap(index,limit)的用法就是index模limit而不加1。9 {, q" }! C8 w8 g: z6 e
    你可以运行下面的结论来看一看:
    / f" {% a  C- s# x( n% ^这是原程序0 G9 T5 [% }" ?; n/ ?, g( c! Q. R/ i1 z
    model:3 R/ q6 S5 l: }- S  H8 w
    sets:
    + m! q+ b7 H/ J  days/mon..sun/: required,start;
    % |' ^+ \. }, u, O2 Vendsets
    ) K. i- l& r; @8 Odata:
    1 z4 s* U6 x+ H  S# p  !每天所需的最少职员数;4 k4 n& s8 t3 t4 I2 b
      required = 20 16 13 16 19 14 12; ; `: b8 _3 S% Y  A
    enddata- X! P" L# d& v% s7 O
    !最小化每周所需职员数;
    + n/ \$ u" B6 F) R' q  min=
    4 f, e; t/ D. J0 t8 Y* u3 x* [+ |: d! l@sum(days:start);1 w8 o* z" A- B' t& Z
      @for(days(J):
    ! {: r% M/ w* [1 K$ ~% L% {    @sum(days(I) | I #le# 5:* a. u, k2 u, ~. ?9 \" n: g; u
          start(@wrap(J+I+2,7))) >= required(J));
    * n$ i5 i) H$ [4 ~" b, x4 V* c!外国人的第一天是星期日;/ Q" x0 }: _' _" q+ o' ]9 o/ Y! B
    end2 J0 ^3 B6 B: m
    将上面的程序中的集修改为
    ! t8 w4 p! E# K# @" X$ A3 Isets:, c, d. i6 }. G: `0 R
    days/1 2 3 4 5 6 0/: required,start;
    $ k+ N% q' C% @3 Gendsets
    ) Z9 b2 O* y6 V' _% q% N' s在运行效果一样,证明了我的结论。

    点评

    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的值
    * Z# h, W- j' d6 V我个人觉得也不是教程上说的加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-8-6 05:03 , Processed in 0.547426 second(s), 107 queries .

    回顶部