Disusun oleh:
41419120190
FAKULTAS TEKNIK
2020
PENDAHULUAN
Pandemi Corona Virus (Covid-19) membawa dampak yang sangat luas bagi kehidupan
seluruh masyarakat dunia. Virus ini dapat menyerang system pernafasan manusia yang mana
juga dapat menyebabkan kematian atau menyebabkan luka permanen pada individu yang sudah
terinfeksi dan sembuh. Tak dapat dipungkiri penyebaran dari virus Covid-19 sangatlah pesat,
keberadaaannya ini pun telah banyak menyita perhatian dunia tak tekecuali Indonesia.
Beberapa Langkah telah dilakukan oleh Indonesia untuk menekan penyebaran virus
Covid-19 ini, salah satunya ialah penerapan Social Distancing yang mana kemudian
berdampak pada jumlah personel yang dapat hadir pada suatu kantor. Penerapan Social
Distancing sangatlah berdampak pada berbagai aspek kehidupan, salah satunya ialah regu
Dikarenakan Penerapan Social Distancing maka personel tidak dapat hadir bersamaan
pada suatu waktu, akhirnya berdampak pada pelaksanaan pemeliharaan kelistrikan. Hal ini
yang kemudian menjadi dilemma, tanpa pemeliharaan peralatan lebih beresiko mengalami
kerusakan sedangkan Ketika dilakukan pemeliharaan dengan kondisi full tim ditengah
Maka dari itu regu pemeliharaan pun dibagi menjadi dua tim yang mana akan saling
menutupi satu sama lain Ketika salah satu tim ada yang terkena Covid-19. Namun kemudian
pemeliharaan. Maka item pemeliharaan ataupun pengujian menjadi tidak dapat dilakukan
sepenuhnya. Maka dari itu diperlukan optimasi dalam pengerjaannya yang mana dengan
personil yang ada dapat melakukan pemeliharaan dengan mengerjakan terlebih dahulu
profit dari item didalam knapsack (karung) tanpa melebihi kapasitasnya. Knapsack problem
dapat diilustrasikan sebagai berikut. Diberikan beberapa barang yang masing-masing memiliki
berat (weight) dan keuntungan (profit), dengan ketentuan barang yang dimasukkan kedalam
Knapsack memiliki total berat barang yang jika dimasukkan tidak boleh melebihi kapasitas
Pada knapsack problem yang menjadi inikator penuhnya karung ialah berat karung
sedangkan pada optimasi yang saya buat adalah waktu, kemudian parameter beratnya
merupakan waktu pengerjaan sebuah item pemeliharaaan dan profit nya merupakan sebuah
nilai keharusan dilakukannya sebuah item pemeliharaan. Sehingga sebuah system optimasi
yang diharapkan ialah bagaimana mendapatkan sebuah list item pemeliharaan apa saja yang
harus dilakkukan terlebih dahulu dalam suatu waktu tertentu, yang mana dapat melakukan hal-
hal yang dianggap harus dilakukan dengan keterbatasan waktu dan personel yang ada pada
Ada banyak cara dalam menyelesaikan knapsack problem, salah satunya menggunakan
Genetic Algorrithm. Genetic Algorithm adalah sebuah teknik searching untuk mencari solusi
dari suatu permasalahan optimasi. Teknik ini diinspirasi dari biologi evolutionary termasuk
masalah inheritance, mutation, selection, and crossover. Metode ini melakukan proses
individu yang baru yang terbentuk mempunyai nilai fitness yang lebih rendah dari
orang tuanya, individu yang baru tidak dimasukkan di dalam populasi baru, dan dapat
6. Apabila banyaknya jumlah pembentukan populasi telah mencapai angka tertentu, atau
level fitness yang memuaskan sudah dicapai, maka proses dihentikan. Apabila belum,
populasi baru kemudian digunakan untuk melakukan proses yang sama mulai dari
tahap nomor 2.
memerlukan pendefinisian representasi genetic dari domain solusi, dan fungsi fitness untuk
Proses GA dimulai dengan menentukan populasi awal initial population yang terdiri
dari beberapa kromosom yang disusun oleh beberpa gen yang merupakan representasi dari
kandidat-kandidat solusi dari suatu masalah. Kandidat-kandidat terbaik akan dipilih melalui
proses selection, berdasarkan fitness value yang telah dihitung untuk setiap kromosom dalam
populasi. Kandidat – kandidat terpilih dari proses ini adalah individu-individu yang akan
mengisi mating pool yaiu suatu set dimana dua parents akan dibentuk dari sini. Dalam
Evolutionary Algorithm prinsip bertahan muncul karena adanya proses reproduksi. Turunan
offspring yang dihasilkan akan membawa sifat gen orangtuanya (parents), oleh sebab itu
parents dipilih dari mating pool yang merupakan kumpulan kandidat-kandidat terbaik dari
suatu populasi. Dengan demikian turunan yang dihasilkan adalah turunan yang memiliki sifat
pada sebuah populasi yang terdiri dari beberapa solusi optimasi. Setiap solisi disebut sebuah
membentuk setiap individual. Setiap chromosome terdiri dari beberapa gen, yang mana setiap
gen merepresentasikan nilai 0 atau 1. Selain itu setiap individual juga memiliki nilai fitness,
nilai inilah yang digunakan untuk menentukan kualitas dari setiap individu.
“Akan dilakukan sebuah pemeliharaan bay transformator daya pada hari selasa tanggal 2 juni
2020, namun dengan kondisi personel dan waktu yang terbatas. Personel pemeliharaan yang
dapat hadir berjumlah 5 orang sedangkan waktu yang diberikan sebanyak 8 jam. Dengan
jumlah personil yang ada berikut daftar pekerjaan yang dapat dilakukan, waktu pengerjaannya
Pekerjaan apa sajakah yang datap dilakukan dalam jangka waktu yang diberikan yang
memberikan sebuah hasil yang paling baik dilihat dari value yang didapatkan.”
Langkah kedua menentukan populasi. Populasi ini terbentuk dari berbagai bentuk
solusi. Pada problem kali ini chromosome terdiri dari sejumlah gen yang jumlahnya sama
dengan total item pekerjaan pada list. Setiap gen berhubungan dengan index item pada list.
Setiap gen memiliki nilai 1 atau 0 untuk menunjukan bahwa item tersebut dikerjakan atau tidak
Solusi 0 1 0 1 1
Dari contoh solusi diatas dapat dilihat bahwa yang harus dilakukan adalah item
pekerjaan 2,4 dan 5 yang mana Pengujian Transformator, Pengujian Fungsi dan Pengujian
minyak isolasi.
𝐶 𝑉 ; 𝑖𝑓 𝐶 𝑉 ≤ 𝑏𝑤
Dimana:
n = Panjang Chromosome
Ci = ith Gen
Vi = ith Value
Wi = ith Waktu
bw = Batas Waktu
Langkah ketiga menentukan individual yang dapat melakukan operasi crossover dan
mutation. Pada program kali ini dilakukan dengan metode acak (random), yang mana setiap
individu memliki kesempatan untuk dapat melewati fungi ini sesuai dengan value yang
dimilikinya.
Crossover dilakukan dengan cara penyilangan antar dua solusi yang mana kedua
solusi akan saling menukarkan gennya. Dengan jumlah gen yang ditukarkan dipilih secara
acak berdasarkan Panjang dari chromosome itu sendiri. Sedangkan mutation dilakukan
dengan cara mengubah salah satu gen dari suatu individual secara acak.
Kedua operasi crossover dan mutation ini dilakukan dengan probabilitas yang mana
artinya kedua operator tersebut tidak dilakukan secara terus menerus terhadap setiap
probabilitas crossover di buat lebih tinggi agar semakin banyak variasi solusi yang
terbentuk juga agar meningkatkan kualitas solusi dari suatu populasi (Peningkatan rata-rata
fitness value). Sedangkan mutation de buat kecil agar tidak terjadi keberagaman yang
sangat banyak sehingga mengakibatkan tidak didapatkannya solusi yang paling baik,
namun mutation juga merupakan hal yang sangat penting agar tidak terjebak dalam solusi
Penentuan Pobabilitas kedua operasi tersebut akan sangat berpengaruh dalam waktu
penyelesaian sebuag Genetic Algorthm. Selain kedua hal diatas banyaknya populasi juga
berpengaruh dalam waktu penyelesaian optimasi. Oleh karena itu nilai probabilitas dan
juga jumlah populasi sangatlah tergantung dari problem/permasalahan apa yang ingin
Google Colab. Adapun script yang digunakan merupakan hasil modifikasi dari script
Algorithm. Simulasi yang dilakukan tidak menggunakan parameter yang sebenarnya dan
1. List Item
2. Jumlah populasi = 8
3. Jumlah generasi = 50
Inisialisasi
import numpy as np
import pandas as pd
import random as rd
from random import randint
import matplotlib.pyplot as plt
item_number = np.arange(1,6)
time = [2, 4, 6, 1, 1]
value = [8, 10, 4, 7, 8]
time_threshold = 8 #Maximum time
print('The list is as follows:')
print('Item No. Time Value')
for i in range(item_number.shape[0]):
print('{0} {1} {2}\n'.format(item_number[i], time[i], value[i]))
2 4 10
3 6 4
4 1 7
5 1 8
solutions_per_pop = 8
pop_size = (solutions_per_pop, item_number.shape[0])
print('Population size = {}'.format(pop_size))
initial_population = np.random.randint(2, size = pop_size)
initial_population = initial_population.astype(int)
num_generations = 50
print('Initial population: \n{}'.format(initial_population))
Fungsi Fitness
Fungsi Selection
https://colab.research.google.com/drive/1sq_BI6qyZoC_WoUU2QudUHXR9JxsLZwj#scrollTo=3ECwi_-uPzYk&printMode=true 1/4
6/2/2020 GA.ipynb - Colaboratory
Fungsi Crossover
Fungsi Mutation
def mutation(offsprings):
mutants = np.empty((offsprings.shape))
mutation_rate = 0.4
for i in range(mutants.shape[0]):
random_value = rd.random()
mutants[i,:] = offsprings[i,:]
if random_value > mutation_rate:
continue
int_random_value = randint(0,offsprings.shape[1]-1)
if mutants[i,int_random_value] == 0 :
mutants[i,int_random_value] = 1
else :
mutants[i,int_random_value] = 0
return mutants
Fungsi Optimasi
Last generation:
[[1 1 0 1 1]
[1 1 0 1 1]
[1 1 0 1 1]
[1 1 0 1 1]
[1 1 0 1 1]
[1 1 0 0 1]
[1 1 0 1 1]
[1 1 0 1 1]]
(50, 8)
https://colab.research.google.com/drive/1sq_BI6qyZoC_WoUU2QudUHXR9JxsLZwj#scrollTo=3ECwi_-uPzYk&printMode=true 3/4
6/2/2020 GA.ipynb - Colaboratory
https://colab.research.google.com/drive/1sq_BI6qyZoC_WoUU2QudUHXR9JxsLZwj#scrollTo=3ECwi_-uPzYk&printMode=true 4/4
Kesimpulan dan Saran
A. Kesimpulan
didapatkan adalah 33, sedangkan item yang dilakukan yaitu item 1,2,4 dan 5.
B. Saran
1. Membuat suatu program yang memiliki user interface sehingga optimasi dapat
dilakukan dengan parameter yang berubah-ubah dan dapat dilakukan oleh siapa
saja.
Satvik Tiwari. (2019, 28 April). Genetic Algorithm: Part 3 — Knapsack Problem. Diakses pada
1 Juni 2020, dari https://medium.com/koderunners/genetic-algorithm-part-3-knapsack-
problem-b59035ddd1d6
Binus. (2018, 8 Desember). Genetic Algorithm. Diakses pada 1 Juni 2020, dari
https://socs.binus.ac.id/2018/12/08/genetic-algorithm/
Yudi Agusta. (2010, 03 Maret). Genetic Algorithm. Diakses pada 1 Juni 2020, dari
https://yudiagusta.wordpress.com/2010/03/19/genetic-algorithm/