QQ登录

只需要一步,快速开始

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

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

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

1

主题

4

听众

29

积分

升级  25.26%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2009-4-22 11:37 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
本帖最后由 厚积薄发 于 2010-1-26 21:10 编辑
  m) ?9 J+ _, s5 ?* C+ u/ a7 f" |6 ?. u5 ?+ g
看到一个题:
0 P) J; u: y' }; d职员时序安排模型  
$ L& Z/ Z, N' y7 e! M( A一项工作一周 7 天都需要有人(比如**工作) ,每天(周一至周日)所需的最少职员数为 20、16、13、16、19、14 和 12,并要求每个职员一周连续工作 5 天,试求每周所需最少职员数,并给出安排。注意这里我们考虑稳定后的情况。 ) a( {2 G6 C, d6 W* _  h
model: 2 t" H$ `# n8 h1 H( C
sets: , ]: D2 F* X6 S2 y1 n, g
  days/mon..sun/: required,start;
% W: \; t5 X* Z3 Q9 B: B. a" X( Gendsets
4 V2 n; o! B, ]/ n8 N8 ^+ x4 Cdata: + p4 s1 U4 R: p/ r$ J1 }
  !每天所需的最少职员数; ; s' J1 ]3 w9 o5 M  r
  required = 20 16 13 16 19 14 12;  
% R, z7 x% h0 ]4 h6 P4 _, h5 a* Xenddata + z1 q, e7 s/ H
!最小化每周所需职员数;
( V, H% h0 P/ n7 _+ h0 S, d) {  min=@sum(days: start);
' f/ @/ A% |, |' n2 P7 D  @for(days(J): ( f& b: ~3 G* P- A7 |3 f5 ^
    @sum(days(I) | I #le# 5: 3 j* A6 t) R$ u5 s
      start(@wrap(J+I+2,7))) >= required(J));
. H9 t/ m% ?& D: ?* k  Hend
% N9 [, c, M( [, ~" ~  [
) z8 F- C- x  a其中@sum(days(I) | I #le# 5: 6 X, ~- Q$ z6 |  w
      start(@wrap(J+I+2,7))) >= required(J)); 是什么意思啊?我知道比如周一要排的人要从上个周四算起,但是不知道wrap中J+I+2和7各代表什么意思啊?还有这个函数怎么用啊?* e- a8 h  F& f' S+ l5 e$ O
请各位帮忙,谢谢了!
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 * y- P9 b( h7 p6 k* _) {
    一个员工工作一天算一个工期
    # |2 T* T% {5 {4 J8 u# J" i4 Q所有的天数加起来:总工期
    回复

    使用道具 举报

    追梦者 实名认证       

    13

    主题

    4

    听众

    594

    积分

    升级  98%

    该用户从未签到

    国际赛参赛者

    新人进步奖

    群组: 数模应用

    群组: LINGO

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

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

    群组: Mathematica研究小组

    本帖最后由 追梦者 于 2009-8-13 10:37 编辑 * ^2 O, `/ }+ W! A  F/ ^, B
    @wrap(index,limit)函数在循环、多阶段计划编程中经常用到!表示index模limit再加1,limit相当于一个周期。~* J* G! _8 b- x3 `) u8 E6 q+ f
    371568491 发表于 2009-4-22 22:35
    " N7 z" [, R0 K) ^* m
    小弟与上面这位仁兄的理解稍有不同,英美中星期表示与我们不同,我们将星期一看成第一天,而他们则是将星期日看成第一天。在lingo中sun就表示第一天,用数字0标识。因此@wrap(index,limit)的用法就是index模limit而不加1。
    ! v' k) S/ g! P$ i* I/ I) K你可以运行下面的结论来看一看:8 V2 N8 z7 k* I7 }8 V
    这是原程序
    - g# h* \# `5 {, xmodel:) C8 `8 C9 Q) t: l( G# C; B
    sets:
    ; c' c9 S% W$ w) x7 b( w  days/mon..sun/: required,start;& x# P! M7 W. H! s& o4 i
    endsets
    % f' ^# S- ]( Q" mdata:
    % x- G4 \2 Z7 N- e6 B9 O6 d1 H  !每天所需的最少职员数;
    ' G8 A% c( O) v9 Y  required = 20 16 13 16 19 14 12;
      V  i# u2 w+ Q/ m  l% Lenddata
    1 J1 G$ Q* p; U; t" h) J!最小化每周所需职员数;, M* N' Q5 a) ]1 q% K
      min=; v3 _* }, N$ H8 B; G0 ]
    @sum(days:start);
    ! z. w8 K5 j0 r. q" D  @for(days(J):  r8 w; _/ R8 D
        @sum(days(I) | I #le# 5:
    + I: T& B1 J" B% u( f8 X8 R      start(@wrap(J+I+2,7))) >= required(J));( v7 [! a/ J9 L( _
    !外国人的第一天是星期日;1 L) t+ y+ _( P8 [$ k' ^0 w
    end
    + \9 D& F1 L& l# |% B: K  V; R1 t将上面的程序中的集修改为
    - d/ G. K7 V2 V( h5 P8 j+ ?sets:
    " Z* v" u# r1 O; x2 K& [# ^5 ~days/1 2 3 4 5 6 0/: required,start;
    7 o% O# a( h3 F: }7 Y* O9 kendsets6 ?- [9 L8 X" W% ?$ f/ c
    在运行效果一样,证明了我的结论。

    点评

    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的值
    , B( A" F* P: m3 U我个人觉得也不是教程上说的加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-10-10 03:07 , Processed in 0.448793 second(s), 106 queries .

    回顶部