Anda di halaman 1dari 14

TUGAS UAS

KONTROL CERDAS 2

TUNNING PID DENGAN MENGGUNAKAN ALGORITMA GENETIKA


MENGGUNAKAN SOFTWARE MATLAB R2015b

Oleh :
AgusApriantoro
1110121003

DosenPengampu :
Dr.Eng. Alrijadjis, Dipl. Eng, MT

PROGRAM STUDI DIPLOMA 4


TEKNIK ELEKTRONIKA
DEPARTEMEN TEKNIK ELEKTRO
POLITEKNIK ELEKTRONIKA NEGERI SURABAYA
SURABAYA
2015
I. PERSOALAN
1. Bagaimana menggunakan Algoritma Genetika untuk tunning PID.
2. Mencari
encari nilai optimum untuk konstanta Kp, Ki, Kd dari nilai yang disebar dengan
range nilai tertentu untuk mendapatkan kontroller PID yang baik.
3. Membandingkan
mbandingkan nilai optimum dari beberapa variasi perubahan parameter
· Jumlah populasi
· Jumlah Generasi

Pengaturan nilai yang digunakan


· Penyebaran nilai yang disebar untuk konstanta Kp,Ki,Kd antara 0 hingga 10
· Persamaan Transfer Fungsi dari plant yang digunakan

P(s)=

· Blok simulink Plant dengan controller PID tanpa algoritma genetika

· Menggunakan input Step dengan final value = 1, step time = 0s


· Probabilitas
babilitas Cross Over = 0.8
· Probabilitas Mutasi = 0.05
· Range penyebaran nilai populasi awal = 0 sampai 10, bilangan pecahan
· Range nilai parameter a pada Extented Intermediate Crossover= -2 sampai 2,
bilangan pecahan
han
· Range nilai parameter x pada Random mutation= -0.25 sampai 0.25, bilangan
pecahan

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

MENGGANTI POPULASI LAMA


DENGAN POPULASI BARU HASIL
OPERATOR ALGORITMA GENETIKA

i++ i=N GENERASI

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

MELIHAT RESPON DENGAN


PARAMETER PID
Kp[i],Ki[i],Kd[i]

MENGHITUNG NILAI ERROR


RESPON DENGAN
METODE TRAPEZOIDAL

MENCARI ERROR MINIMUM


DENGAN
PERSAMAAN
Fitness=1/(1+e)

i++ i=N Populasi

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

b. Menghitung nilai error respon plant terhadap nilai Set Point


Script progam untuk mendapatkan error menggunakan metode trapezoidal
sehingga script progam sebagai berikut.

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

c. Mengevaluasi nilai error


Script progam untuk evaluasi fitness menggunakan persamaan
Fitness = [1]

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);

d. Menggambar respon dalam grafik


Setelah mendapatkan nilai fitness optimum (minimum) maka dilakukan ploting
dengan script progam sebagai berikut :

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)

Script fungsi dari InisialisasiPopulasi sebagai berikut

5
function Populasi =
InisialisasiPopulasi(UkPop,JumGen,batasBawah,batasAtas)
Populasi=batasBawah+((batasAtas-batasBawah)*rand(UkPop,JumGen));

b. Seleksi kromosom terbaik dari populasi awal dan Elistisme


