Usulan Penjadwalan Produksi Dengan Menggunakan Algoritma Ant Colony System (Studi Kasus Di CV.Bina Rubber, Sumedang).

ABSTRAK
CV. Bina Rubber adalah perusahaan yang bergerak dalam pembuatan
sparepart mesin berbahan dasar karet. Perusahaan merasakan bahwa sistem produksi
yang ada saat ini tidak terlalu baik, dan masih ada peluang untuk ditingkatkan. Hal
ini ditandai dengan besarnya delay mesin dan rendahnya utilisasi sehingga makespan
menjadi relatif tinggi.
Untuk mengatasi masalah tersebut dilakukan usulan penjadwalan produksi
menggunakan salah satu dari metode Ant Colony System Job Shop (ACSJS) atau
Active Scheduling. Metode ACSJS akan dihitung dengan software, sedangkan
metode Active Scheduling dihitung secara manual. Sebelum menggunakan software
ACSJS, terlebih dahulu dilakukan validasi menggunakan contoh pesanan
perusahaan. Hasil yang diperoleh menunjukkan bahwa software ACSJS telah valid.
Dalam memilih antara ACSJS dengan Active Scheduling, dilakukan perbandingan
dengan tiga buah contoh kasus jobshop. Kasus pertama adalah kasus 3 job 3 mesin,
kasus kedua adalah kasus 4 job 3 mesin, dan kasus ketiga adalah kasus 4 job 4 mesin.
Pada kasus pertama, ACSJS dan Active Scheduling menghasilkan makespan yang
sama. Untuk kasus kedua, ACSJS menghasilkan makespan dengan selisih 3 menit
lebih singkat, dan untuk kasus ketiga, ACSJS menghasilkan makespan dengan selisih
9 menit lebih singkat. Berdasarkan hasil tersebut ACSJS terpilih sebagai metode
usuluan pemecahan masalah perusahaan.
Penjadwalan dengan software ACSJS menghasilkan output urutan pengerjaan

optimal dengan waktu running 40 menit 38 detik. Hal ini didapatkan dengan
menggunakan nilai parameter ρ=0.01, β=0.5, α=0.5, a=1000, dan NC max=1000.
Setelah dilakukan Penelitian parameter optimal untuk kasus perusahaan, didapatkan
bahwa parameter optimal ρ=0.1, β=0.7, α=0.3, a=34. Dengan menggunakan
parameter optimal ini, penjadwalan perusahaan dapat diselesaikan dalam waktu
kurang dari 1 menit untuk menghasilkan output yang sama.
Dengan menggunakan metode ACSJS untuk pesanan aktual perusahaan, yaitu
sebanyak 8 pesanan, diperoleh pengurangan makespan sebesar 15,2% dari 3691
menit dengan menggunakan metode perusahaan (First in first out atau FIFO),
menjadi 3160 menit dengan metode ACSJS. Selain waktu penyelesaian yang lebih
singkat, delay yang juga dapat dikurangi sebesar 8,6% dari 1374 menit menggunakan
metode FIFO, menjadi 1256 menit dengan metode ACSJS. Utilisasi mesin juga
meningkat dari 60,92 % dengan metode FIFO menjadi 71,86 % dengan metode
ACSJS.

DAFTAR ISI
ABSTRAK ....................................................................................................... v
KATA PENGANTAR ..................................................................................... vi
DAFTAR ISI .................................................................................................... viii
DAFTAR GAMBAR ....................................................................................... xi

DAFTAR TABEL ............................................................................................ xii
DAFTAR LAMPIRAN .................................................................................... xiv
BAB 1 PENDAHULUAN
1.1.

Latar Belakang Masalah ....................................................................... 1-1

1.2.

Identifikasi Masalah ............................................................................. 1-2

1.3.

Pembatasan Masalah dan Asumsi ........................................................ 1-2

1.3.1 Pembatasan Masalah ............................................................................ 1-3
1.3.2 Asumsi .................................................................................................. 1-3
1.4

Perumusan Masalah.............................................................................. 1-3


1.5

Tujuan Penelitian.................................................................................. 1-3

1.6

Sistematika Penulisan ........................................................................... 1-3

BAB 2 TINJAUAN PUSTAKA
2.1

