QQ登录

只需要一步,快速开始

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

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

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

1

主题

4

听众

29

积分

升级  25.26%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2009-4-22 11:37 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
本帖最后由 厚积薄发 于 2010-1-26 21:10 编辑 ' d& A; h! G6 w' `/ y

  ~5 o" R2 R4 y! T, \& ?3 H看到一个题:
8 V4 l, p( r& Z2 S8 K职员时序安排模型  
- q7 Q" |' ^1 x" L. {+ q* m8 V一项工作一周 7 天都需要有人(比如**工作) ,每天(周一至周日)所需的最少职员数为 20、16、13、16、19、14 和 12,并要求每个职员一周连续工作 5 天,试求每周所需最少职员数,并给出安排。注意这里我们考虑稳定后的情况。 7 e3 @; O; p' o; ]+ a
model:
1 J  j% h4 C1 ], |( ]sets:
/ M# m8 D' _  l& L0 }6 N  days/mon..sun/: required,start;
! g  R$ }& O' K# h; q* \endsets 9 f8 A6 s, g" N- q
data: / g+ I3 @8 s  y- D
  !每天所需的最少职员数;
* Z" k! S7 u0 J1 l% t7 ]8 x) |$ x/ `  required = 20 16 13 16 19 14 12;  ! f. ~# I6 J0 D8 l# O2 }
enddata
; t/ Q, k* `. h+ a1 M. ~, d!最小化每周所需职员数;
" j, u8 r5 g8 p/ J  min=@sum(days: start); , s& s: ?  b+ c) w* {5 O! [! J( h# V
  @for(days(J):
3 N* M+ g, [2 A6 x- q1 l+ A" B    @sum(days(I) | I #le# 5: ( A3 e( h$ Z0 a7 n* {7 e2 X4 d
      start(@wrap(J+I+2,7))) >= required(J)); $ h' M# P) s* R* b6 o) X3 F
end
" X% r* [7 j5 v+ U' G0 U$ }* T  v5 P$ M  j5 |: P  c0 B  l
其中@sum(days(I) | I #le# 5: 6 y4 q" v* F4 v  U% U. [
      start(@wrap(J+I+2,7))) >= required(J)); 是什么意思啊?我知道比如周一要排的人要从上个周四算起,但是不知道wrap中J+I+2和7各代表什么意思啊?还有这个函数怎么用啊?" A5 Q, `& q- U& ^: E' f" m
请各位帮忙,谢谢了!
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 / B- Y9 W9 Y$ {5 N, T9 B" {
    一个员工工作一天算一个工期
    - J# B0 V5 k. C* F) `所有的天数加起来:总工期
    回复

    使用道具 举报

    追梦者 实名认证       

    13

    主题

    4

    听众

    594

    积分

    升级  98%

    该用户从未签到

    国际赛参赛者

    新人进步奖

    群组: 数模应用

    群组: LINGO

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

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

    群组: Mathematica研究小组

    本帖最后由 追梦者 于 2009-8-13 10:37 编辑
    1 q3 Q, T- v( Q3 |4 H2 @( H; N/ H
    @wrap(index,limit)函数在循环、多阶段计划编程中经常用到!表示index模limit再加1,limit相当于一个周期。~: b$ h  n7 N( B4 L
    371568491 发表于 2009-4-22 22:35
    ' _5 z5 c* E4 L8 d* r- W$ n
    小弟与上面这位仁兄的理解稍有不同,英美中星期表示与我们不同,我们将星期一看成第一天,而他们则是将星期日看成第一天。在lingo中sun就表示第一天,用数字0标识。因此@wrap(index,limit)的用法就是index模limit而不加1。
    " Q+ A& s; R. F% }% H你可以运行下面的结论来看一看:- f5 ]; B/ H( F$ {7 l+ b
    这是原程序
    8 E- s" Y6 H7 n. i" D7 }2 G! [model:
    2 U9 [# b: W, n9 z% O6 i- xsets:5 ~) |( m+ ^3 k7 ?" H$ ]1 j! E
      days/mon..sun/: required,start;
    ; N3 F+ y. b! U# a' b3 W0 u7 `endsets! J7 k" T% e1 |3 A* r0 g8 L& `
    data:/ O( e9 P1 Q# F2 ^! [
      !每天所需的最少职员数;
    0 Y4 x- j3 K6 K- b6 c  required = 20 16 13 16 19 14 12; ' x6 t: L8 w2 Q' H3 k
    enddata* k7 v5 _( C  W) @8 F8 S/ u0 ]- M
    !最小化每周所需职员数;
    9 b. r; W+ M3 j2 q! [# C0 d! n  min=
    % m2 `5 W) N( ]' ?! z, q/ @@sum(days:start);
    % }0 I/ g. ~4 U1 m. [( i5 @  @for(days(J):; V5 m* r, t" g  j7 u2 P& _. e, ]
        @sum(days(I) | I #le# 5:  ~$ p9 d6 K7 m' r" e4 x
          start(@wrap(J+I+2,7))) >= required(J));
    1 _& G4 ~  l, [. x!外国人的第一天是星期日;' S2 r' T9 r  ?( c) M4 L
    end  ]+ f$ W4 |/ h. @7 x+ X5 o
    将上面的程序中的集修改为 % B; Q5 ?* H; d8 o9 q4 e
    sets:" D& g, ^" `% {, v: C
    days/1 2 3 4 5 6 0/: required,start;8 ?7 H' d$ Z, u3 f! h
    endsets  P& A8 p: k; m# [& a% p8 R
    在运行效果一样,证明了我的结论。

    点评

    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的值
    " T- {, }2 R- f- L, ?我个人觉得也不是教程上说的加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-9-27 21:41 , Processed in 0.801348 second(s), 106 queries .

    回顶部