QQ登录

只需要一步,快速开始

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

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

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

1

主题

4

听众

29

积分

升级  25.26%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2009-4-22 11:37 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
本帖最后由 厚积薄发 于 2010-1-26 21:10 编辑
* E, l+ g' N, ~7 w" H
1 `+ N  h" J/ w; _2 O3 z看到一个题:
) m- @. b+ |$ i- `/ T% w, \7 F职员时序安排模型  
  M$ N( S& P* q9 p+ @: i1 a# S一项工作一周 7 天都需要有人(比如**工作) ,每天(周一至周日)所需的最少职员数为 20、16、13、16、19、14 和 12,并要求每个职员一周连续工作 5 天,试求每周所需最少职员数,并给出安排。注意这里我们考虑稳定后的情况。 ; V/ R; T+ J. X5 D* O  U. F
model: - i4 m" w$ H8 y' C' A& ]# [
sets: 4 P/ P2 W& n' x
  days/mon..sun/: required,start;
; A8 J2 l) D, B- s* X* S) Q; ~endsets
0 s4 p* V+ U5 p2 \data: 7 V& t( s- t! f' v1 m
  !每天所需的最少职员数; * _; o! L) `/ V$ Q; n" j
  required = 20 16 13 16 19 14 12;  
7 ]8 o( T( I& O5 s$ u) fenddata
: v1 B. P" f3 G5 k) v* x!最小化每周所需职员数;
! k5 i! R6 c4 `& v/ X  min=@sum(days: start); 0 E& V9 \+ C; X6 s
  @for(days(J): 9 U) K$ g1 ?3 y8 I% @/ I6 I) i
    @sum(days(I) | I #le# 5: , f8 _( h  c  H' _. j" X$ P
      start(@wrap(J+I+2,7))) >= required(J)); ( W% f" a+ J* e- q1 g5 O/ `% `
end
7 X" b: s, \! ?6 k  |3 Y0 T: J& h! J2 g2 I
其中@sum(days(I) | I #le# 5:
  F3 R6 R4 x7 t0 H- p+ R# `$ G6 H. y      start(@wrap(J+I+2,7))) >= required(J)); 是什么意思啊?我知道比如周一要排的人要从上个周四算起,但是不知道wrap中J+I+2和7各代表什么意思啊?还有这个函数怎么用啊?
/ c$ w4 c8 E. Y" U: n请各位帮忙,谢谢了!
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 ) P! c0 `8 @4 S8 q) U
    一个员工工作一天算一个工期
      R1 o5 }- f+ ?# ^1 J: j所有的天数加起来:总工期
    回复

    使用道具 举报

    追梦者 实名认证       

    13

    主题

    4

    听众

    594

    积分

    升级  98%

    该用户从未签到

    国际赛参赛者

    新人进步奖

    群组数模应用

    群组LINGO

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

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

    群组Mathematica研究小组

    本帖最后由 追梦者 于 2009-8-13 10:37 编辑 5 M6 p1 ~, _. N3 G  C/ K, x
    @wrap(index,limit)函数在循环、多阶段计划编程中经常用到!表示index模limit再加1,limit相当于一个周期。~6 a6 `5 {0 h9 U' s1 d/ Q9 [
    371568491 发表于 2009-4-22 22:35
    7 L4 h! o# W+ I: \5 a
    小弟与上面这位仁兄的理解稍有不同,英美中星期表示与我们不同,我们将星期一看成第一天,而他们则是将星期日看成第一天。在lingo中sun就表示第一天,用数字0标识。因此@wrap(index,limit)的用法就是index模limit而不加1。
    " f* r6 s% l4 G* U( R你可以运行下面的结论来看一看:  X/ R/ k- D9 i; [0 P$ c. D4 A
    这是原程序
    / X, o8 `. t- H+ A) }! imodel:
    , {) Y- A* f: Xsets:# r1 `4 J/ V  x/ [5 W7 s* O' r
      days/mon..sun/: required,start;
    : q% k$ }& Z) ]2 Zendsets
    0 K9 D0 e) I" X" U4 ~data:( s% q/ c" \, h4 r% ]
      !每天所需的最少职员数;  ^6 g# }" F9 \
      required = 20 16 13 16 19 14 12;
    9 U& ?. M9 Z% r' @enddata
    & ~- D: I5 k  @# g7 C7 ?!最小化每周所需职员数;
    0 H2 v, x/ }* H. n. G/ X  [  min=  D  l* m/ E3 @9 q4 v, S. e
    @sum(days:start);
    ; l: ?% m5 L* u* {, H' O  @for(days(J):
    4 c2 X. B6 D$ r8 X4 l2 b5 c    @sum(days(I) | I #le# 5:/ g0 c) Z1 K! R+ D
          start(@wrap(J+I+2,7))) >= required(J));
    & k- g  b0 w- O, g& H!外国人的第一天是星期日;6 E& m# L  f, i! G" l* k6 V0 q
    end+ [: r1 |* I5 Z$ v5 U
    将上面的程序中的集修改为 * a3 Y9 H" d3 ~$ r  `
    sets:
    ! S* u4 V9 P4 B( g% jdays/1 2 3 4 5 6 0/: required,start;
    2 L) s# |% v5 Y/ bendsets" j# Q7 @. e+ P. F, J- b' D. D4 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的值2 @+ }: D2 q$ L  L( x+ e
    我个人觉得也不是教程上说的加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-9 22:43 , Processed in 2.267047 second(s), 110 queries .

    回顶部