Penjadwalan ......................................................................................... 2-1

2.1.1 Tujuan Penjadwalan ............................................................................. 2-2
2.1.2 Masukan Dalam Penjadwalan .............................................................. 2-2
2.1.3 Notasi Matematis Penjadwalan ............................................................ 2-4
2.1.4 Penjadwalan Berdasarkan Jumlah Mesin ............................................. 2-5
2.1.5 Penjadwalan Berdasarkan Aliran Proses .............................................. 2-8
2.2


Ant Colony Sistem ............................................................................... 2-10

2.2.2 Permasalahan Dalam Ant Colony Sistem ............................................ 2-14
2.2.1 Algoritma Ant Colony Sistem .............................................................. 2-17
2.2.3 Penjadwalan Job Shop Dengan Ant Colony Sistem ............................ 2-18
2.3

Peta Proses Operasi .............................................................................. 2-23

2.4

Gantt Chart ........................................................................................... 2-23

2.5

Active Scheduling ................................................................................ 2-25

BAB 3 METODOLOGI PENELITIAN
3.1.


Penelitian Awal .................................................................................... 3-2

3.2.

Identifikasi Masalah ............................................................................. 3-3

3.3.

Perumusan Masalah.............................................................................. 3-4

3.4.

Penetapan Tujuan Penelitian ................................................................ 3-4

3.5.

Studi Literatur ...................................................................................... 3-4

3.6.


Penentuan Metode Penyelesaian Masalah............................................ 3-4

3.7.

Pengumpulan Data ............................................................................... 3-5

3.8.

Pembuatan Software ACSJS ................................................................ 3-5

3.9.

Pengujian Software ............................................................................... 3-5

3.9.1. Pengolahan Manual .............................................................................. 3-6
3.10. Penentuan Metode Terbaik................................................................... 3-11
3.10.1 Metode ACSJS ..................................................................................... 3-11
3.10.2 Metode Active Scheduling .................................................................... 3-11
3.11. Pemecahan Masalah ............................................................................. 3-11

3.12. Analisis ................................................................................................. 3-12
3.13. Kesimpulan dan Saran .......................................................................... 3-12
BAB 4 PENGUMPULAN DATA
4.1

Data umum perusahaan ........................................................................ 4-1

4.1.1 Sejarah singkat perusahaan .................................................................. 4-1
4.1.2 Struktur organisasi perusahaan............................................................. 4-2
4.1.3 Job Description .................................................................................... 4-4
4.1.4 Data waktu kerja perusahaan................................................................ 4-5
4.2.1 Data pesanan perusahaan ..................................................................... 4-5
4.2

Data penelitian...................................................................................... 4-5

4.2.2 Penjadwalan perusahaan ...................................................................... 4-6
4.2.3 Mesin yang digunakan perusahaan ...................................................... 4-6
4.2.4 Peta proses operasi ............................................................................... 4-7
4.2.5 Waktu proses masing-masing produk .................................................. 4-11

BAB 5 PENGOLAHAN DATA DAN ANALISIS
5.1

Pengolahan Data ................................................................................... 5-1

5.1.1 Penjadwalan Metode Perusahaan ......................................................... 5-1
5.1.2 Gantt Chart Aktual ............................................................................... 5-10
5.1.3 Uji Validasi Software ........................................................................... 5-10
5.1.3.1 Pengolahan manual ACSJS .................................................................. 5-10
5.1.3.2 Pengolahan Software ............................................................................ 5-19
5.1.4 Perbandingan ACSJS dengan Active Scheduling. ............................... 5-21
5.1.5 Usulan Penjadwalan Dengan ACSJS ................................................... 5-22
5.1.6 Perhitungan Parameter optimal ............................................................ 5-22
5.1.6.1 Optimasi Parameter ρ ........................................................................... 5-23
5.1.6.2 Optimasi Parameter a ........................................................................... 5-23
5.1.6.3 Optimasi Parameter α dan β ................................................................. 5-25
5.2

Analisis ................................................................................................. 5-26


