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 C* c/ K) }7 |2 I- [' r1 B0 U% P) S% h, Z+ W
    通俗的解释是:用来转换集合两端的索引,在集合的另一端继续索引。也就是说,在集合循环函数中,当达到集合的最后(或第一个)成员后,可以用@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." y- D3 {# n; j; h+ ]

    : W) V( R9 y' Y@for(days(J):
    7 Y& j- u* r4 `( f& |" i2 c    @sum(days(I) | I #le# 5:
    3 u7 x! P6 ?, X) f8 ]9 E9 M      start(@wrap(J+I+2,7))) >= required(J));
    # y0 Y( A, z5 t) l) tday(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! c# u  e* p& d: B. r$ Vsets: ) d# v; J, |1 A. Q! H) q1 @3 C6 Z& B
    days/mon..sun/: required,start;
    + j2 W: h1 W  O8 ^endsets 2 @+ m, D, x7 f# U2 e
    data:
    7 I7 Q5 h' z& ?" V1 g) P: [- Z!每天所需的最少职员数;
    ! T; l. L+ p1 L! o& ^7 E% Frequired = 20 16 13 16 19 14 12; 2 u- s1 k8 P' D. H  ?6 |
    enddata * S) M# @$ K! z2 `. }* `
    !最小化每周所需职员数; $ f5 J0 a6 @# |' M4 n
    min=@sum(days: start); / p  F0 j& n/ U$ \9 M
    @for(days(J): 8 w! _. n; P! B, B, Q, e& u. M0 m, q0 o
        @sum(days(I) | I #le# 5:
    & q4 Q/ G. ^$ B& y4 ^) n      start(@wrap(J+I+2,7))) >= required(J)); * Z3 Y2 `2 h0 _- f" N! A
    end
    , T" j  k( u' H7 O( o3 Q7 _& p* \; Y$ H/ u. y( v
    解释下:( e8 T! C! A2 t5 K$ Z
    @for(days(J):
    0 j. p! K; x* `2 q    @sum(days(I) | I #le# 5:
    : {# |! p6 p/ T8 |      start(@wrap(J+I+2,7))) >= required(J));
    $ F  `6 A+ G& K0 r7 Z! {2 S0 a; V$ H8 i3 s+ d0 n4 t' ?) s
    当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的职员和,以此类推。2 E& \. N/ \! o9 v/ \

    , D1 [' U  D) Y5 g  q( v! \网上有一种说法是,英美中星期表示的不同,中国将星期一看成第一天,而国外则是将星期日看成第一天。在lingo中sun就表示第一天,用数字0标识。因此@wrap(index,limit)的用法就是index模limit再加1。将上面的程序中的集修改为; P7 I5 E7 \, M9 D# C; Q* a
    2 H- d4 i8 M# Q5 C' h7 }
    . @7 w% Q+ F$ O& h
    sets:; O1 s8 e! h# ~( {0 j4 ~- g
    days/1 2 3 4 5 6 0/: required,start;) d! G. e2 t! k4 u. D
    endsets
    ' e$ J- Q. c9 Y& W( z
    ) E+ E, y* O7 u7 r
    回复

    使用道具 举报

    刘振        

    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
    2 k( }5 R9 _9 fmodel:
    9 K: [+ t( G3 ?! J, Rsets: , J+ ]. n6 @& k" r& I: x. H! r
    days/mon..sun/: required,start;
      h4 _+ v1 i1 w8 S5 x2 I) M
    对一下做下调整,便于理解% ~) m" c+ e3 H7 I

    " }# N7 m5 i6 @' i; zmodel:
    ( V/ V5 U+ E! D& y% S) zsets: : q  L. A1 w6 `6 d! Z
    2 W% `7 _* J5 K! J2 } days/mon..sun/: required,start;
    ! S) P" h# T8 U& X4 uendsets - h  W) ]$ D9 O5 I2 ~) H  K+ t5 y" m; e' q! d1 R
    data:
    9 F# v( E$ R7 Z; e) y: {!每天所需的最少职员数; ( [) G, b) H6 _/ o1 _- }" ~
    required = 20 16 13 16 19 14 12; ; }: G' I5 C3 z! F( \' p" b
    : E# _! N( [; W  g$ \9 ? enddata   ]- t4 R' b. j  e9 q% Z
    % q9 L* x! E- _1 \, e( d# P. Z !最小化每周所需职员数; . z4 K' V6 u5 \9 I. X% C0 \& H
    + N& t2 I( g, w( \2 O; F( X, S min=@sum(days: start); 1 L% j1 c6 a/ F0 N6 Q/ c
    @for(days(J): ! K1 j! ^7 @% b: o" S( v7 z! \( D2 ^: m7 U
        @sum(
    6 x  q2 o% J0 t3 r             days(I) | I #le# 5:
    % f' k7 {' o; a$ L3 z             start(@wrap(J+I+2,7))' F- h$ H2 u; X/ p( i! c" B
                 ) >= required(J)); ; _3 f& `3 t8 ^7 Q- X6 q- c
    end, x( c( V3 E2 P. v/ z: [9 ]% Q
    3 G, h7 @  I6 R' G; x4 y* {
    回复

    使用道具 举报

    9

    主题

    7

    听众

    188

    积分

    升级  44%

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

    [LV.6]常住居民II

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

    群组: 西安交大数学建模

    群组: 数学建摸协会

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

    追梦者 发表于 2009-8-13 10:27
    4 E" e: V/ G4 w! W- ~小弟与上面这位仁兄的理解稍有不同,英美中星期表示与我们不同,我们将星期一看成第一天,而他们则是将星 ...
    $ K7 T  N; z4 j1 a, ]9 q, j
    我也觉得不用+1啊,
    回复

    使用道具 举报

    dirk190        

    4

    主题

    11

    听众

    41

    积分

    升级  37.89%

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

    [LV.3]偶尔看看II

    自我介绍
    在校学生
    追梦者 发表于 2009-8-13 10:27
    8 s4 q8 x0 b4 o6 A; N小弟与上面这位仁兄的理解稍有不同,英美中星期表示与我们不同,我们将星期一看成第一天,而他们则是将星 ...

    . h7 V7 @. t( [* X& R6 P换成1到7 结果相同的
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-10-10 02:11 , Processed in 1.726572 second(s), 102 queries .

    回顶部