KONTROL CERDAS 2
Oleh :
AgusApriantoro
1110121003
DosenPengampu :
Dr.Eng. Alrijadjis, Dipl. Eng, MT
P(s)=
1
II. PENYELESAIAN
Flowchart penyelesaian masalah secara umum adalah sebagai berikut :
MULAI
MEBANGKITKAN
N POLULASI BERISI 3
NILAI SECARA ACAK
Kp, Ki, Kd
i=1
SELEKSI PARAMETER KP KI KD
DENGAN FLOWCHART PID
ELITISME
MENYIMPAN Kp, Ki, Kd TERBAIK DARI
POPULASI AWAL
SELEKSI INDUK
DENGAN ROULETTE WHEEL
CROSS OVER
DENGAN EXTENDED INTERMEDIATE
CROSSOVER
MUTASI
DENGAN RANDOM MUTATION
Kp,Ki,Kd
terbaik
SELESAI
2
Sedangkan Flowchart penyelesaian tunning PID adalah sebagai berikut :
MULAI
MEBANGKITKAN
N POLULASI BERISI 3
NILAI SECARA ACAK
Kp, Ki, Kd
i=1
Kp,Ki,Kd
terbaik
SELESAI
3
1. PID
a. Melihat respon Plant
Script progam untuk menguji setiap nilai Kp, Ki, dan Kd sebagai berikut
for i=1:jumlahIndividu
s=tf('s');
Plant=1/(s^2+2*s+3); %persamaan Plant
Controller=Kp(i,1)+Ki(i,1)/s+Kd(i,1)*s; % Persamaan
controller 1 dalam domain waktu
sysCloseLoop=feedback(Controller*Plant,1); %1 adalah komponen
di feedback
Sumber :
http://www.bragitoff.com/wp-content/uploads/2015/08/TrapezoidRule1.png
%dengan metode trapezoidal
%mulai dari iterasi kedua , luas iterasi pertama dihitung pada
iterasi
%kedua
setpoint=1;
errorTotal(i,1)=0;
for j=2 : length(y)
error=((setpoint-y(j,1))+(setpoint-y(j-1,1)))/2;
dt=t(j,1)-t(j-1,1);
errorTotal(i,1)=errorTotal(i,1)+abs(error*dt);
%errorTotal=abs(error*dt);
end
Fitness(ii,1)=1/(1+errorTotal(ii,1));
%Fitness(ii,1) =
EvaluasiIndividu(Populasi(ii,1),Populasi(ii,2),BilKecil);
if (Fitness(ii,1) > MaxFitness)
MaxFitness = Fitness(ii,1);
IndeksIndividuTerbaik = ii;
4
BestKp = Populasi(ii,1);
BestKi = Populasi(ii,2);
BestKd = Populasi(ii,3);
end
if (Fitness(ii,1) < MinFitness)
MinFitness = Fitness(ii,1);
indexBest
KpBest
KiBest
KdBest
Controller=KpBest+KiBest/s+KdBest*s; % Persamaan controller 1
dalam domain waktu
sysCloseLoop=feedback(Controller*Plant,1) %1 adalah komponen
di feedback
%figure(1)
step(sysCloseLoop)
stepinfo(sysCloseLoop)
2. ALGORTIMA GENETIKA
Algoritma genetika yang digunakan menggunakan representasi nilai pecahan bukan
binary atau bisa disebut dengan RCGA. Dalam 1 kromosom terdapat 3 nilai yang
mewakili konstanta Kp,Ki, dan Kd, sebagai contoh gambar dibawah ini.
a. Pembangkitan populasi
Script progam untuk membangkitkan n individu untuk Kp, Ki, dan Kd
Populasi
=InisialisasiPopulasi(UkPop,JumGen,RangeBatasBawah,RangeBatasAtas)
5
function Populasi =
InisialisasiPopulasi(UkPop,JumGen,batasBawah,batasAtas)
Populasi=batasBawah+((batasAtas-batasBawah)*rand(UkPop,JumGen));
6
c. Seleksi dengan Roulette Wheel
Seleksi ini digunakan untuk memilih induk yang akan dilakukan crossover,
menggunakan roullete wheel dengan prinsip fitness terbaik akan mempunyai nilai
probabiltas terpilih lebih besar dibandingkan fitness yang lain.
7
[2]
a dipilih secara acak pada interval tertentu.
Script progam sebagai berikut:
%-------------------------------------------
% Roulette-wheel selection dan pindah silang
%-------------------------------------------
for jj=IterasiMulai:2:UkPop,
Induk1 = RouletteWheel(UkPop,Fitness);
Induk2 = RouletteWheel(UkPop,Fitness);
if (rand < Psilang),
%----------------------------------
%Cross Over
%---------------------------------
aBatasAtas=2.0;
aBatasBawah=-2.0;
a=aBatasBawah+((aBatasAtas-aBatasBawah)*rand(1,3));
Anak(1,1)=Populasi(Induk1,1)+a(1,1)*(Populasi(Induk2,1)-
Populasi(Induk1,1));
Anak(1,2)=Populasi(Induk1,2)+a(1,2)*(Populasi(Induk2,2)-
Populasi(Induk1,2));
Anak(1,3)=Populasi(Induk1,3)+a(1,3)*(Populasi(Induk2,3)-
Populasi(Induk1,3));
Anak(2,1)=Populasi(Induk2,1)+a(1,1)*(Populasi(Induk1,1)-
Populasi(Induk2,1));
Anak(2,2)=Populasi(Induk2,2)+a(1,2)*(Populasi(Induk1,2)-
Populasi(Induk2,2));
Anak(2,2)=Populasi(Induk2,3)+a(1,3)*(Populasi(Induk1,3)-
Populasi(Induk2,3));
TempPopulasi(jj,:) = Anak(1,:);
TempPopulasi(jj+1,:) = Anak(2,:);
else
TempPopulasi(jj,:) = Populasi(Induk1,:);
TempPopulasi(jj+1,:) = Populasi(Induk2,:);
end
8
[3]
range r misalkan [-0,1, 0,1]
9
III. PENGUJIAN
Respon plant open Loop tanpa Kontrol PID
Generasi=5, Populasi 10
10
Generasi=5, Populasi 20
Generasi=10, Populasi 10
11
Generasi=10, Populasi 20
Generasi=20,Populasi=20
12
Tabel pengujian
IV. ANALISA
Dari hasil pengujian yang dilakukan didapatkan hasil seperti pada tabel pengujian, pengujian
dilakukan dengan merubah parameter populasi awal dan jumlah generasi, untuk parameter lain
tetap. Dari hasil yang didapatkan dengan populasi yang sama Rise Time meningkat dengan
merubah jumlah populasi semakin besar. Namun perubahan akan semakin signifikan dengan
merubah jumlah generasi, dapat diamati pada data generasi=5 populasi=10 dan generasi=10
populasi=10, rise time semakin cepat dan overshoot menurun.Dapat diamati pula respon tanpa
kontrol berosilasi, sedangkan sengan pengendali PID respon lebih baik, osilasi berhasil
dihilangkan.
V. KESIMPULAN
1. Dengan Algoritma genetika membantu dalam melakukan tunning menjadi lebih cepat.
2. Dengan Algoritma genetika dengan jumlah populasi yang banyak memerlukan waktu
komputasi yang lama, akan tetapi hasil yang dihasilkan semakin baik.
3. Dengan Algoritma genetika dengan jumlah generasi yang banyak memerlukan waktu
komputasi yang lama, akan tetapi hasil yang dihasilkan semakin baik.
4. Penentuan parameter Probabilitas CrossOver, mutasi dan beberapa parameter lain terkait
random mutation dan extended intermediette crossover belum dilakukan pengamatan.
13