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。该函数在循环、多阶段计划编制中特别有用。0 L" l4 f/ g5 s
    & U9 R: E: K! C8 ?: ~. U
    通俗的解释是:用来转换集合两端的索引,在集合的另一端继续索引。也就是说,在集合循环函数中,当达到集合的最后(或第一个)成员后,可以用@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.
    0 h) g) c; U3 o1 b+ t! a
    ) @: Z* i4 Q: K" E1 ?@for(days(J):
    5 w0 h. q5 W' S# B1 l2 ~    @sum(days(I) | I #le# 5: 9 b  n- F2 u, h7 a4 y
          start(@wrap(J+I+2,7))) >= required(J));
    ; P6 f! V! _# ?+ Pday(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:
    : P, t$ o/ E+ m: N% n& m8 |8 l7 Bsets:
    0 D! y* f" ]/ f0 g& Adays/mon..sun/: required,start; 2 V9 B7 o9 G3 ^) }! W' B
    endsets
    4 o# K" X5 d9 Z% ^8 M9 S5 `data: . C4 m9 S/ v' l4 q
    !每天所需的最少职员数;
    4 ~0 Y3 g8 `" }# i% V' P! brequired = 20 16 13 16 19 14 12;
    $ h" D% H  f9 k# O+ ~1 R' Menddata
    8 c& c: f+ E: h7 }. u( A, ^9 B7 I!最小化每周所需职员数; * u$ D6 X* D0 [
    min=@sum(days: start);
    5 S) y; I" }! j@for(days(J): 3 @% z" Y" h  v& C) \/ F, ?* p
        @sum(days(I) | I #le# 5:
    - O* H$ ~- s  t9 K0 f- \# N      start(@wrap(J+I+2,7))) >= required(J));
    - N! l; F4 P1 Qend
    5 T) F0 N9 J6 l) N/ _. T# D0 N6 K* W4 J4 v
    解释下:/ `4 p( v' B- w* B
    @for(days(J):
    ) E; F4 g  p% I6 |1 `    @sum(days(I) | I #le# 5:
    ) Q- H& J% L; m5 M& s2 Q( [      start(@wrap(J+I+2,7))) >= required(J));3 Z# s% V. `9 ?8 \
    ' r/ p) P+ h; M  N( \
    当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的职员和,以此类推。. d0 V9 p2 S; j! p$ D
      w% X! x; a. Q' H
    网上有一种说法是,英美中星期表示的不同,中国将星期一看成第一天,而国外则是将星期日看成第一天。在lingo中sun就表示第一天,用数字0标识。因此@wrap(index,limit)的用法就是index模limit再加1。将上面的程序中的集修改为- e! \8 O; K2 l8 g" z  m* J1 U
    8 b- l9 b- G" D- B/ e

    % a! j5 I9 |7 A/ hsets:
      S5 H3 \! v" u6 jdays/1 2 3 4 5 6 0/: required,start;% h" z: I5 F) v8 T( p9 j
    endsets
    6 O) C+ {) X& `9 L: q, O; k, v" w  i6 T8 d; |4 \
    回复

    使用道具 举报

    刘振        

    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 l8 U* S9 [1 b! \; ?; W; T+ f5 M
    model:
    " \  m3 B7 X. y$ {" gsets:
    : s4 _9 a+ m7 Q) ^, H8 Vdays/mon..sun/: required,start;

    ( k3 h2 \0 {7 _4 e1 e% j对一下做下调整,便于理解0 E& {7 Q- R- v* w7 ~3 Y/ [% H9 h" A

    2 Q0 a. ~( W3 |/ zmodel: & K- y) ]7 [6 J: k8 q+ [) ?
    sets: : q  L. A1 w6 `6 d! Z
    ) k  Z5 V  C( I( f% B2 m# I! } days/mon..sun/: required,start;
    , \  t9 K+ o5 Q% R3 P$ ^% D! n1 L% Cendsets - h  W) ]$ D9 O5 I2 ~) H  K
    7 A' P$ ^# L; s" F data: 5 d! N( @* \  G: B( Y
    !每天所需的最少职员数; : r0 @# b5 j8 n# R5 v7 R5 V8 v
    required = 20 16 13 16 19 14 12; ; }: G' I5 C3 z! F( \' p" b: Y1 ?& J; t) M. r8 p- f% }3 r
    enddata   ]- t4 R' b. j  e9 q% Z
    , ]+ F( H7 ^) U% z) U" X !最小化每周所需职员数; . z4 K' V6 u5 \9 I. X% C0 \& H) W+ R& ^1 j- {
    min=@sum(days: start);
    , f+ D+ r/ }: o/ d/ K5 T% j* s@for(days(J):
    ; e: y, G/ o* r, W2 E    @sum(
    + B: g9 Y3 O" m' t             days(I) | I #le# 5: 3 m( x; E' ?6 ?% I* t8 h* e
                 start(@wrap(J+I+2,7))
    2 ?% |7 c8 D3 F2 J! V3 @# ]& T% s3 P             ) >= required(J)); . ?1 Z2 {$ v' @) R7 N
    end
    - y9 ?! L  M, E6 P % R- U6 F3 \* \, N  D
    回复

    使用道具 举报

    9

    主题

    7

    听众

    188

    积分

    升级  44%

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

    [LV.6]常住居民II

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

    群组西安交大数学建模

    群组数学建摸协会

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

    追梦者 发表于 2009-8-13 10:27
    1 `9 P$ i+ U" d# q) n小弟与上面这位仁兄的理解稍有不同,英美中星期表示与我们不同,我们将星期一看成第一天,而他们则是将星 ...
    : `) r' m0 [# f3 D" N
    我也觉得不用+1啊,
    回复

    使用道具 举报

    dirk190        

    4

    主题

    11

    听众

    41

    积分

    升级  37.89%

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

    [LV.3]偶尔看看II

    自我介绍
    在校学生
    追梦者 发表于 2009-8-13 10:27 % q0 @# B+ N6 ]6 j( j6 `# {
    小弟与上面这位仁兄的理解稍有不同,英美中星期表示与我们不同,我们将星期一看成第一天,而他们则是将星 ...
    ; q6 P: ^( ~0 r2 E1 C1 g+ f! Z
    换成1到7 结果相同的
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-5-6 00:14 , Processed in 0.481826 second(s), 102 queries .

    回顶部