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。该函数在循环、多阶段计划编制中特别有用。
    + v! t8 _! M* C: h" l: e0 u5 J$ y2 a' g. N- O# i
    通俗的解释是:用来转换集合两端的索引,在集合的另一端继续索引。也就是说,在集合循环函数中,当达到集合的最后(或第一个)成员后,可以用@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.
    / D9 a0 y7 W/ y1 ~& {  _. N8 ?! i" P2 |( C4 s: b
    @for(days(J): 5 k! P, G" S1 h) {9 o0 S
        @sum(days(I) | I #le# 5:   Y, ~" V4 h. s: p2 t
          start(@wrap(J+I+2,7))) >= required(J));
    + }* A% Z9 C, A+ Q' Uday(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:
    * t4 p$ k+ V1 |6 Isets:
    8 ~2 ], R! K) e4 ~0 qdays/mon..sun/: required,start; 4 {9 L( S1 g, S& `$ c
    endsets
    9 q- p$ r  ]0 A9 f. Wdata: + ^+ H* o1 q; a
    !每天所需的最少职员数;
    ) U: h3 P. \  \  `required = 20 16 13 16 19 14 12;
    8 R  A  ~8 Y9 n4 K( P$ menddata
    , \% R1 G; C* b# ]$ V4 ]!最小化每周所需职员数;
      j6 E! V3 r8 P2 a$ M" m: Qmin=@sum(days: start); 9 g3 n3 F* `. H
    @for(days(J):
    : k3 l+ {: l) `+ t( i/ J5 L    @sum(days(I) | I #le# 5: ( c/ h1 `3 Q% X5 [3 s8 n2 g
          start(@wrap(J+I+2,7))) >= required(J));
    ! Q% Y$ b" Y+ [  Z. Uend+ ?. E1 [# F  F& ?
    ' b! O5 }- T; S' D) u" Z
    解释下:) ~9 k" p) G3 O0 p( G. p2 N
    @for(days(J):
    2 r2 `  i& t" i7 c9 _    @sum(days(I) | I #le# 5:
    $ f0 t7 F4 o4 }0 K1 m      start(@wrap(J+I+2,7))) >= required(J));
    0 K. f& L; S9 B7 {1 U- H) T& Z" y1 P% N, d- `2 h& ^+ l0 Z$ ?
    当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的职员和,以此类推。( M" Q" O* R8 j) a/ `
    * K, A- l. I. A  S  }, R' I0 |. M  p
    网上有一种说法是,英美中星期表示的不同,中国将星期一看成第一天,而国外则是将星期日看成第一天。在lingo中sun就表示第一天,用数字0标识。因此@wrap(index,limit)的用法就是index模limit再加1。将上面的程序中的集修改为
      h2 N* }1 N, w
    " [' |- H3 W8 b& T6 f$ d( ]2 @3 n; |+ T
    sets:
    0 h. o* m1 }" W% X, Z+ Rdays/1 2 3 4 5 6 0/: required,start;
    1 N4 e: t, Q2 Jendsets/ s8 F, O9 J7 O& D. [8 F* r: {

    ) _6 ]" q6 q+ i/ J! a
    回复

    使用道具 举报

    刘振        

    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 : N: ~! j6 Q% G( u* q* L
    model:
    6 k6 d0 Z* S% s0 ksets:
    0 B6 m) h6 W* N- U7 G# K2 ydays/mon..sun/: required,start;

    / Y2 t; p" w9 H+ r对一下做下调整,便于理解
    ; G4 x8 `  k$ `1 }; N
    7 m1 S* M- [% L! d- {- E% k8 emodel: 6 {, Q# k6 p% l$ ]% {. I" h
    sets: : q  L. A1 w6 `6 d! Z) P% _% J& J/ S: F' G0 G8 P
    days/mon..sun/: required,start; ( @/ m; m! o8 Z0 y# {
    endsets - h  W) ]$ D9 O5 I2 ~) H  K
    " _, e3 }  z0 Y data: , p' D7 @) F8 }4 u9 ?) X8 L
    !每天所需的最少职员数; ( L, y) \+ c; a
    required = 20 16 13 16 19 14 12; ; }: G' I5 C3 z! F( \' p" b' A; E/ F- i: p$ C' S& L
    enddata   ]- t4 R' b. j  e9 q% Z2 S  w3 F6 J8 ?. ]& [
    !最小化每周所需职员数; . z4 K' V6 u5 \9 I. X% C0 \& H
    6 P: R9 A) c0 X! J. K; N min=@sum(days: start); 7 e  n7 |3 _/ R) t1 r( v: b
    @for(days(J): + r  b8 _$ a6 e( W5 L
        @sum(
      S$ |& v- {$ O$ O+ G( J             days(I) | I #le# 5:
    3 ]( G% S* {$ x8 Q3 E             start(@wrap(J+I+2,7))
    9 Z( I2 U* k: ?             ) >= required(J)); % X& y# B. h) o- Y* |
    end
    " N. M# g$ Y2 @3 e 3 @0 o8 p2 [# q! E4 [
    回复

    使用道具 举报

    9

    主题

    7

    听众

    188

    积分

    升级  44%

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

    [LV.6]常住居民II

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

    群组西安交大数学建模

    群组数学建摸协会

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

    追梦者 发表于 2009-8-13 10:27
    % k8 x) _+ L1 i. \& ^. o小弟与上面这位仁兄的理解稍有不同,英美中星期表示与我们不同,我们将星期一看成第一天,而他们则是将星 ...
    0 C% i$ x  U/ R2 f, J+ a
    我也觉得不用+1啊,
    回复

    使用道具 举报

    dirk190        

    4

    主题

    11

    听众

    41

    积分

    升级  37.89%

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

    [LV.3]偶尔看看II

    自我介绍
    在校学生
    追梦者 发表于 2009-8-13 10:27
    ( u4 X) l3 W  s9 @& m3 j* m" R小弟与上面这位仁兄的理解稍有不同,英美中星期表示与我们不同,我们将星期一看成第一天,而他们则是将星 ...

    " w. l/ W( ]/ J5 c; M4 O1 `6 J换成1到7 结果相同的
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2025-11-7 19:34 , Processed in 0.899125 second(s), 101 queries .

    回顶部