Misal diberikan 5 pekerjaan dan 3 buah mesin. Setiap pekerjaan harus diproses pada setiap mesin dengan urutan tertentu. Satu mesin hanya dapat memproses satu pekerjaan pada satu waktu tertentu, dan jika sebuah mesin memulai satu pekerjaan, maka pekerjaan tersebut harus diselesaikan (tidak bisa ditunda untuk mengerjakan pekerjaan lain). Tujuannya adalah untuk meminimalkan jumlah waktu penyelesaian untuk setiap pekerjaan. Hubungan antara Pekerjaan, waktu, dan urutan pada setiap mesin diberikan pada tabel di bawah ini:
|
Pekerjaan
|
Mesin 1
|
Mesin 2
|
Mesin 3
|
|
|---|---|---|---|---|
|
1
|
URUTAN
|
3
|
2
|
1
|
|
WAKTU
|
10
|
7
|
5
|
|
|
2
|
URUTAN
|
2
|
1
|
3
|
|
WAKTU
|
5
|
9
|
1
|
|
|
3
|
URUTAN
|
1
|
3
|
2
|
|
WAKTU
|
15
|
2
|
8
|
|
|
4
|
URUTAN
|
2
|
3
|
1
|
|
WAKTU
|
3
|
8
|
10
|
|
|
5
|
URUTAN
|
3
|
1
|
2
|
|
WAKTU
|
7
|
5
|
2
|
|
Kemudian, saya coba menyelesaikannya menggunakan LINGO ver. 11. Kodenya kira-kira seperti ini:
! N = the number of jobs
M = the number of machine
P(i,j) = the processing time of job j on machine i
I=J(R) = at order R, the job J
;
DATA:
N=5;
M=3;
U=100;
! Variabel bantuan, r = m-1;
R=2;
ENDDATA
SETS:
JOB /1..N/;
MACHINE /1..M/;
R_MACHINE /1..R/;
ORDER /1..M/;
! Derived from JOB and MACHINE;
PIJ(MACHINE,JOB)/
1,1 1,2 1,3 1,4 1,5
2,1 2,2 2,3 2,4 2,5
3,1 3,2 3,3 3,4 3,5
/:P;
RJ(JOB,ORDER)/
1,1 1,2 1,3
2,1 2,2 2,3
3,1 3,2 3,3
4,1 4,2 4,3
5,1 5,2 5,3
/:I;
TIJ(MACHINE,JOB)/
1,1 1,2 1,3 1,4 1,5
2,1 2,2 2,3 2,4 2,5
3,1 3,2 3,3 3,4 3,5
/:T;
ENDSETS
! The data;
DATA:
P=
10 5 15 3 7
7 9 2 8 5
5 1 8 10 2;
I=
3 2 1
2 1 3
1 3 2
3 1 2
2 3 1;
ENDDATA
! Objective function;
MIN=@SUM(TIJ(M_,J_) M_ #EQ# M : T(I(J_,M_),J_));
! First Constraints;
@FOR(R_MACHINE(R_):
@FOR(JOB(J_):
T(I(J_,R_+1),J_) >= T(I(J_,R_),J_) + P(I(J_,R_),J_)
)
);
! Second constraints;
@FOR(MACHINE(I_):
@FOR(JOB(J_):
@FOR(JOB(K_):
T(I_,J_) - T(I_,K_) <= -1*P(I_,J_) + U*(1 - X(I_,J_,K_))
)
)
);
! Third constraints;
@FOR(MACHINE(I_):
@FOR(JOB(J_):
@FOR(JOB(K_):
T(I_,K_) - T(I_,J_) <= -1*P(I_,K_) + U*X(I_,J_,K_) ) ) ); ! Tij in non-negative; @FOR(MACHINE(I_): @FOR(JOB(J_): T(I_,J_)>= 0
)
);
! Xijk is Binary Variables;
@FOR(MACHINE(I_):
@FOR(JOB(J_):
@FOR(JOB(K_):
@BIN(X(I_,J_,K_))
)
)
);
Note: Ada satu baris yang saya hilangkan, apakah itu??
Nah, setelah saya solve, keluar pesan sebagai berikut:
The LINDO API returned the following error code: 2026
LINDO API routine: LSolveMIP
License is too small for the given problem.
Padahal license-nya Unlimited, dan Commercial Version. Ada yang bisa bantu?







wah.. kasih tau dong mana baris yang dihilangkan,sy coba syntax di lingo keluar pesan ; error code 11
Setelah
TIJ(MACHINE,JOB)/1,1 1,2 1,3 1,4 1,5
2,1 2,2 2,3 2,4 2,5
3,1 3,2 3,3 3,4 3,5
/:T;
Sebelum
ENDSETSTambahkan
XIJ(MACHINE,JOB,JOB):X;bagian
MIN=@SUM(TIJ(M,J)M#EQ# M : T(I(J,M),J));
kok error y?
Yang benar
MIN=@SUM(TIJ(M_,J_) | M_ #EQ# M : T(I(J_,M_),J_));