5.2.1 Analisis Penjadwalan Perusahaan ........................................................ 5-26
5.2.2 Analisis Validasi Software ................................................................... 5-29
5.2.3 Analisis Parameter optimal ACSJS aktual ........................................... 5-29
5.2.3.1 Analisis Parameter ρ............................................................................. 5-30
5.2.3.2 Analisis Parameter a ............................................................................. 5-33
5.2.3.3 Analisis Parameter α dan β ................................................................... 5-33
5.2.4 Analisis Perbandingan ACSJS dengan Active Scheduling .................. 5-34
5.2.5 Analisis Penjadwalan ACSJS Vs FIFO ................................................ 5-36
5.2.6 Analisis Manfaat penjadwalan usulan .................................................. 5-38
BAB 6 KESIMPULAN DAN SARAN
6.1

Kesimpulan........................................................................................... 6-1

6.1.1 Metode penjadwalan peusahaan (FIFO) .............................................. 6-1
6.1.2 Metode usulan (ACSJS) ....................................................................... 6-1
6.1.3 Manfaat metode penjadwalan usulan (ACSJS) .................................... 6-2
6.2

Saran ..................................................................................................... 6-2


DAFTAR PUSTAKA
LAMPIRAN
KOMENTAR DOSEN
DATA PENULIS

DAFTAR GAMBAR
Nama

Judul

Halaman

Gambar 2.1

Percobaan Goss et al ................................................................ 2-11

Gambar 2.2

Hasil percobaan Goss et al ....................................................... 2-11


Gambar 2.3

Percobaan lanjutan.................................................................... 2-13

Gambar 2.4

Bagan Alir Algoritma ACSJS .................................................. 2-21

Gambar 2.5

Gantt Chart............................................................................... 2-24

Gambar 3.1

Flowchart Metodologi Penelitian ............................................. 3-1

Gambar 3.2

Bagan Alir Algoritma ACSJS .................................................. 3-9

Gambar 4.1

Struktur organisasi .................................................................... 4-3

Gambar 4.2

Peta Proses Operasi Roll Squezing........................................... 4-10

Gambar 5.1

Graf pengolahan ACSJS manual .............................................. 5-11

Gambar 5.2

Gantt Chart ACSJS validasi manual ........................................ 5-29

Gambar 5.3

Ouput Validasi Software........................................................... 5-20

Gambar 5.4

Hasil Penjadwalan Aktual ACSJS ............................................ 5-22

Gambar 5.5

Grafik optimasi a ...................................................................... 5-24

Gambar 5.6

Penelitian Parameter ρ Sjoerd dan Carlos ................................ 5-30

Gambar 5.7

Penelitian Parameter ρ Penulis ................................................. 5-32

Gambar 5.8

Gantt Chart Contoh Kasus 2 ACSJS ........................................ 5-34

Gambar 5.9

Gantt Chart Contoh Kasus 2 Active Scheduling ....................... 5-35

Gambar 5.10 Perbandingan Makespan ACSJS Vs FIFO ............................... 5-38

DAFTAR TABEL
Nama

Judul

Halaman

Tabel 2.1

Tabel Permasalahan Dalam Ant colony .................................... 2-17

Tabel 4.1

Data Waktu Kerja Perusahaan .................................................. 4-5

Tabel 4.2

Data Pesanan periode 11 - 16 Agustus 2008 ............................ 4-5

Tabel 4.3

Data Mesin yang Dimiliki Perusahaan ..................................... 4-7

Tabel 4.4

Data Bahan Baku ...................................................................... 4-8

Tabel 4.5

Data Waktu Proses, Perpindahan dan Setup ............................. 4-11

Tabel 5.1

Tabel Waktu Persiapan Bahan Baku ........................................ 5-1

Tabel 5.2

Tabel Waktu Pemotongan dan pembubutan poros ................... 5-1

Tabel 5.3

Tabel Waktu Pemotongan, Bor, dan Las Plat........................... 5-2

Tabel 5.4

Tabel Waktu Pembalutan dan Pembubutan Karet .................... 5-2

Tabel 5.5

Tabel Waktu Pembalutan dan Pembubutan Karet .................... 5-2

Tabel 5.6

Tabel Waktu Pemeriksaan dan Packing ................................... 5-3

Tabel 5.7

Tabel Waktu Pembongkaran Karet .......................................... 5-3

Tabel 5.8

