QQ登录

只需要一步,快速开始

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

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

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

1

主题

4

听众

29

积分

升级  25.26%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2009-4-22 11:37 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
本帖最后由 厚积薄发 于 2010-1-26 21:10 编辑
4 i' Y) q- a6 C
% {5 x; ]* q) |) I. J1 K看到一个题:& Y) c( }0 R3 B9 B
职员时序安排模型  ( m# @, G6 M. F( F, S/ N* G! |
一项工作一周 7 天都需要有人(比如**工作) ,每天(周一至周日)所需的最少职员数为 20、16、13、16、19、14 和 12,并要求每个职员一周连续工作 5 天,试求每周所需最少职员数,并给出安排。注意这里我们考虑稳定后的情况。
) o8 v. w, f2 r- ^4 {( v5 C% Rmodel: . ^" T+ p: M- D# O' N* x; U0 J
sets: / f+ V$ n& k4 ~" c
  days/mon..sun/: required,start; * n% l1 g7 c4 E) w0 Q1 Q
endsets * D* R. V( |% b% X% h& _
data:
; ?6 b7 n, C6 C5 u6 }  !每天所需的最少职员数;
/ `* C7 h+ t$ K2 y2 H  required = 20 16 13 16 19 14 12;  
8 G! N" j0 y) S3 Y) H0 n% Benddata 9 [' k: e8 `/ H" [; _* w
!最小化每周所需职员数;
8 }/ W/ U0 A+ H/ R, s  min=@sum(days: start);
5 d0 d7 L1 d8 Q! `, K/ q  @for(days(J): * L- C& s8 E) n3 E7 Z5 Z
    @sum(days(I) | I #le# 5: 4 r# W, U! r9 m3 X% R" N6 a
      start(@wrap(J+I+2,7))) >= required(J));
' t4 V8 N& J+ d6 u2 iend
" C4 d3 Q3 g" C: {0 P) g6 t1 L/ W5 g. o; {
其中@sum(days(I) | I #le# 5: . |) P+ O  _+ e% `. y- M6 [
      start(@wrap(J+I+2,7))) >= required(J)); 是什么意思啊?我知道比如周一要排的人要从上个周四算起,但是不知道wrap中J+I+2和7各代表什么意思啊?还有这个函数怎么用啊?
, s) Z  @, p( t9 K/ `, `( u- ]请各位帮忙,谢谢了!
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
buct 实名认证       

26

主题

3

听众

1156

积分

  • 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 3 T) v, O$ @. i, c9 D( I
    一个员工工作一天算一个工期
    ( g' x: P- Q0 t( d& F8 P; y所有的天数加起来:总工期
    回复

    使用道具 举报

    追梦者 实名认证       

    13

    主题

    4

    听众

    594

    积分

    升级  98%

    该用户从未签到

    国际赛参赛者

    新人进步奖

    群组数模应用

    群组LINGO

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

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

    群组Mathematica研究小组

    本帖最后由 追梦者 于 2009-8-13 10:37 编辑
    3 j5 q! M- O: f! e" ^* ?
    @wrap(index,limit)函数在循环、多阶段计划编程中经常用到!表示index模limit再加1,limit相当于一个周期。~( A5 A3 i/ ]" P: g3 t) c: D' j
    371568491 发表于 2009-4-22 22:35
    1 L! n- m2 \. b) T. J0 ?8 R0 I
    小弟与上面这位仁兄的理解稍有不同,英美中星期表示与我们不同,我们将星期一看成第一天,而他们则是将星期日看成第一天。在lingo中sun就表示第一天,用数字0标识。因此@wrap(index,limit)的用法就是index模limit而不加1。
    ' |  s( j. x8 V你可以运行下面的结论来看一看:
    0 a' @; G! n% B  @6 V3 R这是原程序( P  ]: x; V2 ^% c" \# N1 p+ L! }" _5 V
    model:
    ) r7 s& |" q# z+ esets:
    & c# @* u9 A/ c* g! F2 e+ I3 q  days/mon..sun/: required,start;. f: B: \6 N# k$ s5 T* F
    endsets0 W$ ?+ K- o& v  V3 z
    data:
      I& Z% h* {7 m( [% K6 \  !每天所需的最少职员数;
    + X3 }2 [4 X/ G: [; D' A  required = 20 16 13 16 19 14 12; 7 X# l+ Y$ `) o  ?+ J# `
    enddata7 z) {9 n% O$ ^# C1 w
    !最小化每周所需职员数;& N" G& }1 F1 D6 }, J3 i2 ]- b
      min=3 l* T; a% ^7 J& s
    @sum(days:start);8 G% i% P9 m' [. b9 Z
      @for(days(J):0 j3 B2 X" y0 B' l. K1 T
        @sum(days(I) | I #le# 5:4 A- d. U# v. ]+ f
          start(@wrap(J+I+2,7))) >= required(J));
    - y; u1 {/ B' B+ y  v0 O4 ^!外国人的第一天是星期日;1 V8 n( k: M1 n+ a1 L; d
    end: _+ ?/ p/ O& H; y' f& L# g
    将上面的程序中的集修改为
    3 z. h: c2 }+ U! S' Jsets:
    $ K9 o  D( n, Xdays/1 2 3 4 5 6 0/: required,start;- F$ x: ~9 ^$ V! ?* S7 }
    endsets3 b4 Z2 T2 a9 j5 U$ B& n( S
    在运行效果一样,证明了我的结论。

    点评

    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的值4 J8 n/ M. M- }& c8 S
    我个人觉得也不是教程上说的加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, 2026-6-11 18:12 , Processed in 0.499002 second(s), 107 queries .

    回顶部