QQ登录

只需要一步,快速开始

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

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

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

1

主题

4

听众

29

积分

升级  25.26%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2009-4-22 11:37 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
本帖最后由 厚积薄发 于 2010-1-26 21:10 编辑 # U2 I5 P5 Q3 n/ H* @, R6 J, r: o
# W! J  z" \; d& B2 [
看到一个题:7 |3 ]* B: @* `- ]
职员时序安排模型  
* O7 X, [; e3 O一项工作一周 7 天都需要有人(比如**工作) ,每天(周一至周日)所需的最少职员数为 20、16、13、16、19、14 和 12,并要求每个职员一周连续工作 5 天,试求每周所需最少职员数,并给出安排。注意这里我们考虑稳定后的情况。
0 u8 g& K7 }0 |  }model: 0 Q  l2 ^8 K' m: T* D5 g; s5 z
sets:
5 m" j- w7 p$ M' W2 u! F/ B; q( w  days/mon..sun/: required,start;
3 i2 Z' I. \2 `* qendsets
, O) p6 c* C2 Rdata:
6 g+ Q: r2 C) D6 m; U  c# A/ x( R- `  !每天所需的最少职员数; 4 z5 V% k: Z9 J
  required = 20 16 13 16 19 14 12;  4 c6 r+ W- j" ]5 u+ J7 c% X
enddata
2 o% @& m; t1 W% d! H1 z!最小化每周所需职员数;
4 A2 y9 x( j) V1 X: H  min=@sum(days: start); 7 [# t; I* D3 r
  @for(days(J):
+ y9 l% _. K8 B! b5 p$ I9 A9 {    @sum(days(I) | I #le# 5:
$ [9 c" y2 g/ K" ^: I      start(@wrap(J+I+2,7))) >= required(J));
) V6 R& v+ C" \; b- uend" @" q  \  V" @" e' i3 L
2 Y8 B+ m1 H2 F  N
其中@sum(days(I) | I #le# 5:
0 l3 X0 b/ G* C  E$ p4 c# G( u      start(@wrap(J+I+2,7))) >= required(J)); 是什么意思啊?我知道比如周一要排的人要从上个周四算起,但是不知道wrap中J+I+2和7各代表什么意思啊?还有这个函数怎么用啊?% e& |- B' T; \: Q( h$ a
请各位帮忙,谢谢了!
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
    / k% o/ h3 g3 r0 t6 A一个员工工作一天算一个工期
    9 J3 y6 R1 N! ]$ q所有的天数加起来:总工期
    回复

    使用道具 举报

    追梦者 实名认证       

    13

    主题

    4

    听众

    594

    积分

    升级  98%

    该用户从未签到

    国际赛参赛者

    新人进步奖

    群组数模应用

    群组LINGO

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

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

    群组Mathematica研究小组

    本帖最后由 追梦者 于 2009-8-13 10:37 编辑 # @# m4 N/ i  `' M3 b& e
    @wrap(index,limit)函数在循环、多阶段计划编程中经常用到!表示index模limit再加1,limit相当于一个周期。~% v9 i! Y/ v, T3 _4 ~0 X! R: ]2 ~  O' `- \
    371568491 发表于 2009-4-22 22:35
    $ x5 o* n( q6 m$ F5 \
    小弟与上面这位仁兄的理解稍有不同,英美中星期表示与我们不同,我们将星期一看成第一天,而他们则是将星期日看成第一天。在lingo中sun就表示第一天,用数字0标识。因此@wrap(index,limit)的用法就是index模limit而不加1。& G9 z( x) T: k% Z5 m; m( A4 P
    你可以运行下面的结论来看一看:
    8 s2 W' A6 v2 S) v这是原程序+ j: C. p0 V( g2 U+ D2 U
    model:! _9 h% T/ v" o2 c( i6 X
    sets:" l* V, }; m' Q2 o4 `
      days/mon..sun/: required,start;
    ) {3 v! k7 r* Iendsets
    , s: B% Z! [5 a( G( u/ J! }" fdata:' X5 j# g; w6 v9 F. M1 Z
      !每天所需的最少职员数;
    9 X& L0 t* l! [% Y6 z# g  required = 20 16 13 16 19 14 12;
      _' x- G5 w: g6 {1 W, H2 lenddata
    / t: W) T4 K5 n" o' U( ?- L!最小化每周所需职员数;) |) J- R9 A# Z5 x8 W
      min=: ~: p- ~+ n3 V
    @sum(days:start);
    / {* w; I9 H2 W! R: g# X* e* N3 z  @for(days(J):
    9 `5 t# O2 E3 Y    @sum(days(I) | I #le# 5:
    $ T# I: [* @6 \6 n$ Q/ {& m      start(@wrap(J+I+2,7))) >= required(J));6 W- l6 p* P, n! @! Q0 w
    !外国人的第一天是星期日;, {) z- `5 S8 B! E9 }( J/ f
    end( @3 j9 P0 u9 P5 j* {
    将上面的程序中的集修改为 3 r' N* |4 Q: {+ f8 ]+ |7 U
    sets:
    % Q. q" Z2 N! p% j, fdays/1 2 3 4 5 6 0/: required,start;3 r+ A7 v( h" \2 F' v( s$ Z
    endsets( h8 P+ K+ {$ k2 H; m1 u
    在运行效果一样,证明了我的结论。

    点评

    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的值
    + W" i  J) _5 Z7 G  H% ?3 v我个人觉得也不是教程上说的加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 16:55 , Processed in 1.032273 second(s), 107 queries .

    回顶部