QQ登录

只需要一步,快速开始

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

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

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

1

主题

4

听众

29

积分

升级  25.26%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2009-4-22 11:37 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
本帖最后由 厚积薄发 于 2010-1-26 21:10 编辑 , b9 a* V- {" `# u

2 N) h+ F5 ^; {* F/ M+ h  N看到一个题:
& C% P/ `6 {& l9 h职员时序安排模型  % r( Q! x: _4 Q) L
一项工作一周 7 天都需要有人(比如**工作) ,每天(周一至周日)所需的最少职员数为 20、16、13、16、19、14 和 12,并要求每个职员一周连续工作 5 天,试求每周所需最少职员数,并给出安排。注意这里我们考虑稳定后的情况。 7 M' f) _( i# f0 K2 z8 {
model: # j- T! o$ a# J( T
sets:
. l! h1 E7 h# C) Q+ H, Z  days/mon..sun/: required,start; / B/ e+ S- P5 F9 v* }- g; [# A% }
endsets
* p) a2 H" s9 i' n( h4 K" z7 t! idata: ( z. P# }3 s1 O. V
  !每天所需的最少职员数;
4 a4 S5 u$ G# |; ]2 @  required = 20 16 13 16 19 14 12;  
; x, m1 p3 w, K" K/ a) O5 venddata
6 \8 p8 e4 k! Z  y! y) s!最小化每周所需职员数; ' v7 Y0 e* A3 D! i/ o
  min=@sum(days: start); 5 w% k0 C' ]3 s
  @for(days(J):
" u7 f9 R+ Y/ I    @sum(days(I) | I #le# 5: . K7 Y; Z4 X4 h& [/ }
      start(@wrap(J+I+2,7))) >= required(J)); ' T/ l- ?$ c! ]# H
end
, d$ i  w3 M2 g$ [- _% q  i: L' D. k! n+ {2 _1 ^9 S+ l# X6 c
其中@sum(days(I) | I #le# 5:
$ q% @0 c4 u# V2 t      start(@wrap(J+I+2,7))) >= required(J)); 是什么意思啊?我知道比如周一要排的人要从上个周四算起,但是不知道wrap中J+I+2和7各代表什么意思啊?还有这个函数怎么用啊?
7 D7 d) E  ?. H0 X请各位帮忙,谢谢了!
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
    % L; r6 \! m, X7 o0 X3 x3 g+ H一个员工工作一天算一个工期
    + C8 b1 D7 }* v# e% D  O6 r所有的天数加起来:总工期
    回复

    使用道具 举报

    追梦者 实名认证       

    13

    主题

    4

    听众

    594

    积分

    升级  98%

    该用户从未签到

    国际赛参赛者

    新人进步奖

    群组数模应用

    群组LINGO

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

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

    群组Mathematica研究小组

    本帖最后由 追梦者 于 2009-8-13 10:37 编辑
    - [; d( e+ z6 S* i' L3 D; j
    @wrap(index,limit)函数在循环、多阶段计划编程中经常用到!表示index模limit再加1,limit相当于一个周期。~; p6 b: L7 @$ Y% R- p* H0 P
    371568491 发表于 2009-4-22 22:35

    8 a& D1 a) ]9 [2 g小弟与上面这位仁兄的理解稍有不同,英美中星期表示与我们不同,我们将星期一看成第一天,而他们则是将星期日看成第一天。在lingo中sun就表示第一天,用数字0标识。因此@wrap(index,limit)的用法就是index模limit而不加1。) f$ F# ]( v/ U' z! M6 {$ ]( ]$ C" Z
    你可以运行下面的结论来看一看:
    ' u' v; S4 m% a6 H这是原程序
    7 \2 v+ v5 n7 P1 bmodel:" O1 ^4 }1 u/ k  @. L
    sets:/ W6 w% K5 m1 v; c
      days/mon..sun/: required,start;% @' k' s- ~; x. C: v( ]$ o
    endsets4 I5 Q# k5 T6 E$ [2 q0 y
    data:! Z: M6 X9 T) N/ U5 Q4 T
      !每天所需的最少职员数;
    9 t+ [( Q: v, `; r0 h4 g4 y, r  required = 20 16 13 16 19 14 12; ! L9 ~- h& D/ V3 I: f. N
    enddata  C) x% A- V6 F" v4 ^% s! n
    !最小化每周所需职员数;$ D, D$ B& p( b0 R2 A. x+ V" t3 ~' \
      min=
    0 Z# D  w  K  @4 l" B; t@sum(days:start);
    5 z/ f% e9 l9 L" i  @for(days(J):9 K6 G- c+ \0 u
        @sum(days(I) | I #le# 5:" a% p7 r4 O" k* A+ I$ X
          start(@wrap(J+I+2,7))) >= required(J));
    " u5 H, U, z5 b% Q% m0 }/ J!外国人的第一天是星期日;. _, T) \* q, m0 E! H  B! K
    end+ }  V: C  K7 [* a' H& g. H
    将上面的程序中的集修改为 $ r5 o7 \/ Z) ~) ~# h
    sets:. o6 n4 T$ m6 K# w+ l
    days/1 2 3 4 5 6 0/: required,start;% }5 m+ ~4 X% }4 |
    endsets
    4 o: G2 h# K+ U2 m) f在运行效果一样,证明了我的结论。

    点评

    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的值, ]: H# Q/ t" n3 C$ Y) {+ A
    我个人觉得也不是教程上说的加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-7-3 03:24 , Processed in 0.545380 second(s), 107 queries .

    回顶部