Tabel Waktu Proses Produk Roll Squezing .............................. 5-4

Tabel 5.9

Tabel Waktu Proses Produk Roll Pader ................................... 5-4

Tabel 5.10

Tabel Waktu Proses Produk Roll Bottom ................................. 5-5

Tabel 5.11

Tabel Waktu Proses Produk Roll Imersium.............................. 5-5

Tabel 5.12

Tabel Waktu Proses Produk Roll Mangle (Service) ................. 5-6

Tabel 5.13

Tabel Waktu Proses Produk Roll Expander (Service) .............. 5-6

Tabel 5.14

Tabel Waktu Proses Produk Jokey Roller ................................ 5-7

Tabel 5.15

Tabel Waktu Proses Produk Roll Hypalon (Service) ............... 5-7

Tabel 5.16

Tabel Waktu Proses Total Semua Produk ................................ 5-8

Tabel 5.17

Tabel Waktu Proses yang Digunakan Dalam Penjadwalan ..... 5-9

Tabel 5.18

Tabel Urutan Proses yang Digunakan Dalam Penjadwalan ..... 5-9

Tabel 5.19

Tabel Pesanan Pengolahan Manual ACSJS ............................. 5-10

Tabel 5.20

Tabel Waktu Proses Pengolahan Manual ACSJS .................... 5-11

Nama

Judul

Halaman

Tabel 5.21

Tabel Urutan Proses Pengolahan Manual ACSJS .................... 5-11

Tabel 5.22

Matriks Phereomone Awal Pengolahan Manual ACSJS ......... 5-12

Tabel 5.23

ACSJS manual semut 1 ............................................................ 5-13

Tabel 5.24

ACSJS manual semut 2 ............................................................ 5-14

Tabel 5.25

Tabel rangkuman ACSJS manual ............................................. 5-18

Tabel 5.26

Matriks pheromone baru ACSJS manual ................................. 5-18

Tabel 5.27

Hasil Validasi Software ............................................................ 5-20

Tabel 5.28

Perbandingan ACSJS dengan Active Scheduling ..................... 5-21

Tabel 5.29

Hasil Optimasi ρ ....................................................................... 5-23

Tabel 5.30

Hasil Optimasi a ....................................................................... 5-24

Tabel 5.31

Hasil Optimasi a Lanjutan ....................................................... 5-25

Tabel 5.32

Hasil Optimasi α dan ß ............................................................. 5-26

Tabel 5.33

Keterlambatan Pekerjaan dengan Penjadwalan perusahaan ..... 5-27

Tabel 5.34

Keterlambatan Pekerjaan dengan Penjadwalan ACSJS ........... 5-36

Tabel 5.35

Perbandingan ACSJS Vs FIFO ................................................ 5-38

DAFTAR LAMPIRAN
Nama

Judul

Halaman

Lampiran 1

Validasi Software........................................................................... L1-1

Lampiran 2

ACSJS Vs Active Scheduling ........................................................ L2-1

Lampiran 3

Input Software Penjadwalan Aktual .............................................. L3-1

Lampiran 4

Gantt Chart.................................................................................... L4-1

Lampiran 5

Peta Proses Operasi ....................................................................... L5-1

 
 
 
 
 
 
 
 
 
 
 
 

LAMPIRAN 1
INPUT VALIDASI SOFTWARE
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Program ACS (input,output); 
{$N+} 
uses Wincrt; 
const alpha=0.5; 
      beta=0.5; 
      rho=0.01;      
var 
   O,OM,JP:array [1..30,1..30] of byte; 
   Omega,Jobready,UnitOven:array [1..30] of byte; 
   Ono,m,mavai:array [1..100] of real; 
   Bestmakespan,TOven,TBlow: real;                         
   jumlahsemut, jmljob, jmlop,jmlmsn, Nc, Ncmax, 
t,nosemut, no, jmlisi, taboo, x: integer; 
   TL:array [1..30] of integer; 
   tau, eta:array [1..60,1..60] of single; 
   taualpha,OTbeta,RTO,TBubut:array [1..30] of double; 
   OT,javai:array [1..30,1..30] of real; 
   Rute:array [1..100] of byte; 
   Turn,jmaxpred,Generasi,Semut:integer; 
   ferom:byte; 
   javas:real; 
 
 
