QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 24488|回复: 20
打印 上一主题 下一主题

【讨论】新手求助:关于lingo的wrap函数

[复制链接]
字体大小: 正常 放大
guarguar        

1

主题

4

听众

29

积分

升级  25.26%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2009-4-22 11:37 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
本帖最后由 厚积薄发 于 2010-1-26 21:10 编辑
& }. |# D8 p1 H2 [: @) J
! `6 [( e. @. l* Y7 K: j& n, {看到一个题:
/ X; d$ Y# |' L% }" d" F* \) B职员时序安排模型  
7 ^% _: G# W( K7 z7 B& V一项工作一周 7 天都需要有人(比如**工作) ,每天(周一至周日)所需的最少职员数为 20、16、13、16、19、14 和 12,并要求每个职员一周连续工作 5 天,试求每周所需最少职员数,并给出安排。注意这里我们考虑稳定后的情况。 9 I1 s2 m) y. @( `5 B
model:
+ u+ i8 X+ D, i8 hsets:
, }* U% a( ^! x. ]! {  days/mon..sun/: required,start;
' L; j6 P$ {9 f* Mendsets
' f; @, _( o% v: f4 Xdata: : ]8 o( G" m  A8 q
  !每天所需的最少职员数; ) @6 X7 p8 l6 ^; j: \# X; T
  required = 20 16 13 16 19 14 12;  2 D1 U6 U3 q0 z  \; }2 L( \$ s
enddata 7 y3 Y7 j) O* J% W: k! d
!最小化每周所需职员数;   x; G1 o% \5 }# m$ O& F
  min=@sum(days: start);
