QQ登录

只需要一步,快速开始

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

职员排序问题 利用lingo如何解决

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

8

主题

7

听众

227

积分

升级  63.5%

  • TA的每日心情
    开心
    2014-2-6 16:34
  • 签到天数: 55 天

    [LV.5]常住居民I

    自我介绍
    heh

    群组2014年美赛冲刺培训

    群组Matlab讨论组

    跳转到指定楼层
    1#
    发表于 2013-8-10 10:01 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    例5.13 职员时序安排模型 一项工作一周7 天都需要有人(比如护士工作),每
    天(周一至周日)所需的最少职员数为20、16、13、16、19、14 和12,并要求每个职
    员一周连续工作5 天,试求每周所需最少职员数,并给出安排。注意这里我们考虑稳定
    后的情况。
    model:
    sets:
    days/mon..sun/: required,start;
    endsets
    data:
    !每天所需的最少职员数;
    required = 20 16 13 16 19 14 12;
    enddata
    !最小化每周所需职员数;
    min=@sum(days: start);
    @for(days(J):@sum(days(I) | I #le# 5:
    start(@wrap(J+I-5,7))) >= required(J));
    end

    (@wrap(J+I-5,7) 中的 J+I-5 是怎么确定出来的,为什么还可以是J+I+2
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    madio        

    3万

    主题

    1311

    听众

    5万

    积分

  • TA的每日心情
    奋斗
    2024-7-1 22:21
  • 签到天数: 2014 天

    [LV.Master]伴坛终老

    自我介绍
    数学中国站长

    社区QQ达人 邮箱绑定达人 优秀斑竹奖 发帖功臣 风雨历程奖 新人进步奖 最具活力勋章

    群组数学建模培训课堂1

    群组数学中国美赛辅助报名

    群组Matlab讨论组

    群组2013认证赛A题讨论群组

    群组2013认证赛C题讨论群组

    7天一个循环,所以+2和-5是一样的

    点评

    wujianjack2  感谢madio大哥的回复,我还有几个方案,再补充说明下吧!  详情 回复 发表于 2013-8-10 14:40
    回复

    使用道具 举报

    21

    主题

    97

    听众

    3110

    积分

  • TA的每日心情
    奋斗
    2014-3-2 00:26
  • 签到天数: 243 天

    [LV.8]以坛为家I

    madio 发表于 2013-8-10 11:20
    7天一个循环,所以+2和-5是一样的

    感谢madio大哥的回复,我还有几个方案,再补充说明下吧!
    有什么好说的
    回复

    使用道具 举报

    21

    主题

    97

    听众

    3110

    积分

  • TA的每日心情
    奋斗
    2014-3-2 00:26
  • 签到天数: 243 天

    [LV.8]以坛为家I

      楼主你好!你提的问题很好,相当经典!
      首先做个说明,对你的帖子的标题进行了修改,方便大家阅读,请理解!
      就你的问题来说,J+I-5的确定,是因为员工每周连续工作5天休息2天,当天开始上班的人数加上前4天已经上班的人数要满足每天员工需求的数量。比如:周四才开始上班的人数加上周日,周一,周二,周三开始上班的人数之和要大于等于16。至于为什么可以写成J+I+2这种形式,与@WRAP()函数工作机理有关,建议你自行学习下,印象会更深刻!madio大哥说得对,你也可以尝试J+I+9,J+I-12等这些形式,结果应不变。
      本问题的结果应为(仅列出部分重要结果):
      Global optimal solution found.
      Objective value:                              22.00000
      Infeasibilities:                                    0.000000
      Total solver iterations:                             5

       START( MON)        8.000000            0.000000
       START( TUE)         2.000000            0.000000
       START( WED)       0.000000            0.000000
       START( THU)         6.000000            0.000000
       START( FRI)          3.000000            0.000000
       START( SAT)          3.000000            0.000000
       START( SUN)         0.000000           0.3333333

    关于这个问题,我还提供下另外两个不同的方案,程序代码如下:
    1.引自《LINGO和Excel在数学建模中的应用》书中P36-37:
    MODEL:
    SETS:
    DAYS/MON..SUN/:R,X;
    ENDSETS
    DATA:
    R=20,16,13,16,19,14,12;!每天所需的最少职员数;
    ENDDATA
    MIN=Z;!最小化每周所需职员数;
    N=@SIZE(DAYS);
    Z=@SUM(DAYS:X);
    @FOR(DAYS(I):Z-X(@WRAP(I+1,N))-X(@WRAP(I+2,N))>=R(I));
    END

    2.引自LINGO 11自带教程:
    MODEL:
    SETS:
      DAYS:REQUIRED,START;
    ENDSETS
    DATA:
      DAYS=MON TUE WED THU FRI SAT SUN;
      REQUIRED=20 16 13 16 19 14 12;
    ENDDATA
    MIN=@SUM(DAYS(I):START(I));
    @FOR(DAYS(J):@SUM(DAYS(I)|I#LE#5:START(@WRAP(J-I+1,7)))>=REQUIRED(J));
    END

    上述两个程序的结果都与之前给出的相同,楼主可以试着运行一下。

    以上是个人对本问题的见解,仅供参考,如有错误,请不吝指出,谢谢支持!




    有什么好说的
    回复

    使用道具 举报

    magic2728 实名认证    中国数模人才认证   

    61

    主题

    478

    听众

    4861

    积分

    升级  95.37%

  • TA的每日心情
    慵懒
    2014-9-29 19:37
  • 签到天数: 409 天

    [LV.9]以坛为家II

    群组数学中国 2015美赛护航

    群组数模专题强化培训

    群组建模思维养成培训

    群组2015美赛护航(强化)

    群组2013年数学建模国赛备

    @wrap(J+I-5,7)表示(J+I-5)-7*n,n取恰当的整数使得返回值是1~7之间的整数,这样就解决了周二以后的人工作时间跨过了一周的问题。sum表示把在当天日期还在工作的人数加和。要求是必须符合最少人数的限制,而for那层循环解决的问题是,7天都必须满足。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2025-7-22 12:42 , Processed in 0.588698 second(s), 76 queries .

    回顶部