Procedure Input;forward; 
Procedure Inisialisasi;forward; 
Procedure Ome;forward; 
Procedure PheromoneAlpha;forward; 
Procedure OperationTimeBeta;forward; 
Procedure Probabilitas;forward; 
Procedure Makes;forward; 
Procedure Pheromone;forward; 
 
Procedure Input; 
var 
   i,j:integer; 
Begin 
     {Seting parameter awal} 
     jumlahsemut:=2; 
     Ncmax:=1; 
     jmljob:=5; 
     jmlop:=3; 
     jmlmsn:=10; {mesin 8 hingga 10 hanya dummy} 
     Bestmakespan:=9999; 
     ferom:=0; 
     {Urutan operasi} 
     O[1,1]:=1; 
     O[1,2]:=2; 
     O[1,3]:=3;      
     O[2,1]:=4; 
     O[2,2]:=5; 
     O[2,3]:=6;     
     O[3,1]:=7; 
     O[3,2]:=8; 
     O[3,3]:=9; 
     O[4,1]:=10; 
     O[4,2]:=11; 
     O[4,3]:=12; 
     O[5,1]:=13; 
     O[5,2]:=14; 
     O[5,3]:=15; 
     {Waktu operasi} 
     OT[1,1]:=75; 
     OT[1,2]:=200; 
     OT[1,3]:=275;     
     OT[2,1]:=90; 
     OT[2,2]:=186; 

     OT[2,3]:=0;      
     OT[3,1]:=90; 
     OT[3,2]:=30; 
     OT[3,3]:=0; 
     OT[4,1]:=140; 
     OT[4,2]:=315; 
     OT[4,3]:=0; 
     OT[5,1]:=120; 
     OT[5,2]:=108; 
     OT[5,3]:=264; 
     {Urutan mesin} 
     OM[1,1]:=2; 
     OM[1,2]:=3; 
     OM[1,3]:=7;      
     OM[2,1]:=2; 
     OM[2,2]:=3; 
     OM[2,3]:=8;      
     OM[3,1]:=4; 
     OM[3,2]:=5; 
     OM[3,3]:=9; 
     OM[4,1]:=1; 
     OM[4,2]:=7; 
     OM[4,3]:=10; 
     OM[5,1]:=6; 
     OM[5,2]:=3; 
     OM[5,3]:=7; 
     {untuk oven} 
     UnitOven[1]:=5; 
     UnitOven[2]:=0; 
     UnitOven[3]:=0; 
     UnitOven[4]:=7; 
     UnitOven[5]:=6; 
     TOven:=480; 
     TBlow:=480; 
     TBubut[1]:=150; 
     TBubut[2]:=0; 
     TBubut[3]:=0; 
     TBubut[4]:=175; 
     TBubut[5]:=150; 
end; 
Procedure Inisialisasi; 
var 
   i,j,k,l,nomesin:integer; 
   bestmakespan2:real; 
Begin 
     {Job siap dijadwalkan}            {input tambahan untuk 
job yang boleh dijadwalkan} 
     Jobready[1]:=0;                   {ready=0} 
     Jobready[2]:=0; 
     Jobready[3]:=0; 
     Jobready[4]:=0; 
     Jobready[5]:=1; 
     {predesesor dari job} 
     jmaxpred:=2; 
     For i:=1 to jmljob do 
         For j:=1 to jmaxpred do 
             JP[i,j]:=0; 
     JP[5,1]:=2; 
     JP[5,2]:=3;                                {input tambahan untuk 
predesesor} 
     {Makespan:=0;} 
     Javas:=0; 
     Turn:=1; 
     For i:=1 to jmljob do 
         javai[i,1]:=0; 

     For nomesin:=1 to jmlmsn do 
     begin 
         mavai[nomesin]:=0; 
     end; 
     t:=0; 
     jmlisi:=1;     
     Bestmakespan2:=Bestmakespan; 
     
