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。该函数在循环、多阶段计划编制中特别有用。; j; n2 r7 L' a# X4 @2 r

    0 B( l* J6 Y! G- X通俗的解释是:用来转换集合两端的索引,在集合的另一端继续索引。也就是说,在集合循环函数中,当达到集合的最后(或第一个)成员后,可以用@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.5 d$ z4 e, ~9 J- K/ N* b3 d
    : |4 j2 T7 p  l0 j2 g6 u: C
    @for(days(J): # J! x% G; d% V/ {5 B
        @sum(days(I) | I #le# 5: # w- f7 Z5 i6 ~
          start(@wrap(J+I+2,7))) >= required(J));
    6 |8 B3 ]. L2 e6 i) m/ ?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: & K  k' U, h3 k6 A2 ?
    sets: ; z' N2 R% M) k# N+ n
    days/mon..sun/: required,start;
    ! c/ ^3 F0 T: e0 Gendsets # X* c6 m; U; I$ q  m* _1 c
    data:
    , Y* b9 [2 y* y4 T+ O' |- E/ u+ }!每天所需的最少职员数; * j! r$ l- w- ^! Q
    required = 20 16 13 16 19 14 12;
    " e& ]6 J2 U! E/ [* Fenddata / w% V. t) h1 U9 \7 `
    !最小化每周所需职员数;
    / ^9 z) F3 ~( g0 G! p( C4 I6 ~min=@sum(days: start);
    " s+ e1 s: n, N- ^0 w: P@for(days(J):
    . ^$ p& V9 k7 `& {5 o$ r8 y  [' A' J    @sum(days(I) | I #le# 5: + `) J! U( b3 }6 h
          start(@wrap(J+I+2,7))) >= required(J));
    & f8 F. ?/ z# j/ K" Oend
    ) a6 _0 ?: B  P0 N0 @% `& q1 E6 I( _3 l5 F. n. \
    解释下:
    * _: b  C/ D2 o/ R@for(days(J):
    2 N9 W9 v6 r5 P- D    @sum(days(I) | I #le# 5: % E9 [, C! `9 S$ j) r7 W, f7 c
          start(@wrap(J+I+2,7))) >= required(J));- A% v* H  J0 n- Q: ?

    ( v& G; r- T8 W* [" _. ]- S$ Q当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的职员和,以此类推。, l, ~  {: J# l2 H) c6 U( _4 ]
    : b3 O3 I* x* x: ~8 s8 ?6 ^
    网上有一种说法是,英美中星期表示的不同,中国将星期一看成第一天,而国外则是将星期日看成第一天。在lingo中sun就表示第一天,用数字0标识。因此@wrap(index,limit)的用法就是index模limit再加1。将上面的程序中的集修改为8 Z6 I) k2 E5 c% u( y  Y& b

    7 `  |' t8 ~8 h/ ~! s  w
    8 B3 D: |6 \+ N( ]6 d. B/ Psets:' ]! o7 t5 p3 t$ S. `4 o3 s0 h
    days/1 2 3 4 5 6 0/: required,start;
    . L. g4 ~) s9 z3 Nendsets
    5 v; O# ~2 w) t' E) k8 `  I3 m2 ]( L7 g: E6 l3 c7 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
    9 P9 ?8 P3 H3 N, E* imodel: . p( r1 Z/ O* e. M6 l/ `+ }
    sets: 9 ?6 ], m4 l# P7 d0 g, G. O
    days/mon..sun/: required,start;
    1 a" Y" o3 c- p% q% ?, v
    对一下做下调整,便于理解& x3 ^  v  N/ Q: ]7 ~

    4 Z' H- H6 ^+ z- O: s( Xmodel:
    * ]+ R9 J& y( `$ dsets: : q  L. A1 w6 `6 d! Z
    # m6 Z+ N  p( B) I days/mon..sun/: required,start;
    & }4 ]0 w2 Q" u! Uendsets - h  W) ]$ D9 O5 I2 ~) H  K
    $ J: P$ Z7 \5 E6 T# R* n data: ! r/ M& B3 U7 h7 L* o
    !每天所需的最少职员数;
    % X  v+ Z6 ]" Jrequired = 20 16 13 16 19 14 12; ; }: G' I5 C3 z! F( \' p" b
    ' S' w3 K+ V9 B* q: {+ O& j2 q enddata   ]- t4 R' b. j  e9 q% Z
    7 Z/ g$ R' M7 x. U !最小化每周所需职员数; . z4 K' V6 u5 \9 I. X% C0 \& H
    * b2 g6 \- S8 p4 B, P, r3 \  D/ } min=@sum(days: start);
    " B0 ]/ N9 X8 }@for(days(J): 2 n5 ]& v$ ~1 E  P
        @sum(
    - k4 y. w% A2 K# y6 y6 b             days(I) | I #le# 5: $ u4 U/ _4 }$ a  `' k( \
                 start(@wrap(J+I+2,7))
    0 r, y- i& K7 H1 N* V             ) >= required(J)); ! a/ o1 m6 _# G  w
    end
    : R1 J. S' W' P% z' K% e* D0 a
    ' x$ n5 j7 F0 W& |* ]; c. t
    回复

    使用道具 举报

    9

    主题

    7

    听众

    188

    积分

    升级  44%

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

    [LV.6]常住居民II

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

    群组西安交大数学建模

    群组数学建摸协会

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

    追梦者 发表于 2009-8-13 10:27 ' y2 |+ E8 E! B7 F* X
    小弟与上面这位仁兄的理解稍有不同,英美中星期表示与我们不同,我们将星期一看成第一天,而他们则是将星 ...

    9 D5 [- a% L. T6 m4 o我也觉得不用+1啊,
    回复

    使用道具 举报

    dirk190        

    4

    主题

    11

    听众

    41

    积分

    升级  37.89%

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

    [LV.3]偶尔看看II

    自我介绍
    在校学生
    追梦者 发表于 2009-8-13 10:27 ) V" m8 W/ }% @6 N0 }: {" z
    小弟与上面这位仁兄的理解稍有不同,英美中星期表示与我们不同,我们将星期一看成第一天,而他们则是将星 ...
    ' Y! r9 L. _" j- J' _
    换成1到7 结果相同的
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-6-9 17:48 , Processed in 2.252220 second(s), 101 queries .

    回顶部