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。该函数在循环、多阶段计划编制中特别有用。
    * H, c8 z# I" s5 M* D
    & V! w5 d# h9 z通俗的解释是:用来转换集合两端的索引,在集合的另一端继续索引。也就是说,在集合循环函数中,当达到集合的最后(或第一个)成员后,可以用@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.  T2 E" ~6 g, d# _$ |9 ~

    : ~/ r! B0 n# d# n$ e# d2 e@for(days(J): 0 u  |8 M8 P# d* B' b" u$ X
        @sum(days(I) | I #le# 5: * \( O9 H* }  A
          start(@wrap(J+I+2,7))) >= required(J));   W1 j- [( `% Y8 S. s) L& R8 k% |
    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:
    8 V* {, a0 P  u8 q3 l: \; y- @sets: - G  Y  I( e0 N% s' B! x2 ?
    days/mon..sun/: required,start; * m( U' v' ]# _  M
    endsets
    - t% ]: A: H4 z. Q, R: S5 \" Z9 W( jdata: # _! ?# |( U0 L2 X  n2 N/ z3 V
    !每天所需的最少职员数;
      X1 ?, N7 L' \6 \2 g4 Zrequired = 20 16 13 16 19 14 12; / r7 k" ]- E2 ]/ t7 |
    enddata
    3 A9 d& n" A( L; u4 I" K% T- F  B!最小化每周所需职员数;
    ( F# H5 `7 A% ~2 U0 N$ Mmin=@sum(days: start);
    # y# C. h8 s, w0 J& c9 c@for(days(J): $ Y( O5 W8 ]4 H0 S8 m
        @sum(days(I) | I #le# 5:
    / I* W2 u6 J, m; h& a      start(@wrap(J+I+2,7))) >= required(J)); 4 K) _5 K# y$ @, D- u( u7 L6 ~
    end2 s. a) S: a; D" @7 ?, i/ w" w- x- t

    9 n# h# Z: y# S! `  K) P/ ^$ \" B5 u解释下:0 T& ^7 b& F9 D& {% R
    @for(days(J):   m% w, ^% ~* t' y) Y" a
        @sum(days(I) | I #le# 5: 7 V( G) I! L7 S0 V" J; q# W
          start(@wrap(J+I+2,7))) >= required(J));
    % `7 ^( ?1 T7 y0 ]1 Y' S, B
    7 o: u% b; Z  {# v6 o& j当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的职员和,以此类推。
    5 j( U( T) y  t' e- Y' O$ l- w5 Y% `* h
    网上有一种说法是,英美中星期表示的不同,中国将星期一看成第一天,而国外则是将星期日看成第一天。在lingo中sun就表示第一天,用数字0标识。因此@wrap(index,limit)的用法就是index模limit再加1。将上面的程序中的集修改为( U5 k3 e# ~% }; v
    5 |4 r2 b% m! G' o/ T  Y  h& S9 o
      m* W* ^. f. L* l' x
    sets:, D: r0 I  i! c% c5 H0 t; R0 \
    days/1 2 3 4 5 6 0/: required,start;+ T8 H6 y2 r2 p
    endsets& V5 Q  Q/ g. Q1 D' ~4 T; B
    6 x& B2 K2 p1 V' D! B+ i6 O( D, ~
    回复

    使用道具 举报

    刘振        

    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 6 j# C" j; @1 G7 I. g  o9 Y5 Q
    model:
    : \" [! _$ u; Esets:
    7 R! H, ^* `6 p. p; ?# F$ e4 Cdays/mon..sun/: required,start;

    ' e: K1 W& r9 k$ k* n$ I7 v* y4 ]对一下做下调整,便于理解' O+ F7 ?- @2 f6 U; `9 @" S
    ) k$ ~- R) J9 o* n+ O8 h# X
    model:
    & N; k; p  K9 v9 \' i7 i* Asets: : q  L. A1 w6 `6 d! Z
      p, s4 x1 U. u/ y: P$ { days/mon..sun/: required,start;
    " L3 c$ Z/ m) H; oendsets - h  W) ]$ D9 O5 I2 ~) H  K4 E% i" k1 O7 P9 q' x& P
    data:
    9 s9 ?  X2 L; T& k; l!每天所需的最少职员数; 3 p0 H8 C" L& |( R3 h
    required = 20 16 13 16 19 14 12; ; }: G' I5 C3 z! F( \' p" b
    $ v" D' v) e7 |3 @. c/ I enddata   ]- t4 R' b. j  e9 q% Z
    2 M: n  G. @3 ~0 M5 S0 w  o0 h4 h !最小化每周所需职员数; . z4 K' V6 u5 \9 I. X% C0 \& H0 e/ m% g4 G  Y, P. i$ C! N
    min=@sum(days: start); * H! l+ `. M1 v5 k
    @for(days(J): 8 L9 Q  m) Z, `
        @sum(
    " p1 e2 F% T0 K1 A1 ?9 p' ?             days(I) | I #le# 5: 1 I) ~: C- @* z- p9 S2 B- o6 C
                 start(@wrap(J+I+2,7))4 x) s0 `" k+ A) F1 Z; `! N
                 ) >= required(J)); 9 T3 B) p) ^$ w& @9 l. F, \
    end, T2 ~$ ~+ w. o' |. |8 }

    & w; Z3 D2 K( z
    回复

    使用道具 举报

    9

    主题

    7

    听众

    188

    积分

    升级  44%

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

    [LV.6]常住居民II

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

    群组: 西安交大数学建模

    群组: 数学建摸协会

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

    追梦者 发表于 2009-8-13 10:27 . y8 L3 }, B" R) x$ O! ?7 T' x
    小弟与上面这位仁兄的理解稍有不同,英美中星期表示与我们不同,我们将星期一看成第一天,而他们则是将星 ...
    % Z7 r4 H! I) z' J7 G- X
    我也觉得不用+1啊,
    回复

    使用道具 举报

    dirk190        

    4

    主题

    11

    听众

    41

    积分

    升级  37.89%

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

    [LV.3]偶尔看看II

    自我介绍
    在校学生
    追梦者 发表于 2009-8-13 10:27
    9 O' D7 Q# D+ z5 G' v小弟与上面这位仁兄的理解稍有不同,英美中星期表示与我们不同,我们将星期一看成第一天,而他们则是将星 ...

    ; v5 A% C7 c; d- u: _7 I9 _" p换成1到7 结果相同的
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-9-27 17:40 , Processed in 1.997265 second(s), 101 queries .

    回顶部