QQ登录

只需要一步,快速开始

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

[求助]請幫個忙 利用lingo求解人員排班問題

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

1

主题

0

听众

61

积分

升级  58.95%

该用户从未签到

跳转到指定楼层
1#
发表于 2009-7-19 17:00 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
本帖最后由 lauda1109 于 2009-7-21 20:28 编辑

建了模式 需要做驗證 自己假設了三種問題規模 第三種12個人21天的求解結果相當奇怪 卻不知道問題在哪 請高手幫幫我 以下是部分限制式
member/1..12/:M;
!有12位員工;
day/1..21/:D;
!週期有21天 假設第6 7 13 14 20 21天為星期六 日;
job/1..5/:J;
!3種班別+休假+緊急支援人力;
links1(member,job,day):L;

min=z1+z2+z3+z4+z5;
@for(member(M)|M#EQ#1:@for(job(J)|J#EQ#4:@for(day(D)|D#LE#19:z1=L(M,J-3,D)+L(M,J-1,D+1)+L(M,J,D+2))));
@for(member(M)|M#EQ#1:@for(job(J)|J#EQ#4:@for(day(D)|D#LE#19:z2=L(M,J-2,D)+L(M,J-1,D+1)+L(M,J,D+2))));
@for(member(M)|M#EQ#1:@for(job(J)|J#EQ#4:@for(day(D)|D#LE#19:z3=L(M,J-1,D)+L(M,J,D+1)+L(M,J-1,D+2))));
@for(member(M)|M#EQ#1:@for(job(J)|J#EQ#2:@for(day(D)|D#LE#18:z4=L(M,J,D)+L(M,J-1,D+1)+L(M,J,D+2)+L(M,J-1,D+3))));
@for(member(M)|M#EQ#1:@for(job(J)|J#EQ#4:@for(day(D)|D#EQ#1:z5=(L(M,J,D+5)*L(M,J,D+5)+L(M,J,D+6)*L(M,J,D+6)+L(M,J,D+12)*L(M,J,D+12)+L(M,J,D+13)*L(M,J,D+13)+L(M,J,D+19)*L(M,J,D+19)+L(M,J,D+20)*L(M,J,D+20))/12-(((L(M,J,D+5)+L(M,J,D+6)+L(M,J,D+12)+L(M,J,D+13)+L(M,J,D+19)+L(M,J,D+20))/12)*((L(M,J,D+5)+L(M,J,D+6)+L(M,J,D+12)+L(M,J,D+13)+L(M,J,D+19)+L(M,J,D+20))/12)))));
目標函數 用來求解班表產生時候 計算違背了上述目標式子發生的次數

@for(job(J)|J#EQ#1:@for(day(D)|D#EQ#1:@for(member(M)|M#EQ#1:L(M,J,D)+L(M+1,J,D)+L(M+2,J,D)+L(M+3,J,D)+L(M+4,J,D)+L(M+5,J,D)+L(M+6,J,D)+L(M+7,J,D)+L(M+8,J,D)+L(M+9,J,D)+L(M+10,J,D)+L(M+11,J,D)>=4)));滿足基本人力需求 需求都自己假設

@for(member(M)|M#EQ#1:@for(day(D)|D#EQ#1:@for(job(J)|J#EQ#1:L(M,J,D)+L(M,J+1,D)+L(M,J+2,D)+L(M,J+3,D)+L(M,J+4,D)=1)));限制每人每天只能上一種班別

@for(member(M)|M#EQ#1:@for(day(D)|D#LE#20:@for(job(J)|J#EQ#3:L(M,J,D)+L(M,J-2,D+1)<=1)));
@for(member(M)|M#EQ#1:@for(day(D)|D#LE#20:@for(job(J)|J#EQ#3:L(M,J,D)+L(M,J-1,D+1)<=1)));
@for(member(M)|M#EQ#1:@for(day(D)|D#LE#20:@for(job(J)|J#EQ#2:L(M,J,D)+L(M,J-1,D+1)<=1)));
@for(member(M)|M#EQ#1:@for(day(D)|D#LE#19:@for(job(J)|J#EQ#4:L(M,J,D)+L(M,J,D+1)+L(M,J,D+2)<=2)));相關排班和休假限制

@for(member(M)|M#EQ#1:@for(day(D)|D#LE#15:@for(job(J)|J#LE#4:L(M,J,D)+L(M,J,D+1)+L(M,J,D+2)+L(M,J,D+3)+L(M,J,D+4)+L(M,J,D+5)+L(M,J,D+6)<=6)));連續工作與休假天數限制 組合很多 因為我用比較土法煉鋼的方法寫 所以只取一條

發生的問題在於 程式執行後 solver status沒有顯示任何結果 只有infeasible 而在extend solver status裡 obj bound的值與產生的班表自己手算驗證相差很多 不知從何改起 lingo的option設定也不太會調 所以來這發問 幫幫我吧 謝謝
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
lauda1109        

1

主题

0

听众

61

积分

升级  58.95%

该用户从未签到

分類選錯了 但是怎麼只有好書分享可以選....
抱歉了 我並非分享書籍 而是求解問題
回复

使用道具 举报

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

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

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

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

蒙公网安备 15010502000194号

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

GMT+8, 2025-8-15 07:53 , Processed in 0.854436 second(s), 61 queries .

回顶部