/ k6 R8 Z5 [; u. z  S7 w0 a  @for(days(J): ( N8 @: g3 x2 S  Y& a# D
    @sum(days(I) | I #le# 5:   S; U5 M4 O$ g; T3 ]- i6 b
      start(@wrap(J+I+2,7))) >= required(J)); : g0 A; X; c; ^" |4 V5 b2 _1 T" J
end
" D" w" ^5 y% g$ P
0 Q' @( D9 ~" J$ \. A其中@sum(days(I) | I #le# 5:
# p/ B! |4 h* X- j2 c$ \& y, m      start(@wrap(J+I+2,7))) >= required(J)); 是什么意思啊?我知道比如周一要排的人要从上个周四算起,但是不知道wrap中J+I+2和7各代表什么意思啊?还有这个函数怎么用啊?7 |, p- R# W% X' @5 X: w+ a; m' j
请各位帮忙,谢谢了!
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
buct 实名认证       

26

主题

3

听众

1155

积分

  • TA的每日心情
    开心
    2018-10-14 09:54
  • 签到天数: 2 天

    [LV.1]初来乍到

    新人进步奖 发帖功臣

    群组数学建模

    群组数学趣味、游戏、IQ等

    群组我行我数

    群组Mathematica研究小组

    群组文献查询

    回复

    使用道具 举报

    371568491 实名认证       

    8

    主题

    3

    听众

    257

    积分

    升级  78.5%

  • TA的每日心情
    开心
    2012-9-14 15:36
  • 签到天数: 1 天

    [LV.1]初来乍到

    新人进步奖

    @wrap(index,limit)函数在循环、多阶段计划编程中经常用到!表示index模limit再加1,limit相当于一个周期。~
    回复

    使用道具 举报

    xieducx7        

    0

    主题

    4

    听众

    10

    积分

    升级  5.26%

    该用户从未签到

    新人进步奖

    1# guarguar 0 n( p2 }( Z& b8 A, m5 B! V# W
    一个员工工作一天算一个工期  I1 F. t- q7 a: K1 n5 `
    所有的天数加起来:总工期
    回复

    使用道具 举报

    追梦者 实名认证       

    13

    主题

    4

    听众

    594

    积分

    升级  98%

    该用户从未签到

    国际赛参赛者

    新人进步奖

    群组数模应用

    群组LINGO

    群组四川农业大学数学建模协会

    群组重庆交通大学数学建模协会

    群组Mathematica研究小组

    本帖最后由 追梦者 于 2009-8-13 10:37 编辑   Y8 ?& r0 D0 e. G2 E( X" `' [
    @wrap(index,limit)函数在循环、多阶段计划编程中经常用到!表示index模limit再加1,limit相当于一个周期。~: b$ H: L% D2 ]
    371568491 发表于 2009-4-22 22:35

    # j. |7 M' k5 k7 K% Z小弟与上面这位仁兄的理解稍有不同,英美中星期表示与我们不同,我们将星期一看成第一天,而他们则是将星期日看成第一天。在lingo中sun就表示第一天,用数字0标识。因此@wrap(index,limit)的用法就是index模limit而不加1。- F$ p% A% R& W1 q
    你可以运行下面的结论来看一看:
    2 k& H* A( G- P这是原程序
    2 M1 A6 t& n) ^" Gmodel:5 c$ Y+ U5 u1 B  K3 E4 n" e, z
    sets:
    4 P$ `: p3 t7 P6 K6 S7 r  C1 @  days/mon..sun/: required,start;
    ; o% |0 u0 c5 J8 V# Y/ p6 B# f# eendsets1 d; n+ i/ F7 k$ N; C. B
    data:
    & Y% J4 j* d. C& C1 u  !每天所需的最少职员数;' c5 U& ~0 H& M: T
      required = 20 16 13 16 19 14 12;
    ; c% A! d8 _% P7 Ienddata& U" w8 z; [6 i" a1 k- z
    !最小化每周所需职员数;
    * i* P7 v% }( [: M1 {- L! V  min=
    ( C7 i' P$ B+ h( c  u' }@sum(days:start);
    ; M: f% P0 K8 Q7 h9 z) @7 B  @for(days(J):: q7 h% R# r3 }/ u/ T- R; Y
        @sum(days(I) | I #le# 5:" V+ Q- T& Y: f; N7 j! l
          start(@wrap(J+I+2,7))) >= required(J));+ F& D$ d7 a. P$ s& G
    !外国人的第一天是星期日;. J9 \9 R/ s/ z/ f6 R3 {: a
    end
    5 s3 G! U& B+ n4 C. G+ k- o将上面的程序中的集修改为 - T  W( g% |- E$ R- m0 v1 q
    sets:+ N  N5 U1 T% n" t  _
    days/1 2 3 4 5 6 0/: required,start;
    $ t  s* |3 K. m# l& _endsets
    ' Q" b0 z7 U- |1 d; v在运行效果一样,证明了我的结论。

    点评

    dirk190  换成1到7 结果相同的  详情 回复 发表于 2014-7-19 22:15
    ganquanlife  我也觉得不用+1啊,  详情 回复 发表于 2013-1-30 19:56
    回复

    使用道具 举报

    0

    主题

    0

    听众

    7

    积分

    升级  2.11%

    该用户从未签到

    新人进步奖

    回复

    使用道具 举报

    唐超超 实名认证       

    0

    主题

    4

    听众

    79

    积分

    升级  77.89%

    该用户从未签到

    群组数学建模

    回复

    使用道具 举报

    phylince        

    0

    主题

    4

    听众

    47

    积分

    升级  44.21%

    该用户从未签到

    新人进步奖

    就是1到limit,没有0了,0应该替换成Limit的值
    / p) W8 _: O$ M7 {- p我个人觉得也不是教程上说的加1
    回复

    使用道具 举报

    sqk20091 实名认证       

    0

    主题

    4

    听众

    6

    积分

    升级  1.05%

    该用户从未签到

    自我介绍
    逗你玩儿
    回复

    使用道具 举报

    0

    主题

    2

    听众

    7

    积分

    升级  2.11%

    该用户从未签到

    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2025-11-7 10:34 , Processed in 1.150036 second(s), 109 queries .

    回顶部