- 在线时间
- 3 小时
- 最后登录
- 2015-3-16
- 注册时间
- 2015-3-1
- 听众数
- 12
- 收听数
- 0
- 能力
- 0 分
- 体力
- 4 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 5
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 8
- 主题
- 1
- 精华
- 0
- 分享
- 0
- 好友
- 2
升级   0% TA的每日心情 | 开心 2015-3-1 18:04 |
---|
签到天数: 1 天 [LV.1]初来乍到
- 自我介绍
- 你好我是TOmmy
 |
本帖最后由 tommy0507 于 2015-3-1 16:22 编辑
程式語法如下 不知道lingo8升級到lingo12怎麼會跑不出來
在lingo8可以跑出結果 但lingo12一直顯示錯誤
因為已經使用win8如果灌lingo8 所以只能使用lingo12
請各位大神們 幫忙一下
!================================================;
Model:
Sets: !設定巨集開始;
people/1..28/:i; !輪班人員(i=1~28);
job/1..3/:j; !勤務模式(j=1~3);
timezone/1..3/:k; !出勤時段(k=1~3);
day/1..7/:d; !每周有7天(d=1~7);
PP(Job,Timezone):p; !勤務需求人力pjk;
XX(People,Job,Day,Timezone):x; !決策變數x(i,j,d,k);
YY(People,Day):y; !決策變數y(i,d);
Endsets
!================================================;
Data:
!設定常數;
p=@OLE('d:\Excel.xlsx','pjk');
!引入需求人數;
@OLE('d:\Excel.xlsx','xijdk')=x;
!引出執行結果;
W1=1; !k=1 早班加權*1;
W2=2; !k=2 晚班加權*2;
W3=3; !k=3 大夜班加權*3;
Enddata
!設定資料結束;
!================================================;
Min=Z-W;
!每位輪班人員出勤次數之最大平均數(3-1);
@for(people(i): <===這裡一直顯示錯誤
@sum(XX(i,j,d,k)|k#eq#1:x(i,j,d,k))*W1+
@sum(XX(i,j,d,k)|k#eq#2:x(i,j,d,k))*W2+
@sum(XX(i,j,d,k)|k#eq#3:x(i,j,d,k))*W3<=Z);
!最大排班次數小於等於Z(3-2);
@for(people(i): <===如果忽略前面 這裡也會
@sum(XX(i,j,d,k)|k#eq#1:x(i,j,d,k))*W1+ 基本上以下都會
@sum(XX(i,j,d,k)|k#eq#2:x(i,j,d,k))*W2+ 但lingo8卻可以出來
@sum(XX(i,j,d,k)|k#eq#3:x(i,j,d,k))*W3>=W);
!最大排班次數小於等於Z(3-2);
@for (people(i):
@for(day(d):
@sum(XX(i,j,d,k):x(i,j,d,k))<=1));
!每天每人僅能一種勤務模式(3-3);
@for(people(i):
@for(day(d)|d#le#6:
@sum(Job(j):x(i,j,d,3)+x(i,j,d+1,1))<=1));
!每日大夜班之次日不得排列早班(3-4);
@for(people(i):
@sum(Job(j):x(i,j,7,3)+x(i,j,1,1))<=1);
!每周最後一日大夜班次日不得排列早班(3-5);
@for(people(i)|i#le#14:
@for(day(d):
@sum(Timezone(k):x(i,3,d,k))=0));
!正職人員可任職之限制(3-6);
@for(people(i)|i#ge#15:
@for(day(d):
@sum(Timezone(k):x(i,1,d,k))=0));
!約僱人員可任職之限制(3-7);
@for(job(j):
@for(day(d):
@for(Timezone(k):
@sum(XX(i,j,d,k):x(i,j,d,k))>=p(j,k))));
!各時段人力需求限制(3-8);
@for(people(i):
@sum(XX(i,j,d,k):x(i,j,d,k))<=5);
!每人排程內不超過五天班 (3-9);
!================================================;
!決策變數Xijdk,屬於0或1的限制;
@for(people(i):
@for(job(j):
@for(Timezone(k):
@for(day(d):
@bin(x(i,j,d,k))))));
@for(people(i):
@for(day(d):
@bin(y(i,d))));
!================================================;
END
|
zan
|