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。该函数在循环、多阶段计划编制中特别有用。
    1 f1 n) [5 d- ~4 m1 F
    # B# T6 K6 ]; u" m2 N$ b# k( W7 v* Z+ d通俗的解释是:用来转换集合两端的索引,在集合的另一端继续索引。也就是说,在集合循环函数中,当达到集合的最后(或第一个)成员后,可以用@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.4 \5 d7 X: x1 Q( F' K- b+ F+ T
    - n! Y& A& O& h! t
    @for(days(J): # _8 w* l$ d5 A( Z' j5 ?
        @sum(days(I) | I #le# 5:
    5 d$ O! [( [# o3 ]- a  W6 |      start(@wrap(J+I+2,7))) >= required(J)); 0 i, {( B# G. H5 K9 W6 F8 ?; Z
    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:
    - h' W4 X0 X0 w( T5 w4 gsets:
    & `: I8 R& [( Ndays/mon..sun/: required,start;
    $ M6 O+ F2 b/ K9 n" }endsets
    / t9 q. _8 a8 b+ t1 F9 \data:
    4 n' n% V' ]: g% ?0 ^/ l3 ?6 D!每天所需的最少职员数; ) E! ^7 ^/ E% p1 w0 X# m
    required = 20 16 13 16 19 14 12;
    # _3 i' ?! c& m1 fenddata
    5 i! E- V# z; r) J( b!最小化每周所需职员数;
    * d2 `, I5 H' I7 K4 gmin=@sum(days: start);
    - [# B* }6 [- L7 K, u- x. {@for(days(J): + U8 @1 L* E) v, U) J/ ]! P4 O
        @sum(days(I) | I #le# 5:
    ! S" A, P$ E8 [/ i8 R4 A( j      start(@wrap(J+I+2,7))) >= required(J));
    , M$ i6 ~/ s& t8 c8 ^$ i% F6 Zend
    ; g$ ?. u4 [% C$ \& }4 I% Y* ~" r3 x" N6 u2 r, L0 p
    解释下:8 k# G; z+ l& d% m( V$ Q3 U
    @for(days(J): ) `5 e; o" a& B' r& U2 ?  {9 m
        @sum(days(I) | I #le# 5: + W9 N4 i' c& d& A! V" m
          start(@wrap(J+I+2,7))) >= required(J));
    7 D& s* L2 N! L, U- g0 T5 e; A" |+ `  J5 q5 v9 M8 P+ t
    当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的职员和,以此类推。
    0 x: h- h5 X% Q+ ]
    * t( J# T9 i( w& v. d- u网上有一种说法是,英美中星期表示的不同,中国将星期一看成第一天,而国外则是将星期日看成第一天。在lingo中sun就表示第一天,用数字0标识。因此@wrap(index,limit)的用法就是index模limit再加1。将上面的程序中的集修改为- N( O0 N! G' o! B
    6 ~& f' E6 ?$ G/ y. m  P
    2 w: U- W/ D1 M: r% }8 T
    sets:
    7 Q& {8 f, ?7 ^3 E- p- A/ Z0 Kdays/1 2 3 4 5 6 0/: required,start;( S* Q& x( k6 \1 {
    endsets
    9 x0 e5 r! ^' f2 V3 _( o- d4 @
    回复

    使用道具 举报

    刘振        

    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 * M( U' [: A3 `  x; e
    model:
    . P& m3 F  u/ T# |* P. Wsets: ) W$ x9 y& _, [) t
    days/mon..sun/: required,start;
    2 d/ k) H6 ~3 B3 D- v
    对一下做下调整,便于理解2 |8 j& R8 o( T; K

    3 i7 g- W, a" c1 _; Smodel: . L1 n  L+ I! E4 w9 i1 {7 J8 |2 [
    sets: : q  L. A1 w6 `6 d! Z
    2 m, G3 \' M2 M& `4 {7 g& e" @ days/mon..sun/: required,start;
    + [% w1 b) S# f* |2 i5 fendsets - h  W) ]$ D9 O5 I2 ~) H  K
    ( b7 Y& d) D! W1 E/ s( u data: # U# K# d# F7 K8 v
    !每天所需的最少职员数; ! C: ?6 G/ f* j7 ?9 D. d
    required = 20 16 13 16 19 14 12; ; }: G' I5 C3 z! F( \' p" b" S+ }0 @% z' u$ y% X/ B! U2 X
    enddata   ]- t4 R' b. j  e9 q% Z
      f' i+ I1 N* p$ \2 U3 T: r2 l* W !最小化每周所需职员数; . z4 K' V6 u5 \9 I. X% C0 \& H
    $ G( Z. w+ i, o* N min=@sum(days: start); 1 t9 {) v1 \8 Z
    @for(days(J): 2 x& A, ^2 t3 F3 P+ X, s
        @sum(0 K1 s- D& n; J$ k! f
                 days(I) | I #le# 5:   b; u/ G! ?- s! T# s
                 start(@wrap(J+I+2,7))
    2 {: @' D* O! ^" N: Z/ J3 B             ) >= required(J));
    , u2 [  N- f9 L' v- W$ b! N. @( H% Rend
    5 k/ ?' I1 `4 M$ J; N& y. k* x6 v& A
      |, K$ y6 L- z5 |" b/ T  n
    回复

    使用道具 举报

    9

    主题

    7

    听众

    188

    积分

    升级  44%

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

    [LV.6]常住居民II

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

    群组西安交大数学建模

    群组数学建摸协会

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

    追梦者 发表于 2009-8-13 10:27
    # Z: \# A& W& S4 K9 `' ?. N( P$ c小弟与上面这位仁兄的理解稍有不同,英美中星期表示与我们不同,我们将星期一看成第一天,而他们则是将星 ...
    5 T* R& [9 A0 X' D& v
    我也觉得不用+1啊,
    回复

    使用道具 举报

    dirk190        

    4

    主题

    11

    听众

    41

    积分

    升级  37.89%

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

    [LV.3]偶尔看看II

    自我介绍
    在校学生
    追梦者 发表于 2009-8-13 10:27 7 v5 a, {- D/ i
    小弟与上面这位仁兄的理解稍有不同,英美中星期表示与我们不同,我们将星期一看成第一天,而他们则是将星 ...
    ( f4 y7 t0 E* `/ z7 }) S" L3 e0 ~
    换成1到7 结果相同的
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2025-8-2 06:42 , Processed in 1.528684 second(s), 101 queries .

    回顶部