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。该函数在循环、多阶段计划编制中特别有用。
    & t4 ~% W8 q$ f  L! m# G
    ; E& n5 |7 C+ n+ 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.: b. S  ?' K3 |9 |( }2 ?

    ' C3 |4 A( J( c5 S* u0 r1 g@for(days(J):
    ! X! c/ U) Y  m    @sum(days(I) | I #le# 5: 6 c) ^7 g8 L$ a( R
          start(@wrap(J+I+2,7))) >= required(J)); ! `% Z. b0 Z4 S" P, G
    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:
    ' c! o( n5 v% b" a# R- hsets:
    # T! u# e: b6 N0 G8 @3 Edays/mon..sun/: required,start; 3 Y: Y% K. W6 ^5 A3 V  n8 u+ I8 `
    endsets - u8 o3 j: O( g- Q" V1 B4 R$ b
    data:   o! x# |4 p* I7 I, v
    !每天所需的最少职员数; 8 S  B) Z$ G: Q3 D1 P
    required = 20 16 13 16 19 14 12;
    : T( B0 H- R6 e$ L' Yenddata
    7 ^5 p- D1 a' ~!最小化每周所需职员数;
    & A: V) {; ^. h8 wmin=@sum(days: start);
    8 w  Z( ]$ r0 J0 Q7 G6 C@for(days(J):
    5 O6 b1 s  E3 A    @sum(days(I) | I #le# 5: + ~' m! d' s, t5 d! }
          start(@wrap(J+I+2,7))) >= required(J));
    : O1 w0 R* @5 g! aend; N: B1 R- D8 {5 n

    0 E* D: u1 S+ b( q* |. y% r, Y2 P* R; y解释下:
    4 L/ a! {( ]2 h@for(days(J): % w5 d  d- b+ W- G* y# S
        @sum(days(I) | I #le# 5: % g0 g% X/ s5 v- r
          start(@wrap(J+I+2,7))) >= required(J));
    ' R# j/ {! M: s; P7 t- K4 A1 O0 `( I0 @; o! O3 c
    当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的职员和,以此类推。8 A& V3 q2 R. a* l- K

      d# n4 S4 q8 D% S" Q2 g网上有一种说法是,英美中星期表示的不同,中国将星期一看成第一天,而国外则是将星期日看成第一天。在lingo中sun就表示第一天,用数字0标识。因此@wrap(index,limit)的用法就是index模limit再加1。将上面的程序中的集修改为
    & i# x- n' w  S8 Z1 c. ^9 ?
    # ?- S( p7 a( ~+ j$ m. X$ j) I; ^0 E7 T) @( H# s- r
    sets:9 R: H( A" s* X7 k
    days/1 2 3 4 5 6 0/: required,start;
    $ v3 R8 Y; ]% r) Hendsets& E* U3 ~3 s0 o% Y1 L6 U
    # D  B9 R6 ]. [/ a1 \9 k3 g
    回复

    使用道具 举报

    刘振        

    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
    3 O; y* f& E; z( umodel: ! ?9 t; @' B$ Y9 n& o; d* y7 m+ f- R
    sets: 1 T6 N' Q+ q0 H
    days/mon..sun/: required,start;

    # r1 \8 r2 O' ?对一下做下调整,便于理解
    ! X$ v7 T; Z* u
    , n5 \0 E! |3 o: ~7 t1 U& B7 Cmodel: 8 T. [* |! m* L5 b( M, X  B4 W
    sets: : q  L. A1 w6 `6 d! Z& T! e# G4 f" c/ |
    days/mon..sun/: required,start;
    ! H- B, q6 C' _' Q6 ]; `endsets - h  W) ]$ D9 O5 I2 ~) H  K
    / r& h. K$ ]# k2 x( j. ]! b( f data:
    & H0 Y, h; t' A* r!每天所需的最少职员数; 0 p. z( E  h# k$ P
    required = 20 16 13 16 19 14 12; ; }: G' I5 C3 z! F( \' p" b* }5 [) ~% ?; z
    enddata   ]- t4 R' b. j  e9 q% Z3 c" N+ r1 B$ W8 E% g. x6 a( \
    !最小化每周所需职员数; . z4 K' V6 u5 \9 I. X% C0 \& H
    6 G0 E$ j& Y- j1 D' S* O min=@sum(days: start); ( l5 J, b3 c6 L+ O' N# n
    @for(days(J): - T, c# f# X5 Q  q; c/ M
        @sum(( p: ~' ~" B8 Q4 R# M
                 days(I) | I #le# 5:
    1 O( E2 T" @4 M$ K+ m             start(@wrap(J+I+2,7))  |' p' O  Q# A  a* C$ T0 V" Y
                 ) >= required(J)); 0 y* W' x: t" O$ b( H9 k
    end
    4 P/ F: p& g! A! h" O2 o " @5 H- _* I8 U2 N/ m2 o5 f
    回复

    使用道具 举报

    9

    主题

    7

    听众

    188

    积分

    升级  44%

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

    [LV.6]常住居民II

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

    群组西安交大数学建模

    群组数学建摸协会

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

    追梦者 发表于 2009-8-13 10:27
    : y: _$ k9 U/ @# k3 [小弟与上面这位仁兄的理解稍有不同,英美中星期表示与我们不同,我们将星期一看成第一天,而他们则是将星 ...
    ) H' D2 C2 C1 ~. P1 Q
    我也觉得不用+1啊,
    回复

    使用道具 举报

    dirk190        

    4

    主题

    11

    听众

    41

    积分

    升级  37.89%

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

    [LV.3]偶尔看看II

    自我介绍
    在校学生
    追梦者 发表于 2009-8-13 10:27 ; P' A* U" k1 F: t& J; e) P
    小弟与上面这位仁兄的理解稍有不同,英美中星期表示与我们不同,我们将星期一看成第一天,而他们则是将星 ...

    ; g2 H1 ]$ f# F& @0 G换成1到7 结果相同的
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-8-6 06:02 , Processed in 0.557845 second(s), 102 queries .

    回顶部