QQ登录

只需要一步,快速开始

 注册地址  找回密码
楼主: guarguar
打印 上一主题 下一主题

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

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

2

主题

3

听众

26

积分

升级  22.11%

  • TA的每日心情
    开心
    2011-9-3 09:45
  • 签到天数: 1 天

    [LV.1]初来乍到

    群组Matlab讨论组

    群组LINGO

    群组数学建模

    群组数学建摸协会

    11#
    发表于 2011-7-2 10:31 |只看该作者
    |招呼Ta 关注Ta
    回复

    使用道具 举报

    吴楚 实名认证       

    0

    主题

    3

    听众

    215

    积分

    升级  57.5%

  • TA的每日心情
    郁闷
    2016-4-7 19:30
  • 签到天数: 63 天

    [LV.6]常住居民II

    该函数返回j=index-k*limit,其中k 是一个整数,取适当值保证j 落在区间[1,limit]内。该函数相当于index 模limit 再加1。该函数在循环、多阶段计划编制中特别有用。
    / a( b" y# u6 K7 b( y" J5 i7 }' W0 h* C
    通俗的解释是:用来转换集合两端的索引,在集合的另一端继续索引。也就是说,在集合循环函数中,当达到集合的最后(或第一个)成员后,可以用@WRAP函数把索引转到集合的第一个(或最后一个)成员。在数学上@WRAP(I,N)的返回值当I位于区间[1,N]内时返回I,否则返回J=I-N*K,K为整数,且J位于区间[I,N]内。如@WRAP(3,10)返回值为3, @WRAP(35,10)返回值为5, @WRAP(40,8)返回值为8, @WRAP(9,7)返回值为2.1 [) W$ ?; r% \) `- _
    + U# j/ }0 A0 R9 I, c: x
    @for(days(J):
    : }) h1 q' u" D+ f9 g$ C5 @8 q    @sum(days(I) | I #le# 5: 4 _8 h* U/ J9 i' m( C& z
          start(@wrap(J+I+2,7))) >= required(J)); - A3 B( x4 q+ S( {$ p
    day(I)=1,2,3,4,5不变(因为每个人都要连续工作5天,这里的脚码表示取值的顺序,并不是返回值)。当day(J)为1时,由于7为循环周期,故@warp(J+I+2)返回的值是4,5,6,7,1的职员和;当day(J)为2时,@warp(J+I+2)返回的值是5,6,7,1,2的职员和,以此类推。
    回复

    使用道具 举报

    刘振        

    0

    主题

    2

    听众

    11

    积分

    升级  6.32%

  • TA的每日心情
    郁闷
    2011-9-9 20:51
  • 签到天数: 1 天

    [LV.1]初来乍到

    model:
    ! l! q! r& t5 G! lsets: 2 s0 H; q7 i$ j6 z0 B+ w+ _* t4 O
    days/mon..sun/: required,start; * x0 W- Q1 J, M9 e# y
    endsets 8 ]% O/ @( |6 |. M4 m/ \' ]/ u; ^
    data:
      O( g& Q& s- Z/ ], V5 J  H!每天所需的最少职员数; ' s* H+ B  Y4 A
    required = 20 16 13 16 19 14 12; ; c3 q( D1 `2 w8 j, J
    enddata
    0 O4 F. B4 R, W5 r, y" N# E!最小化每周所需职员数; ) l+ s5 G' ?% j
    min=@sum(days: start);
    9 Q  A# X* G5 _: ~% m; u@for(days(J):
    5 I' \' F" S) ^8 A& M4 R    @sum(days(I) | I #le# 5: 9 a: i0 {) `" \" N
          start(@wrap(J+I+2,7))) >= required(J)); " x% @4 I) R' _
    end% q8 h  D# l9 G9 d  k( S0 W. m

    0 Q8 T8 _$ R- T7 R5 a& U) @解释下:
      @% x+ I* S2 g: O4 j2 p; C/ ^@for(days(J): ) h. F6 ~& i& p. `
        @sum(days(I) | I #le# 5:
    , D6 {+ k9 I* t6 ~" B# y      start(@wrap(J+I+2,7))) >= required(J));
    0 [! O7 X% o( m9 e- s1 t" n0 ~# r
    当day(J)为1时,day(I)=1,2,3,4,5.由于7为循环周期,故@warp(J+I+2)返回的值是4,5,6,7,1的职员和.当day(J)为2时,@warp(J+I+2)返回的值是5,6,7,1,2的职员和,以此类推。1 O6 P! k& W# @* w$ H" D

    6 D* U0 b/ M: K网上有一种说法是,英美中星期表示的不同,中国将星期一看成第一天,而国外则是将星期日看成第一天。在lingo中sun就表示第一天,用数字0标识。因此@wrap(index,limit)的用法就是index模limit再加1。将上面的程序中的集修改为
    * K; l+ Y1 m7 \$ [
    , O5 O, P0 w4 V2 _2 C' C
    . k& v0 v/ b) ]sets:1 n& N" l' f9 l2 @- @9 N
    days/1 2 3 4 5 6 0/: required,start;) _2 v% U! M9 W
    endsets& D# X) U5 d& Z* D+ b" A
      `3 G& R( U& \; p, a1 |8 {
    回复

    使用道具 举报

    刘振        

    0

    主题

    2

    听众

    11

    积分

    升级  6.32%

  • TA的每日心情
    郁闷
    2011-9-9 20:51
  • 签到天数: 1 天

    [LV.1]初来乍到

    回复

    使用道具 举报

    成城        

    0

    主题

    2

    听众

    120

    积分

    升级  10%

  • TA的每日心情
    郁闷
    2011-9-11 00:41
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    自我介绍
    没有最好只有更好
    回复

    使用道具 举报

    0

    主题

    4

    听众

    65

    积分

    升级  63.16%

    该用户从未签到

    回复

    使用道具 举报

    ehi28        

    0

    主题

    4

    听众

    140

    积分

    升级  20%

    该用户从未签到

    回复

    使用道具 举报

    5

    主题

    4

    听众

    127

    积分

    升级  13.5%

  • TA的每日心情
    擦汗
    2012-5-15 12:46
  • 签到天数: 34 天

    [LV.5]常住居民I

    自我介绍
    我想要参加数模竞赛,希望大家多多交流
    刘振 发表于 2011-8-12 20:01 % c) K" ?+ ^& {
    model:
    ' F+ ]' g  V; Z3 Fsets: 3 P* n$ t! B% H. F9 c- v
    days/mon..sun/: required,start;
    2 G2 D5 X" r2 C/ w( J
    对一下做下调整,便于理解8 [+ J* P. j* A- ]
    5 d" |$ c# H" y% C% }5 B
    model:
    & c. P+ q0 C9 ~% Ksets: : q  L. A1 w6 `6 d! Z
    " n2 F& _9 [/ Z* u8 J0 s# @4 z% i days/mon..sun/: required,start; # k9 g9 p6 _( G3 O9 c8 _
    endsets - h  W) ]$ D9 O5 I2 ~) H  K
    8 s# j3 ~" M3 h" I. J data: 3 A, a  X. M& m5 l& r' q! q2 z
    !每天所需的最少职员数;
    1 J& K9 \& l. W' e7 g0 r/ d" Rrequired = 20 16 13 16 19 14 12; ; }: G' I5 C3 z! F( \' p" b
    3 ~5 p: k$ h, h, n$ _. n5 f enddata   ]- t4 R' b. j  e9 q% Z
    2 M2 P% @5 g; [ !最小化每周所需职员数; . z4 K' V6 u5 \9 I. X% C0 \& H
    % X) l) K) Z- T/ R' q min=@sum(days: start); ( B- A9 P( k/ [+ N3 i
    @for(days(J): ' p$ L9 a1 R1 H: \# Z- X) V8 E
        @sum(
    1 w/ ]( B% H! R/ |. w             days(I) | I #le# 5:
    . r% @. d6 z: D  w( n( l5 j             start(@wrap(J+I+2,7))& U) d( D; T  ^8 O
                 ) >= required(J)); ; _5 r* A; Q, a- }4 V6 ^% N+ U
    end" R% ^9 @' E9 {% e% ^( }  f6 x

    , C- F8 H3 @7 P, x4 Y
    回复

    使用道具 举报

    9

    主题

    7

    听众

    188

    积分

    升级  44%

  • TA的每日心情
    慵懒
    2013-8-23 15:15
  • 签到天数: 84 天

    [LV.6]常住居民II

    自我介绍
    我想参加明年的数模竞赛

    群组西安交大数学建模

    群组数学建摸协会

    群组英语科技论文写作实训

    追梦者 发表于 2009-8-13 10:27
    5 K& A7 [$ C5 L. ~, a2 }; W* Y小弟与上面这位仁兄的理解稍有不同,英美中星期表示与我们不同,我们将星期一看成第一天,而他们则是将星 ...

      W. f: r! q$ X0 |7 L- |/ y我也觉得不用+1啊,
    回复

    使用道具 举报

    dirk190        

    4

    主题

    11

    听众

    41

    积分

    升级  37.89%

  • TA的每日心情
    奋斗
    2014-9-24 22:31
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    自我介绍
    在校学生
    追梦者 发表于 2009-8-13 10:27
    0 `& X' S1 H; s小弟与上面这位仁兄的理解稍有不同,英美中星期表示与我们不同,我们将星期一看成第一天,而他们则是将星 ...
    7 k/ j4 d1 b! D! o& a
    换成1到7 结果相同的
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-6-9 16:56 , Processed in 0.354910 second(s), 102 queries .

    回顶部