QQ登录

只需要一步,快速开始

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

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

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

1

主题

4

听众

29

积分

升级  25.26%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2009-4-22 11:37 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
本帖最后由 厚积薄发 于 2010-1-26 21:10 编辑 ; Y$ h7 R0 ]8 `, v* X' p5 W
" P  c4 K5 \& M6 V* v
看到一个题:
% j6 n" g* T6 ~4 D) Y# p! h8 V9 l职员时序安排模型  
* C: G4 M7 s/ R; z一项工作一周 7 天都需要有人(比如**工作) ,每天(周一至周日)所需的最少职员数为 20、16、13、16、19、14 和 12,并要求每个职员一周连续工作 5 天,试求每周所需最少职员数,并给出安排。注意这里我们考虑稳定后的情况。
4 E- }3 k9 K0 g, a: p! z! g3 Gmodel:
( O$ p( d" ^1 f* y) s# z+ a4 ^$ msets:
* T" T8 S1 m/ k% ^0 w$ @  days/mon..sun/: required,start; . v. s; g3 {& I' f' C" h- ]
endsets . @  X# L6 O+ V+ |5 P
data:
$ d+ V1 {% u5 I; ~* \; B: O  !每天所需的最少职员数;
' K, J) q" O1 L% ?% L0 Z  required = 20 16 13 16 19 14 12;  9 S. m0 V( Z7 d' ~
enddata 5 G) n. Z! C; s5 h4 v
!最小化每周所需职员数;
+ P$ P2 o; N/ [0 k  min=@sum(days: start);
( U4 ^' ]( K( h0 \1 J9 ?  @for(days(J): 0 ?7 h- i7 c8 G* t
    @sum(days(I) | I #le# 5:
/ _+ R6 A" y) U/ q9 V      start(@wrap(J+I+2,7))) >= required(J));   o' O9 A1 c$ T1 S' y$ Z
end
& `8 [! ^2 u  z, q& V! y; l- G5 m3 x
其中@sum(days(I) | I #le# 5: ; B7 q. U" K  T) K
      start(@wrap(J+I+2,7))) >= required(J)); 是什么意思啊?我知道比如周一要排的人要从上个周四算起,但是不知道wrap中J+I+2和7各代表什么意思啊?还有这个函数怎么用啊?  B3 b% D* [0 x$ f* f8 O- p
请各位帮忙,谢谢了!
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
    : z' v  D" K) L6 v0 M& |一个员工工作一天算一个工期0 Z5 b" K' i: j: q
    所有的天数加起来:总工期
    回复

    使用道具 举报

    追梦者 实名认证       

    13

    主题

    4

    听众

    594

    积分

    升级  98%

    该用户从未签到

    国际赛参赛者

    新人进步奖

    群组数模应用

    群组LINGO

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

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

    群组Mathematica研究小组

    本帖最后由 追梦者 于 2009-8-13 10:37 编辑
    & M# q- S/ U5 J9 K5 [" F; Y
    @wrap(index,limit)函数在循环、多阶段计划编程中经常用到!表示index模limit再加1,limit相当于一个周期。~0 ~1 D6 O, y* a( M3 `9 A! P5 X* e
    371568491 发表于 2009-4-22 22:35
    , p% A2 ?4 Z% n' X9 L& I
    小弟与上面这位仁兄的理解稍有不同,英美中星期表示与我们不同,我们将星期一看成第一天,而他们则是将星期日看成第一天。在lingo中sun就表示第一天,用数字0标识。因此@wrap(index,limit)的用法就是index模limit而不加1。" J: {3 S4 _  S9 B  p0 H
    你可以运行下面的结论来看一看:1 j4 ~7 D3 x1 Y1 w# c. d
    这是原程序
    ( a% [8 e0 ^# x6 C. [6 R- Xmodel:( P0 u. p% O$ y& Y( `$ C
    sets:) ]& l# E/ ^" z, u4 f0 R" P
      days/mon..sun/: required,start;% v2 F& x. s1 h
    endsets0 i, p3 J( l% {' i4 a: {
    data:
    6 ~9 c# [5 B8 b. S. {$ _  !每天所需的最少职员数;3 V4 q; Y0 E4 O" {& d
      required = 20 16 13 16 19 14 12;
    5 [% f# @, }% H; l2 Z( \$ O4 e4 Penddata4 o# f4 B9 o# v- Q3 M" F: ?( L
    !最小化每周所需职员数;6 ^7 ~: V/ F6 N  Z3 z
      min=
    8 Y, v+ n9 _4 Y1 V3 F@sum(days:start);
    & \- h/ V. \# l. h8 n  @for(days(J):
    ' d5 k; ]% Y4 g& L" r1 i# t& h# x    @sum(days(I) | I #le# 5:
    6 W) V. [! v6 n2 x) [8 s! n5 Y      start(@wrap(J+I+2,7))) >= required(J));2 l6 [- Z4 q: O: J. I; Z
    !外国人的第一天是星期日;/ L$ N/ t7 r  k5 }" _7 E7 h. f
    end
    1 r* z8 I' H9 k# {+ m将上面的程序中的集修改为
    6 Y% F9 b/ |- {  U1 Xsets:0 |- B4 w6 h! h- k& X
    days/1 2 3 4 5 6 0/: required,start;
    7 ]. O+ H3 K6 P" z; \4 E4 e/ Jendsets8 h' |7 ~- k  H5 a9 e4 K
    在运行效果一样,证明了我的结论。

    点评

    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的值
    8 ^6 K7 W# N  a我个人觉得也不是教程上说的加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-8-2 12:27 , Processed in 0.603447 second(s), 106 queries .

    回顶部