QQ登录

只需要一步,快速开始

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

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

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

1

主题

4

听众

29

积分

升级  25.26%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2009-4-22 11:37 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
本帖最后由 厚积薄发 于 2010-1-26 21:10 编辑 4 C. p! U6 m3 |- z, b$ v8 k) z

; ?, z+ m. P6 k7 E  z# |5 o" e看到一个题:8 `. H. |3 F4 {% k' X$ Q
职员时序安排模型    v1 B, a) L! y' `+ Q  [0 j
一项工作一周 7 天都需要有人(比如**工作) ,每天(周一至周日)所需的最少职员数为 20、16、13、16、19、14 和 12,并要求每个职员一周连续工作 5 天,试求每周所需最少职员数,并给出安排。注意这里我们考虑稳定后的情况。 , t- t, _$ W: a) V+ f+ c# w8 X
model: 0 s9 r+ A5 m6 U: g' N* v; n
sets:
7 E7 N) @& ?. o8 d  days/mon..sun/: required,start; . G3 m( |# X7 x( t& x) {, h* `
endsets
* t( c1 a; x* K  P  ^+ D, Ydata: ) I: ?. X1 X  p: {% H
  !每天所需的最少职员数;
# g% m! @7 o8 H) i8 \8 S; x  required = 20 16 13 16 19 14 12;    a% Y, h4 X' r4 n+ q. |4 D
enddata 6 o7 A) T& o1 X8 M! X4 I
!最小化每周所需职员数;
" @; ]6 t& Z( n* M& W  min=@sum(days: start); $ G* H2 }1 p& O
  @for(days(J): 1 O5 O3 A& v5 p! P+ \. B0 X- r/ j
    @sum(days(I) | I #le# 5: : Q5 }) n2 q7 P# o$ @/ C; c
      start(@wrap(J+I+2,7))) >= required(J)); 1 o+ i4 `. R/ g
end
: h: {' J6 H6 K2 R6 @4 N0 {' f- F' C3 m  R2 s8 O9 D4 u
其中@sum(days(I) | I #le# 5: " W, [/ u2 X+ \9 k( b
      start(@wrap(J+I+2,7))) >= required(J)); 是什么意思啊?我知道比如周一要排的人要从上个周四算起,但是不知道wrap中J+I+2和7各代表什么意思啊?还有这个函数怎么用啊?
: x) x9 h* \& z/ W0 d请各位帮忙,谢谢了!
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
    ( T5 P% E% s- v. Z6 T$ b7 w2 t一个员工工作一天算一个工期* P0 g2 @: U$ y7 U! }: N% L
    所有的天数加起来:总工期
    回复

    使用道具 举报

    追梦者 实名认证       

    13

    主题

    4

    听众

    594

    积分

    升级  98%

    该用户从未签到

    国际赛参赛者

    新人进步奖

    群组: 数模应用

    群组: LINGO

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

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

    群组: Mathematica研究小组

    本帖最后由 追梦者 于 2009-8-13 10:37 编辑
    - K% U3 W& @/ R
    @wrap(index,limit)函数在循环、多阶段计划编程中经常用到!表示index模limit再加1,limit相当于一个周期。~) {$ o5 |* N! \- R6 ]; \% _
    371568491 发表于 2009-4-22 22:35

    8 @8 Y3 y" a) Q3 B% Z: J小弟与上面这位仁兄的理解稍有不同,英美中星期表示与我们不同,我们将星期一看成第一天,而他们则是将星期日看成第一天。在lingo中sun就表示第一天,用数字0标识。因此@wrap(index,limit)的用法就是index模limit而不加1。0 j+ C$ o+ X  _' e
    你可以运行下面的结论来看一看:
    # w+ p& l9 b, l这是原程序* N: G  |1 b# M; V+ P! c( v
    model:
    * A: [- J. X* e; ysets:
    % Y; ~" J: o1 k3 G5 @& o* D  days/mon..sun/: required,start;& _8 R9 s# T6 Q9 p
    endsets5 M- n: s/ q: i3 P
    data:' |+ `# r5 `5 R1 C; f6 B
      !每天所需的最少职员数;4 Z+ v2 [$ D; }$ ^; e4 T
      required = 20 16 13 16 19 14 12; 7 n0 m3 @( D# P7 O3 M( @8 o
    enddata1 G9 D. G4 g* r$ h$ r+ t2 y
    !最小化每周所需职员数;% V! j5 V* H. o  h5 j; P
      min=7 D1 N, Z, r8 r: F1 R5 x* x
    @sum(days:start);0 O' U, X) J7 |( r# t
      @for(days(J):
    - r+ E$ k' i1 f9 S    @sum(days(I) | I #le# 5:
    ! j" C' a% y3 s; M# I, j# N      start(@wrap(J+I+2,7))) >= required(J));" W$ U5 P: b) h) K) s
    !外国人的第一天是星期日;
    + N; f/ w+ w& ?9 qend9 e: |5 O) n+ z3 z0 T5 _
    将上面的程序中的集修改为 : ^: ], Z* K: k$ T1 v. b
    sets:
    % b: w" s: R" N. i0 gdays/1 2 3 4 5 6 0/: required,start;
    # V+ R7 e+ e% {2 F: nendsets
    % y( m3 x6 y" C7 d' R. Y; x3 u在运行效果一样,证明了我的结论。

    点评

    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的值1 w! q2 G( M% z
    我个人觉得也不是教程上说的加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-9-27 18:50 , Processed in 0.524773 second(s), 107 queries .

    回顶部