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。该函数在循环、多阶段计划编制中特别有用。. W# ?, T1 z# Q, q. r+ B+ L! r
    0 L, \1 I$ n. i! U1 A4 W  B! L
    通俗的解释是:用来转换集合两端的索引,在集合的另一端继续索引。也就是说,在集合循环函数中,当达到集合的最后(或第一个)成员后,可以用@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.3 [& g- O0 b( n5 m5 C
    2 N; I, ^2 K' \6 Z' A  Q
    @for(days(J):
      @: A3 x: Z9 @    @sum(days(I) | I #le# 5: & i+ \7 o) e! X! q' o/ e
          start(@wrap(J+I+2,7))) >= required(J)); 7 F0 I, _$ v: e7 n! J* r0 E& ~4 L
    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:
    , w8 S0 }0 C* R4 E2 [0 [sets:
    $ I# S0 S$ H% a, `2 x: b) M& U  r4 w! }days/mon..sun/: required,start; ( k3 S6 c3 ?0 T+ Y3 D) k) e
    endsets 6 A* q2 N5 i& A+ j. E; o
    data:
    4 v' `/ }2 d3 U3 V!每天所需的最少职员数;
    : E1 B- N# V7 A; w6 p# |8 y  qrequired = 20 16 13 16 19 14 12; 4 r( y) N( ~$ T+ P: C; u! v
    enddata
    * y, g1 Q) @( [9 L; U!最小化每周所需职员数;
    ) [, Q" ?% g$ e, Pmin=@sum(days: start); 2 S8 \  ~2 u5 D
    @for(days(J):
    8 g6 Z% r' Z3 y! @. D! @5 I: f* ?    @sum(days(I) | I #le# 5:
    8 k% k9 B7 L/ P: O" L, t; Z      start(@wrap(J+I+2,7))) >= required(J));
    / O8 v* S' D, ]) pend& [% |( Q* n, g5 O1 O* p
      J9 |: `7 o/ K. Y- ^3 ~: @
    解释下:
    ; B3 n/ H* y8 u' R* C1 I@for(days(J):
    5 v1 ]+ m. n0 U    @sum(days(I) | I #le# 5:
    1 M8 ~# n: o4 W: r6 t* F      start(@wrap(J+I+2,7))) >= required(J));- R$ t  f7 y; S" S

    8 ?3 ]" D" E; \, L, a6 w: J7 B, E$ h/ k当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 ^( M5 ~# x& m! f8 @
      V/ k* ]# |& E5 ?& h9 j# F8 }
    网上有一种说法是,英美中星期表示的不同,中国将星期一看成第一天,而国外则是将星期日看成第一天。在lingo中sun就表示第一天,用数字0标识。因此@wrap(index,limit)的用法就是index模limit再加1。将上面的程序中的集修改为
    3 B& t, Q( \" V: T, ]+ [6 k! h* d
    - r' H6 [4 `" q8 H
    + T: E' x) }' u( ^8 @sets:/ w( X2 R  R! ^
    days/1 2 3 4 5 6 0/: required,start;
    4 S% G9 A% i+ W7 A* N  Y/ j" Qendsets
    ! y! ], W+ ^9 e1 F+ I1 _
    1 H2 A' z  P! l+ V' _
    回复

    使用道具 举报

    刘振        

    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 5 L5 C0 J( Y% @
    model:
    0 W5 Z, Q" W/ ?4 t4 s6 r4 Jsets:
    ; n. l# Q' m/ g3 r- G0 B0 t- idays/mon..sun/: required,start;

    - Z3 j! s' \# n: q对一下做下调整,便于理解
    9 M! A5 v7 U4 Z6 d7 j1 X. X8 z7 j$ N8 X) ^& n
    model:
    . C+ J7 ~3 x( S/ Wsets: : q  L. A1 w6 `6 d! Z, `) x$ p$ ^; n) F/ H
    days/mon..sun/: required,start; + W2 r' R& m" F: a  {$ \: `
    endsets - h  W) ]$ D9 O5 I2 ~) H  K
    " N( W5 x; {& v/ h' H" Q data: 7 m0 Q9 T6 N" }0 b9 Z6 D/ x4 R) ^8 K$ j
    !每天所需的最少职员数;
    ; d# I# V2 {& j$ yrequired = 20 16 13 16 19 14 12; ; }: G' I5 C3 z! F( \' p" b" R% w' A, d; Q  `
    enddata   ]- t4 R' b. j  e9 q% Z
      q$ d/ x- n& f: A) d1 J) _ !最小化每周所需职员数; . z4 K' V6 u5 \9 I. X% C0 \& H
    ; a" z  e8 ?1 O min=@sum(days: start);
    8 e. I9 ~+ P( h9 A@for(days(J):
    3 R# B- y/ m5 m) Y) M$ _    @sum($ @/ ~) I% D2 M% l! i: l
                 days(I) | I #le# 5: / K. }* u. \4 K. K8 ?" D% R- L
                 start(@wrap(J+I+2,7))8 E: s, d0 h9 O+ _2 c" A
                 ) >= required(J));
    # Y4 C9 d+ \5 y: S9 \( Zend+ a$ K) M% l' ^* n. ^

    $ S2 y: i7 W4 z( \
    回复

    使用道具 举报

    9

    主题

    7

    听众

    188

    积分

    升级  44%

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

    [LV.6]常住居民II

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

    群组西安交大数学建模

    群组数学建摸协会

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

    追梦者 发表于 2009-8-13 10:27   u3 g6 }1 y" S, u! _; A
    小弟与上面这位仁兄的理解稍有不同,英美中星期表示与我们不同,我们将星期一看成第一天,而他们则是将星 ...

    * a. ~( ^! X5 w2 E0 u我也觉得不用+1啊,
    回复

    使用道具 举报

    dirk190        

    4

    主题

    11

    听众

    41

    积分

    升级  37.89%

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

    [LV.3]偶尔看看II

    自我介绍
    在校学生
    追梦者 发表于 2009-8-13 10:27 , t" N! i: t4 V  |) q2 j' s
    小弟与上面这位仁兄的理解稍有不同,英美中星期表示与我们不同,我们将星期一看成第一天,而他们则是将星 ...

    : v& j8 m3 i% X2 G. H. R, n# k换成1到7 结果相同的
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-4-21 00:57 , Processed in 0.446549 second(s), 101 queries .

    回顶部