请选择 进入手机版 | 继续访问电脑版

QQ登录

只需要一步,快速开始

 注册地址  找回密码
楼主: guarguar

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

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

2

主题

3

听众

26

积分

升级  22.11%

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

    [LV.1]初来乍到

    群组Matlab讨论组

    群组LINGO

    群组数学建模

    群组数学建摸协会

    发表于 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。该函数在循环、多阶段计划编制中特别有用。
    / k+ c. {# V& l( Z/ n0 }
    & Q8 \# w: F; m9 I2 B) k通俗的解释是:用来转换集合两端的索引,在集合的另一端继续索引。也就是说,在集合循环函数中,当达到集合的最后(或第一个)成员后,可以用@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.
    , t  ^3 l8 b* D. L& S, ~# u
    4 T* l, v5 ]7 u& s* w% C( R  @' ~8 J1 Y3 V@for(days(J): , x2 _; s' {% n" r1 r0 }# ~( W
        @sum(days(I) | I #le# 5:
    * V4 O! m; @: M      start(@wrap(J+I+2,7))) >= required(J));
    ; i' |) d* T/ o5 `* nday(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: 1 {1 A# X9 [+ a, g; Q
    sets:
    ) F  ], Z3 q- t. w5 ndays/mon..sun/: required,start;
    $ R3 M( R. L+ e6 Wendsets ( M( `7 C# a) ]
    data: % V# {" k/ F: }! D2 C( W
    !每天所需的最少职员数; * _8 m0 M7 [0 s9 E: y. ^7 m# G) |
    required = 20 16 13 16 19 14 12;
    ( d2 Q; D9 L9 Eenddata
    0 L" X; a- H# d' \8 @+ z) P! X!最小化每周所需职员数; 4 {4 T3 d; F) Z4 {+ l
    min=@sum(days: start); # R; M; v2 T3 C6 h$ }. l
    @for(days(J):
    1 y; M* |$ V$ E2 M    @sum(days(I) | I #le# 5: . L; z& v. D# O! [8 {
          start(@wrap(J+I+2,7))) >= required(J)); / f0 b, A+ y  l. Y: _9 M
    end3 X9 C% X' l5 j0 A: N
    * j2 M- Q3 s) `4 Y; T: H2 {5 [. }% e
    解释下:; S5 y3 m0 k+ i* m4 D. w
    @for(days(J):
    : ]2 i7 v) h4 ~! s6 t) _2 ^    @sum(days(I) | I #le# 5: * u2 l- O' g3 V
          start(@wrap(J+I+2,7))) >= required(J));" J5 p$ d4 b+ [, I4 f7 x
    5 Z" H9 w' g' R1 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的职员和,以此类推。9 J" d; G6 h- @# w

    $ R3 N& p0 e+ a: E, `" y9 o! Z网上有一种说法是,英美中星期表示的不同,中国将星期一看成第一天,而国外则是将星期日看成第一天。在lingo中sun就表示第一天,用数字0标识。因此@wrap(index,limit)的用法就是index模limit再加1。将上面的程序中的集修改为$ T# H7 P# B' U! I4 ^8 a

    9 ]" A% w: W6 P2 F7 D$ d6 D! }# B# N# q4 q9 ^
    sets:2 E; C6 ^& ^  a- }" l0 s
    days/1 2 3 4 5 6 0/: required,start;
    , D% c% i0 j% {* cendsets
    ( v$ a, a4 x$ _8 s& H
    * p" w% W& G, H8 C6 A2 b% U
    回复

    使用道具 举报

    刘振        

    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
    8 E; V: x* a7 e9 q+ qmodel:
    ( B2 i+ B0 _, H* M7 t/ F" S+ Rsets: 2 v- f# Q5 S  ]# |2 u; G9 k
    days/mon..sun/: required,start;
    / x1 f4 `6 W( u' o( o* c1 i' }
    对一下做下调整,便于理解0 ]& k  s* }8 G) w# a
    % k5 ^& W, n  j8 e* i0 n
    model:
    + N3 p+ \/ r  C( s8 T& Esets: : q  L. A1 w6 `6 d! Z
    - F* l5 S+ u2 T# O0 z  j days/mon..sun/: required,start; ! F1 n' ?# J! f9 D- p$ z# C, v7 s
    endsets - h  W) ]$ D9 O5 I2 ~) H  K8 e0 k; L  i, }
    data: . A. G7 q1 z! E7 l3 _: ^
    !每天所需的最少职员数; 0 v# B- N* A7 Q. b6 S9 q, b
    required = 20 16 13 16 19 14 12; ; }: G' I5 C3 z! F( \' p" b
    - n5 O% j0 ~4 {" z* D. I9 _, o enddata   ]- t4 R' b. j  e9 q% Z! f, G& U5 E  T/ ]
    !最小化每周所需职员数; . z4 K' V6 u5 \9 I. X% C0 \& H
    8 I; \$ b+ k: ~3 ^. u7 Z4 y( K min=@sum(days: start);   ?1 d/ s7 T* g, p' E2 f" k
    @for(days(J): 5 H- `7 T4 M8 W
        @sum(
    * A5 \, \+ i6 d             days(I) | I #le# 5:
    3 z+ I2 m. D' ?3 }3 d3 d             start(@wrap(J+I+2,7))7 g: W. N: {% V3 Y/ i
                 ) >= required(J));
    ( N" E: G4 ~% \0 m' }8 ^end
    ( W) o  X7 R$ i1 O8 G# ]
    ; v: p/ X, k. m3 Y$ g  p5 Y* h) w: O& @
    回复

    使用道具 举报

    9

    主题

    7

    听众

    188

    积分

    升级  44%

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

    [LV.6]常住居民II

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

    群组西安交大数学建模

    群组数学建摸协会

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

    追梦者 发表于 2009-8-13 10:27
    0 R! S3 p# Z) F( g* I# ]小弟与上面这位仁兄的理解稍有不同,英美中星期表示与我们不同,我们将星期一看成第一天,而他们则是将星 ...
    ; C/ c* O- {* v6 q+ T5 Y0 M6 _
    我也觉得不用+1啊,
    回复

    使用道具 举报

    dirk190        

    4

    主题

    11

    听众

    41

    积分

    升级  37.89%

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

    [LV.3]偶尔看看II

    自我介绍
    在校学生
    追梦者 发表于 2009-8-13 10:27 , t( d' c" ?1 F  Z
    小弟与上面这位仁兄的理解稍有不同,英美中星期表示与我们不同,我们将星期一看成第一天,而他们则是将星 ...

    . x& V2 H* s0 Q$ |& K9 @+ {换成1到7 结果相同的
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2024-4-17 07:41 , Processed in 0.903183 second(s), 101 queries .

    回顶部