{Penentuan feromon awal} 
     If ferom = 0 then 
     begin 
     ferom := 1; 
     no:=O[jmljob,jmlop]; 
     For k:=0 to no do 
         For l:=1 to no do 
         Begin 
             if k=l then 
                tau[k,l]:=0 
             else 
                 tau[k,l]:=1; 
         end; 
     end; 
     Bestmakespan:=Bestmakespan2; 
          {Penentuan operasi untuk omega awal} 
     For i:=1 to jmljob do 
         If Jobready[i]=0 then 
         Omega[i]:=O[i,1] 
         Else 
         Omega[i]:=0; 
     TL[1]:=0; 
     TL[2]:=0; 
end; 
Procedure Ome; 
var 
   i,j,k,l,m,n,pred,sisapred:integer; 
   label 1,2; 
Begin 
     For j:=3 to no+2 do 
         If TL[j]=0 then 
            begin 
            k:=j; 
            goto 1 
            end; 
1: 
     For l:=1 to jmljob do 
     begin 
         If Omega[l]=TL[k‐1] then 
            For i:=1 to jmljob do 
                For j:=1 to jmlop do 
                    If O[i,j]=Omega[l] then 
                       If jjavai[i,jmlop+1] then 
                                             begin 
                                                javai[m,1]:=javas; 
                                                javas:=javai[m,1]; 
                                             end 
                                             else 
                                             begin 
                                                 javai[m,1]:=javai[i,jmlop+1]; 
                                                 javas:=javai[m,1]; 
                                             end; 
                                             javas:=0; 
                                        end 
                                        else 
                                        begin 
                                             If javas>javai[i,jmlop+1] then 
                                             begin 
                                                javai[m,1]:=javas; 
                                                javas:=javai[m,1]; 
                                             end 
                                             else 
                                             begin 
                                                 javai[m,1]:=javai[i,jmlop+1]; 
                                                 javas:=javai[m,1]; 
                                             end; 
                                        end; 
                                   end; 
                               end; 
                            If UnitOven[l]>0 then 
                               RTO[i]:=javai[l,jmlop+1] 
                            Else 
                                RTO[i]:=0; 
                       end; 
2: 
     end; 
end; 
Procedure PheromoneAlpha; 
var 
   i,j,k,l:integer; 
Begin 
     k:=TL[t+1]; 
     For i:=1 to jmljob do 
         Begin 
              If Omega[i]>0 then 
              begin 
                   l:=Omega[i]; 
                   taualpha[i]:=exp(alpha*ln(tau[k,l])); 
              end; 
         end; 
End; 
Procedure OperationTimeBeta; 
var 
   i,j,k,l:integer; 
Begin 
     For i:=1 to jmljob do 
         For j:=1 to jmlop do 
             If Omega[i]=O[i,j] then 
                If OT[i,j]0 then 
                   OTBeta[i]:=exp(beta*ln(OT[i,j])) 
                Else 

                    OTBeta[i]:=0; 
End; 
 
Procedure Probabilitas; 
var 
   BR,Selisihmin:real; 
   alphabeta,prob,selisih:array [1..30] of real; 
   denominator:double; 
   i,j,k,l,h,counter,nomesin:integer; 
Begin 
     denominator:=0; 
     For i:=1 to jmljob do 
     Begin 
          alphabeta[i]:=taualpha[i]*OTBeta[i]; 
          denominator:=denominator+alphabeta[i]; 
     End; 
     For i:=1 to jmljob do 
         prob[i]:=alphabeta[i]/denominator; 
     BR:=random; 
     Selisihmin:=1; 
 
 writeln('BR=',BR); 
     For i:=1 to jmljob do 
     Begin 
          If Omega[i]=0 then 
             selisih[i]:=2 
          else 
              selisih[i]:= Abs(BR‐prob[i]); 
          If selisih[i]javai[i,j] then 
                     begin 
                          
mavai[nomesin]:=mavai[nomesin]+OT[i,j]; 
                          javai[i,j+1]:=mavai[nomesin]; 
                     end 
                     Else 
                     begin 
                          mavai[nomesin]:=javai[i,j]+OT[i,j]; 
                          javai[i,j+1]:=mavai[nomesin]; 
                     end;     
                end;  
end; 
Procedure Makes; 
var 
   a,nomesin,i,j,p,r,jmlunitoven:integer; 
   
