QQ登录

只需要一步,快速开始

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

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

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

1

主题

4

听众

29

积分

升级  25.26%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2009-4-22 11:37 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
本帖最后由 厚积薄发 于 2010-1-26 21:10 编辑
/ w1 |6 u7 M5 X: v3 y- b5 b$ k
0 C/ j: l/ Y: P1 y! L* ~5 C% C看到一个题:, {+ Y) f5 k7 H: o$ ^
职员时序安排模型  
( M& u1 u. `3 ]0 ~一项工作一周 7 天都需要有人(比如**工作) ,每天(周一至周日)所需的最少职员数为 20、16、13、16、19、14 和 12,并要求每个职员一周连续工作 5 天,试求每周所需最少职员数,并给出安排。注意这里我们考虑稳定后的情况。
) X' ]! N& o! n% N# ]model:
, k4 K9 P5 w2 Esets: ) q6 K/ O8 p  n+ n
  days/mon..sun/: required,start;
* a0 i: ~6 w. Kendsets
2 e+ v$ f6 U, n  f$ }4 c9 odata: & v0 }7 Z8 `0 C+ Y+ N6 `
  !每天所需的最少职员数; 4 O  j0 T# |! M$ z4 U& X  v
  required = 20 16 13 16 19 14 12;  
. V& r7 e' I4 B/ [enddata
2 s) _) ]" s7 Y  L& Z!最小化每周所需职员数; 3 p) i+ ?5 U8 S) Q2 g
  min=@sum(days: start); ' Q& @& }# L# ?) _0 w, x% _5 a
  @for(days(J): / h+ v" F5 T4 s" H( ]2 u
    @sum(days(I) | I #le# 5:
# V/ Q, @: E2 [6 i      start(@wrap(J+I+2,7))) >= required(J)); # h+ P0 z! P5 k9 C% s9 O
end% i- }: M7 S$ W8 S  r5 B
) i4 A( f: R( t3 ?+ m4 n
其中@sum(days(I) | I #le# 5:
$ `) M+ l7 O. {6 C/ o1 w2 ]      start(@wrap(J+I+2,7))) >= required(J)); 是什么意思啊?我知道比如周一要排的人要从上个周四算起,但是不知道wrap中J+I+2和7各代表什么意思啊?还有这个函数怎么用啊?  @! g9 l% B1 u0 m4 R
请各位帮忙,谢谢了!
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
    , ]3 N7 q7 S% M  Z- W6 `  @一个员工工作一天算一个工期- h4 U# N  P8 E& o$ m9 z% ^1 Z
    所有的天数加起来:总工期
    回复

    使用道具 举报

    追梦者 实名认证       

    13

    主题

    4

    听众

    594

    积分

    升级  98%

    该用户从未签到

    国际赛参赛者

    新人进步奖

    群组数模应用

    群组LINGO

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

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

    群组Mathematica研究小组

    本帖最后由 追梦者 于 2009-8-13 10:37 编辑
    + |- i( P) L8 |% |. \' h+ E& p
    @wrap(index,limit)函数在循环、多阶段计划编程中经常用到!表示index模limit再加1,limit相当于一个周期。~
    9 V0 K* x: m4 ^+ t) T9 s: I371568491 发表于 2009-4-22 22:35
    / [8 B7 A+ T) V) D4 P; V+ {
    小弟与上面这位仁兄的理解稍有不同,英美中星期表示与我们不同,我们将星期一看成第一天,而他们则是将星期日看成第一天。在lingo中sun就表示第一天,用数字0标识。因此@wrap(index,limit)的用法就是index模limit而不加1。/ K% `- m( |) v) n, n7 G% a
    你可以运行下面的结论来看一看:
    % K6 i$ W$ c/ r5 k这是原程序/ y. R6 d+ k) d; v3 N
    model:
    0 w  I; m. c$ _- isets:
    ' [# t3 k9 K& P' w  days/mon..sun/: required,start;
    + M3 K# r5 z9 A7 [3 E0 T: Pendsets" w3 X/ _! E$ U3 H  `6 n6 C
    data:
    1 i6 i# t3 y! K; E& R" d  !每天所需的最少职员数;! m1 z+ [# @( V& G/ T
      required = 20 16 13 16 19 14 12;
    ! n2 u; C0 Y% h+ Benddata$ u% o* o: a1 i' U# @" K
    !最小化每周所需职员数;  B1 ~; J3 c; m% h% o0 C* C, A
      min=
    4 ~1 l2 V" R# [7 O) h@sum(days:start);7 H. Y/ @) d% H6 C- e
      @for(days(J):+ R: F; F. T1 h
        @sum(days(I) | I #le# 5:
    ' o2 f: X* a. A# ?( Z: h      start(@wrap(J+I+2,7))) >= required(J));
    / o$ ~* D* z& b; E/ n# S' Q!外国人的第一天是星期日;
    : L; A$ Z4 C/ l& W' Mend, I, @8 E* o  C% _9 Z
    将上面的程序中的集修改为
    ) i- }. P5 {- n' N$ Dsets:
    7 [5 ?6 C8 k1 _5 m) mdays/1 2 3 4 5 6 0/: required,start;! `; `/ X3 B' Z5 z& @1 V: v) _4 Z
    endsets- k$ I! S/ v8 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的值
    ) V9 B5 A. n% q! Q6 i我个人觉得也不是教程上说的加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-5-5 22:02 , Processed in 0.568985 second(s), 106 queries .

    回顶部