Seleksi ini digunakan untuk mendapatkan induk terbaik dari populasi awal yang
nantinya akan masuk pada generasi selanjutnya. Digunakan metode max dan min,
tergantung konteks penyelesaian. Pada kasus tuning PID karena diharapkan error
minimal maka menggunakan dan fitness evaluasi yang digunakan adalah
Fitness = , maka menggunakan max, error terkecil akan menghasilkan nilai
fitness yang besar, penggunaan metode max dan min juga terkait pada perhitungan
probabilitas pada metode Roulette Wheel.
Script progam yang digunakan:
for ii=2:UkPop
errorTotal(ii,1)=PID(Populasi(ii,1),Populasi(ii,2),Populasi(ii,3))
;
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;
BestKp = Populasi(ii,1);
BestKi = Populasi(ii,2);
BestKd = Populasi(ii,3);
end
if (Fitness(ii,1) < MinFitness)
MinFitness = Fitness(ii,1);
end
end
if mod(UkPop,2)==0, % ukuran populasi genap
IterasiMulai = 3;
TempPopulasi(1,:)
=Populasi(IndeksIndividuTerbaik,:); %Baris 1 Kolom sampai
selesai
TempPopulasi(2,:) = Populasi(IndeksIndividuTerbaik,:);
else % ukuran populasi ganjil
IterasiMulai = 2;
TempPopulasi(1,:) = Populasi(IndeksIndividuTerbaik,:);
end

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.

Sumber Roulette Wheel :


entin.lecturer.pens.ac.id/Kecerdasan Buatan/Buku/Bab 7 Algoritma Genetika.pdf

Script progam yang digunakan:

function Pindex = RouletteWheel(Pop,Fitness);


JumFitness = sum(Fitness); %Total semua
fitness
KumulatifFitness = 0;
RN = rand;
ii = 1;
while ii <= Pop
KumulatifFitness = KumulatifFitness +
Fitness(ii,1); %Distribusi Kumulatif
if (KumulatifFitness/JumFitness) > RN
Pindex = ii;
break;
end
ii = ii + 1;
end

d. Crossover dengan Extented Intermediate Crossover


Metode yang digunakan ialah Extented Intermediate Crossover dengan penjelasan
sebagai berikut Crossover dilakukan dengan memilih dua induk (parent)
secara acak dari populasi. Extended intermediate crossover (Muhlenbein &
Schlierkamp-Voosen 1993) yang menghasilkan offspring dari kombinasi nilai
dua induk. Misalkan P1dan P2 adalah dua kromosom yang telah diseleksi untuk
melakukan crossover, maka offspring C1 dan C2 bisa dibangkitkan sebagai
berikut:

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

e. Mutasi dengan Random Mutation


dilakukan dengan memilih satu induk secara acak dari populasi. Metode mutasi
yang digunakan adalah random mutation yang dilakukan dengan menambah
atau mengurangi nilai gen terpilih dengan bilangan random yang kecil.
Misalkan variabel x j adalah [minj,maxj] dan offspring yang dihasilkan adalah
C=[x’1..x’n], maka nilai gen offspring bisa dibangkitkan sebagai berikut:

8
[3]
range r misalkan [-0,1, 0,1]

Sumber Extented Intermediate Crossover, Random Mutation :


Mahmudy, WF 2013, Algoritma Evolusi, Program Teknologi Informasi dan Ilmu
Komputer, Universitas Brawijaya, Malang.
Script progam sebagai berikut:
%----------------------------------
%Mutasi
%---------------------------------
for jj=IterasiMulai:2:UkPop
if (rand < Pmutasi)
xBatasAtas=0.25;
xBatasBawah=-0.25;
x=-0.1+((xBatasAtas-xBatasBawah)*rand(1,1));
TempPopulasi(jj,1)=TempPopulasi(jj,1)-x;
TempPopulasi(jj,2)=TempPopulasi(jj,2)-x;
TempPopulasi(jj+1,1)=TempPopulasi(jj,1)-x;
TempPopulasi(jj+1,2)=TempPopulasi(jj,2)-x;
end
end
Generasike=generasi
Populasi = TempPopulasi;

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

Generasi/ 5/10 5/20 10/10 10/20 20/20 Tanpa


Populasi PID
Kp 4.1625 6.4288 9.0022 16.323 10.744
Ki 23.401 17.51 8.6726 36.7 48.032
Kd 30.8 5.23 7.13 14.24 217.42
Rise Time (s) 0.079 0.374 0.312 0.150 0.0102 0.75
Overshoot 0 2.1465 0.443 0 0 38.69

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

Anda mungkin juga menyukai