makespan,makespan2,mavaioven,mavaiblow,mavaibu
but,RTOmin,TWBubut:real; 
   Rank,S:array [1..30] of byte; 
label 3;    
Begin 
     For i:=1 to jmljob do 
         S[i]:=0; 
     a:=1; 

     r:=1; 
     While a0) and (RTO[i]0 then 
        begin 
          jmlunitoven:=jmlunitoven+UnitOven[j]; 
          TWBubut:=TWBubut+TBubut[j]; 
          If (jmlunitoven>=18) and (jmlunitovenRTO[j] then 
               begin 
                  mavaioven:=mavaioven+TOven; 
                  mavaiblow:=mavaioven+TBlow; 
                  If mavaiblow>mavaibubut then 
                     mavaibubut:=mavaiblow+TWBubut 
                  else 
                      mavaibubut:=mavaibubut+TWBubut; 
               end 
               else 
               begin 
                   mavaioven:=RTO[j]+TOven; 
                   mavaiblow:=mavaioven+TBlow; 
                   If mavaiblow>mavaibubut then 
                     mavaibubut:=mavaiblow+TWBubut 
                   else 
                      mavaibubut:=mavaibubut+TWBubut; 
               end; 
               jmlunitoven:=0; 
               TWBubut:=0; 
          end 
          Else 
          begin 
               If jmlunitoven RTO[Rank[i‐1]] then 
                    begin 
                       mavaioven:=mavaioven+TOven; 
                       mavaiblow:=mavaioven+TBlow; 
                       If mavaiblow>mavaibubut then 
                          mavaibubut:=mavaiblow+TWBubut 
                       else 
                           mavaibubut:=mavaibubut+TWBubut; 

                    end 
                    else 
                    begin 
                        mavaioven:=RTO[Rank[i‐1]]+TOven; 
                        mavaiblow:=mavaioven+TBlow; 
                        If mavaiblow>mavaibubut then 
                           mavaibubut:=mavaiblow+TWBubut 
                        else 
                            mavaibubut:=mavaibubut+TWBubut; 
                    end; 
                    jmlunitoven:=UnitOven[j]; 
                    TWBubut:=TBubut[j]; 
               end; 
          end; 
          3: 
          If (jmlunitoven>0) and (jmlunitovenRTO[j] then 
             begin 
                mavaioven:=mavaioven+TOven; 
                mavaiblow:=mavaioven+TBlow; 
                If mavaiblow>mavaibubut then 
                   mavaibubut:=mavaiblow+TWBubut 
                else 
                    mavaibubut:=mavaibubut+TWBubut; 
             end 
             else 
             begin 
                 mavaioven:=RTO[j]+TOven; 
                 mavaiblow:=mavaioven+TBlow; 
                 If mavaiblow>mavaibubut then 
                    mavaibubut:=mavaiblow+TWBubut 
                 else 
                     mavaibubut:=mavaibubut+TWBubut; 
             end; 
          end; 
        end; 
     end; 
     Makespan:=0; 
     Makespan2:=mavaibubut; 
     For nomesin:=1 to jmlmsn do 
         If mavai[nomesin]>makespan then 
            makespan:=mavai[nomesin]; 
     If makespan20 then 
     Write('Ov',Rank[i],'‐'); 
     Writeln('Bestmakespan= ',Bestmakespan:3:2); 
     Writeln('Generasi ke‐',Generasi); 
     Writeln('Semut ke‐',Semut); 
end; 
Procedure Pheromone; 
var 

   deltau,bestmakespan2:real; 
   k,l,n,p:integer; 
Begin 
     bestmakespan2:=bestmakespan; 
     deltau:=1/Bestmakespan; 
     For p:=2 to no+1 do 
     begin 
          k:=Rute[p‐1]; 
          l:=Rute[p]; 
          tau[k,l]:=((1‐rho)*tau[k,l])+(rho*deltau); 
          For n:=1 to no do 
          begin 
               If n=k then 
               tau[k,n]:=0 
               else 
               If nl then 
               tau[k,n]:=(1‐rho)*tau[k,n]; 
          end; 
     end; 
     bestmakespan:=bestmakespan2; 
end; 
{Main Module} 
BEGIN   
  Input; 
  Nc:=1; 
  While Nc