• Tidak ada hasil yang ditemukan

ALGORITMA EVOLUSI DENGAN PYTHON

N/A
N/A
Protected

Academic year: 2023

Membagikan "ALGORITMA EVOLUSI DENGAN PYTHON"

Copied!
162
0
0

Teks penuh

(1)
(2)

ALGORITMA EVOLUSI DENGAN PYTHON

(Integrasi algoritma evolusi pada pembuatan aplikasi timetable perkuliahan berbasis web dengan Django)

Penulis:

Yusri Ikhwani, S.Kom., M.Kom As’ary Ramadhan, S.Kom.,M.Cs.

Editor:

Antoni Pardede, S.Si.,M.Si.,Ph.D.

Tata Letak:

Aris Setia Noor, S.E., M.Si Desain sampul:

M.Fikri Ansari, S.Kom Penerbit:

Universitas Islam Kalimantan Muhammad Arsyad Al Banjari, Banjarmasin

Redaksi:

Jl. Adhyaksa No2, Kayutangi, Banjarmasin 70123 Cetakan Pertama 2023

ISBN : 978-623-7583-95-0

Hak Cipta dilingdungi undang-undang

Dilarang memperbanyak karya tulis ini dalam bentuk dan dengan cara apapun tanpa izin tertulis dari Penerbit.

Isi diluar tanggung jawab penerbit.

(3)

ALGORITMA EVOLUSI DENGAN PYTHON (Integrasi algoritma evolusi pada pembuatan aplikasi

timetable perkuliahan berbasis web dengan Django) iii

KATA PENGANTAR

Buku ini membahas mengenai Algoritma Evolusi Dengan Python (Integrasi algoritma evolusi pada pembuatan aplikasi timetable perkuliahan berbasis web dengan Django).

Buku ini diharapkan dapat menambah khasanah ilmu pengetahuan dan menjadi bahan bacaan bagi mahasiswa dan masyarakat yang ingin mendalami ilmu tentang Algoritma Evolusi Dengan Python (Integrasi algoritma evolusi pada pembuatan aplikasi timetable perkuliahan berbasis web dengan Django)..

Pada kesempatan ini penulis mengucapkan terima kasih yang etinggi tingginya kepada semua pihak yang mendukung selesainya buku ini.

Kritik dan saran kami harapkan dari pembaca untuk kesempurnaan penulisan buku ini.

Banjarmasin, Januari 2023

Penulis

(4)

DAFTAR ISI

KATA PENGANTAR ... iii

DAFTAR ISI ... iv

PENDAHULUAN ... 1

BAB 1 Algoritma evolusi ... 3

1.1 Ikhtisar ... 3

1.2 Karekteristik permasalahan optimasi ... 6

1.3 Mengapa Algoritma Evolusi (EAs) ... 7

1.4 Skema Dasar Algoritma Evolusi ... 8

1.5 Rangkuman ... 12

1.6 Latihan ... 13

BAB 2 Edukasional Timetable... 15

2.1 Metode Pewarnaan Graph ... 19

2.1.1 Pewarnaan graph untuk timetabling perkuliahan ... 21

2.1.2 Pewarnaan graph untuk timetabling ujian ... 23

2.2 Rangkuman ... 26

2.3 Latihan ... 27

BAB 3 Anaconda - Python ... 28

3.1 Distribusi Anaconda untuk Python ... 28

3.1.1 Install Anaconda... 28

(5)

ALGORITMA EVOLUSI DENGAN PYTHON (Integrasi algoritma evolusi pada pembuatan aplikasi

timetable perkuliahan berbasis web dengan Django) v

3.1.2 Menggunakan Environment Anaconda ... 31

3.2 Rangkuman ... 33

3.3 Latihan ... 34

BAB 4 Memulai Algoritma Evolusi dengan Python ... 35

4.1 Exploring Jupyter Notebooks ... 35

4.1.1 Installing Jupyter Notebook ... 35

4.1.2 Jupyter Notebook ... 38

4.1.3 Numpy ... 39

4.1.4 Abstract Base Classes (ABC) ... 40

4.2 Algoritma Evolusi untuk Maksimisasi ... 42

4.2.1 Individual ... 43

4.2.2 Fitness Score dan Mutasi Offspring ... 44

4.2.3 Implementasi dengan Jupyter Notebook... 46

4.3 Kesimpulan... 55

4.4 Latihan ... 56

BAB 5 Pengatar Singkat Django... 57

5.1 Memulai dengan django ... 57

5.1.1 Installasi Django... 59

5.1.2 Membuat Project Baru ... 60

5.1.3 Membuat app... 62

5.1.4 Menyiapkan template halaman ... 66

(6)

5.1.5 Menggunakan django template language (DTL)………

…67

5.2 Kesimpulan... 72

5.3 Latihan ... 73

BAB 6 Pengatar Singkat SQLite... 74

6.1 Installasi ... 75

6.1.1 SQLite Dot Command ... 76

6.1.2 Perintah SQL dalam SQLite ... 81

6.2 Kesimpulan... 82

6.3 Latihan ... 83

BAB 7 Django Database (SQLite) ... 84

7.1 Inisial Set Up ... 85

7.2 Membuat Users... 92

7.3 Kesimpulan... 100

7.4 Latihan ... 101

BAB 8 Timetable Perkuliahan Otomatis ... 102

8.1 Setting up projek ... 104

8.2 Halaman Login dan Logout ... 108

8.2.1 Login Template ... 110

8.3 Halaman Ruangan ... 128

8.4 Halaman Matakuliah ... 132

(7)

ALGORITMA EVOLUSI DENGAN PYTHON (Integrasi algoritma evolusi pada pembuatan aplikasi

timetable perkuliahan berbasis web dengan Django) vii 8.5 Halaman Penjadwalan... 137 8.6 Latihan ... 145 Daftar Pustaka ... 146

(8)

PENDAHULUAN

Buku ini menyajikan pengenalan algoritma evolusi menggunakan bahasa pemrograman Python. Berfokus pada permasalahan penjadwalan serta penerapannya dengan algoritma evolusi berbasis website.

BAB 1, Menyediakan ikhtisar dari algoritma evolusi.

Anda akan diperkenalkan pada pondasi secara matematis dan bagaimana implementasinya

BAB 2, Memberikan pengenalan tentang timetable dan jenis-jenis dari timetable tersebut serta contoh penerapan metode untuk membangun sebuah timetable seperti menggunakan pewarnaan graph

BAB 3, Membahas tentang Anaconda sebagai distributor bahasa pemrograman python dan R untuk komputasi ilmiah seperti data science, machine learning, pemrosesan data dengan skala besar, analisis deskriptif dan lain sebagainya yang bertujuan untuk menyederhanakan manajemen dan penerapan paket

(9)

ALGORITMA EVOLUSI DENGAN PYTHON (Integrasi algoritma evolusi pada pembuatan aplikasi

timetable perkuliahan berbasis web dengan Django) 2 dialanjutkan dengan cara pemasangan Ancaconda serta penggunaan conda environtment.

BAB 4, Ekplorasi terhadap penggunaan jupyter notebook dan cara pemasangannya serta paket-paket yang diperlukan dalam implementasi sebuah metode atau algoritma dengan jupyter notebook. Dan juga dijelaskan tentang algoritma evolusi beserta contoh-contoh.

BAB 5, Berisikan pengantar singkat Django framework, dimulai dengan cara pemasangan serta contoh impelementasinya.

BAB 6, Membahas tentang SQLite serta perintah perintah umum yang sering digunakan.

BAB 7, Impelementasi Django framework dengan membuat sebuah aplikasi sederhana.

BAB 8, Implementasi pembuatan timetable berbasis web dengan Django framerwork.

(10)

BAB 1 Algoritma evolusi

1.1 Ikhtisar

Algoritma evolusi merupakan pendekatan berbasis heuristik untuk menyelesaikan permasalahan yang tidak mudah dapat diselesaikan dalam kopleksitas waktu (polynomial time), seperti permasalahan klasik yaitu NP- Hard problem, dan permasalahan lainnya dimana memerlukan waktu yang lama untuk diproses secara mendalam.

Dalam perosedur explorasi pada hukum alam didalam sains atau fabrikasi produk yang berguna didalam engineering, kita sering menghadapi banyak permasalahan, diantaranya adalah permasalahan optmisasi. Titik awal terbaik untuk menyelesaikan permasalahan optimisasi adalah melakukan penelusuran untuk memahami sebanyak mungkin permasalahan.

(11)

ALGORITMA EVOLUSI DENGAN PYTHON (Integrasi algoritma evolusi pada pembuatan aplikasi

timetable perkuliahan berbasis web dengan Django) 4 Pemahaman yang baik terhadap karakteristik dari suatu permasalahan memberikan dua manfaat penting.

Manfaat pertama adalah dapat mengetahui tools yang cocok digunakan untuk mengatasi permasalahan.

Manfaat yang kedua adalah dapat melakukan penilaian dengan baik pada kandidat solusi, ketika terdapat banyak solusi namun belum jelas diketahui solusi yang lebih unggul dari yang lainnya.

Untuk optimisasi, kita ingin menemukan nilai real akar terhadap fungsi polynomial 𝑓(𝑥)=𝑥3+2𝑥−1. Jika ruang perncarian diberikan batasan −2≤𝑥≤2 , seperti yang digambarkan pada plot (a) dari Gambar 1.1, bahkan dengan algoritma percarian secara random pun dapat dengan cepat menemukan perkiraan solusi terbaik, karena titik apa saja pada ruang pencarian sudah mendekati solusi kebernaran.

(12)

Gambar 1 Plot (a) Permasalahan mencari akar

Namun, dengan menambah ruang perncarian antara [- 100, 100], seperti plot (b) yang ditunjukkan pada Gambar 1.2 membuat permasalahan pencarian akar menjadi sulit karena kemungkinan dalam percarian secara acak dibutuhkan banyak evaluasi terhadap fungsi 𝑓(𝑥).

Gambar 2 Plot (b) Permasalahan mencari akar

Dengan demikian permasalahan dengan ruang pencarian besar memerlukan banyak algoritma optimasi sophicasted yang harus digunakan. Size terhadap ruang perncarian dan karekteristik lainnya menyebabkan permasalahan optimasi sulit untuk diselesaikan.

(13)

ALGORITMA EVOLUSI DENGAN PYTHON (Integrasi algoritma evolusi pada pembuatan aplikasi

timetable perkuliahan berbasis web dengan Django) 6

1.2 Karekteristik permasalahan optimasi

Karateristik pertama yaitu masalah ukuran (size).

Andaikata terdapat sebuah permasalahan optimasi dengan dua variabel diskrit, dimana tiap-tiap variabel hanya dapat diasumsikan empat nilai variabel. Ruang pencarian (search space) pada permasalahan optimasi 2- dimensional terdiri dari 42=16 dengan point yang bebeda. Jika variabel diskrit lainnya dengan kemungkinan 4 nilai berbeda ditambahkan ke sebuah permasalahan, maka search space dari 3-dimensional akan menghasilkan 43=64 point yang berbeda.

Menambahkan empat dimensi akan menghasilkan search space 44=256 points. Untuk masing-masing dimensi yang ditambahkan, jumlah point pencarian dilakikan dengan 4.

Karakteristik kedua adalah constraint satisfaction problem (CSP). Teknik CSP dapat didefinisikan dengan:

x Tiap-tiap himpunan variabel yang memiliki himpunan diskrit dan finite terhadap nilai-nilai kemungkinan.

(14)

x Himpunan constraints antara variabel-varibel tersebut.

Solusi untuk CSP adalah himpunan dari nilai variabel di assigmnets keseluruh constraints secara bersesuaian.

1.3 Mengapa Algoritma Evolusi (EAs)

Algoritma evolusi adalah teknik optimasi yang sangat cocok digunakan untuk menangani permasalahan optimasi yang sulit. EAs tidak memerlukan pengetahuan mengenai struktur permasalahan yang sedang ditangani.

EAs melihat fungsi objektif sebagai kotak hitam (black boxes), memperoleh pengetahuan tetang struktur permasalahan dengan mengusulkan kandidat solusi dan mengevaluasinya berdasarkan nilai fungsi objektif.

Informasi yang telah dikumpulkan digunakan untuk mengusulkan solusi terbaik. EAs merupukan algoritma yang meniru proses evolusi biologi. Menurut teori evolusi terdapat sejumlah individu dalam populasi. Dari generasi ke generasi, individu-individu ini berperan sebagai induk (parent) yang melakukan reproduksi menghasilkan keturunan (offspring). Individu-individu

(15)

ALGORITMA EVOLUSI DENGAN PYTHON (Integrasi algoritma evolusi pada pembuatan aplikasi

timetable perkuliahan berbasis web dengan Django) 8 ini (beserta offspring) berevolusi dan individu-individu yang lebih baik (mampu beradaptasi dengan lingkungannya) mempunyai peluang lebih besar untuk melewati seleksi alam (natural selection) dan bertahan hidup. Individu yang lebih baik juga cenderung (tidak selalu tapi mempunyai kemungkinan lebih besar) menghasilkan keturunan yang lebih baik sehingga dari generasi ke generasi akan terbentuk populasi yang lebih baik. Dari pernjelasan diatas, EAs bisa dikelompokkan dalam algoritma “generate and test” berbasis populasi yang dapat menangani fungsi objektif linear dan nonlinear.

1.4 Skema Dasar Algoritma Evolusi

Dalam istilah lebih luas, EA adalah agloritma stochastic percarian searah yang mensimulasikan sistem evolusi Darwinian, yang artinya bahwa EA menyelesaikan permsalahan optimasi dengan mensimulasikan evolusi organik secara numerik. Ide dasarnya adalah bahwa jika hanya individu-individu dari reproduksi sebuah populasi, yang memenuhi kriteria penyeleksian tertentu, dan individu-individu dari populasi lain mati, populasi akan

(16)

konvergen ke individu-individu yang memenuhi kriteria penyeleksian. Jika reproduksi belum sempurna ditambahkan, populasi dapat mulai melakukan eksplorasi ruang pencarian dan akan pindah ke individu- individu yang memiliki sebuah probabilitas seleksi yang meningkat dan yang mewarisi properti ini kepada turunannya.

Untuk menyelesaikan permasalahan optimasi dengan EAs, individu dari suatu populasi harus merepresentasikan kemungkinan solusi dari suatu masalah yang diberikan dan probabilitas penyeleksian disesuaikan secara proporsional dengan kualitas solusi yang direpresentasikan. Kualitas dari solusi yang direpresentasikan disebut dengan fitness ɸ dari individual. Kami menulis huruf kapital A, B, C untuk himpunan-himpunan individual atau populasi. Proses generasi yang sedang berlansung dan proses evolusi akan ditunjukkan dengan hurus 𝑠. Invidual tunggal dengan indek 𝑖 dari populasi A(𝑠) akan memiliki shortcut 𝑎𝑖(𝑠). Kualitas solusi direpresentasikan oleh sebuah individual juga disebut fitness ɸ𝑖 dari individual

(17)

ALGORITMA EVOLUSI DENGAN PYTHON (Integrasi algoritma evolusi pada pembuatan aplikasi

timetable perkuliahan berbasis web dengan Django) 10 𝑎𝑖(𝑠). Probabilitas penyeleksian dari sebuah individual 𝑎𝑖(𝑠) akan menjadi 𝑝𝑖. Saat deskripsi dari suatu solusi kemungkinan untuk sesuatu yang diberikan terdiri dari 𝑛 element, element 𝑖­th membentuk suatu solusi kemungkinan akan disebut attribut 𝑥𝑖 tanpa memperhatikan data tipe yang diperlukan. Oleh karena itu, suatu individual yang terdiri dari beberapa attribut 𝑥 dan akan merepresentasikan solusi kemungkinan diseluruh attribute ini. Dengan demikian menjadi optimal. Berikut adalah skema dasar EA heuristik.

Pada langkah pertama, pembentukan sebuah populasi dari kemungkinan solusi acak. Kemudian perulangan generasi EA dimasukkan. Setiap generasi fitness ɸ𝑖 untuk setiap individual 𝑎𝑖(𝑠) didalam populasi A(𝑠) dilakukan evaluasi. Kemudian individual terbaik 𝑎𝑖 dipilih dari populasi A(𝑠) sebagai induk B(𝑠) untuk

(18)

proses generasi selanjutnya. Probabilitas seleksi 𝑝𝑖 adalah sekumpulan proporsional fitness ɸ𝑖 dari individual. Dari keturunan induk yang terpilih B(𝑠) merupakan bentuk hasil reproduksi populasi C(𝑠). Dalam semua EAs, baik itu keturunannya merupakan hasil klon yang tidak sempurna dari induknya dengan variasi kecil (secara alami proses ini disebut dengan mutasi) atau keturanan yang merupakan unsur-unsur yang tidak sesuai (melange) dari banyak induk dan mewarisi beberapa atribut dari induk yang terasosiasi (secara alami ini deisebut dengan reproduksi crossover). Generasi keturunan selanjutnya adalah A(𝑠+1) = C(𝑠). Secara umum proses EAs ditunjukkan pada Gambar. 1.3. Salah satu property utama pada EA heuristic adalah bahwa ruang pencarian tidak dieksplorasi dengan memulai hanya pada satu solusi kemungkinan tetapi pada keseluruhan populasi terhap solusi kemungkinan dan individu-individu dari populasi dapat saling bertukar atribut solusi. Hal inilah yang membuat EA tahan terhadap premature konvergensi kearah sebuah lokal optima dalam multimodal ruang pencarian

(19)

ALGORITMA EVOLUSI DENGAN PYTHON (Integrasi algoritma evolusi pada pembuatan aplikasi

timetable perkuliahan berbasis web dengan Django) 12

Gambar 1.3 Proses EA heuristik

1.5 Rangkuman

Pada bab ini telah dibahas tentang klasifikasi teknik optimasi dan pentingnya algoritma evolusi untuk penyelesaian masalah kompleks yang sulit dipecahkan secara analitis menggunakan model matematis. Properti

(20)

utama pada EA heuristik adalah bahwa ruang pencarian tidak dieksplorasi dengan memulai hanya pada satu solusi kemungkinan tetapi pada keseluruhan populasi terhap solusi kemungkinan dan individu-individu dari populasi dapat saling bertukar atribut solusi. Hal inilah yang membuat EA tahan terhadap premature konvergensi kearah sebuah lokal optima dalam multimodal ruang pencarian.

1.6 Latihan

1. Sebutkan jenis permasalahan yang dapat diselesaikan dengan EAs.!

2. Apa yang dimaksud dengan fungsi objektif

3. Misalkan ada persamaan 𝑎+2𝑏+3𝑐+4𝑑=20, kita mencari nilai 𝑎,𝑏,𝑐 𝑑𝑎𝑛𝑑 yang memenuhi persamaan diatas dengan ruang perncarian diberikan batasan −2≤𝑎,𝑏,𝑐,𝑑≤2 maka dengan cepat akan mendapatkan solusi. Namun jika menambah ruang perncarian antara [-100, 100] akan membuat permasalahan pencarian menjadi sulit, jelaskan mengapa?

(21)

ALGORITMA EVOLUSI DENGAN PYTHON (Integrasi algoritma evolusi pada pembuatan aplikasi

timetable perkuliahan berbasis web dengan Django) 14 4. Jelaskan yang dimaksud dengan proses crossover

dan mutasi

(22)

BAB 2 Edukasional Timetable

Edukasional timetable adalah alokasi subjek ke sejumlah batasan (constraints) terhadap resource yang diberikan ke-object untuk ditempatkan di ruang waktu (spacetime) dengan sedemikian cara untuk memenuhi kemungkinan yang dinginkan dengan objektif. Secara kontekstual, edukasional timetable meliputi penjadwalan perkuliahan untuk ditempatkan pada blok waktu dan ruangan tertentu. Sumberdaya pada konteks ini adalah mahasiswa, pengajar, ruangan, waktu dan matakuliah.

Definisi yang lebih umum, masalah timetable terdiri dari penetapan ruang dan waktu, sebuah rangkaian tatap muka antara pengajar dan peserta baik siswa atau mahasiswa, dalam periode waktu tertentu yang telah ditentukan sebelumnya.

(23)

ALGORITMA EVOLUSI DENGAN PYTHON (Integrasi algoritma evolusi pada pembuatan aplikasi

timetable perkuliahan berbasis web dengan Django) 16 Menurut survei yang dilakukan oleh Schaerf (1999) mengkategorisasikan edukasional timetabling kedalam tiga-tipe yang berbeda yaitu:

1. Timetabling Sekolah: Merupakan penjadwalan kelas-kelas pada tingkat sekolah, biasanya diselenggarakan dalam periode mingguan.

2. Timetabling Perkuliahan: Penjadwalan perkuliahan ini bertujuan untuk mengatur jalannya aktivitas pembelajaran secara teratur dengan memperhatikan sumberdaya yang ada

3. Timetabling Ujian: Merupakan jadwal ujian pada sebuah universitas dengan tujuan menghindari tumpang tindih pelaksanaan kegiatan dalam periode tertentu.

Setiap tipe pada timetabling melibatkan aspek pertimbangan yang berbeda. Perlu dipastikan bahwa pada timetabling ujian dengan dua ujian scara berturut- turut harus dipisahkan berdasakan waktu yang memadai, menempatkan prioritas utama pada ketersedian guru dan mengurangi waktu luang untuk siswa, sedangkan penjadwalan kuliah bertujuan untuk mencari jadwal dengan konflik yang sedikit atau bebas dari konflik.

(24)

Pada dasarnya Timetable adalah jadwal yang harus sesuai dengan sejumlah contraints. Secara universal constraints digunakan oleh orang-orang yang berurusan dengan masalah penjadwalan. Constraints secara umum dapat dipecah kedalam dua kategori yaitu soft dan hard constraints.

Soft constraints merupakan contraints yang boleh dilanggar, tetapi jumlah yang dilanggar harus diminimalkan. Sebagai contoh, Kelas yang dipesan mesti dekat dengan Fakultas asal kelas tersebut. Dan beberapa contoh soft constraints lainnya disajikan pada Tabel 2.1.

Tabel 1 Soft Constraints

Soft constraints

Kapasista ruangan dan jumlah mahasiswa harus bersesuain Ruangan hanya dapat digunakan untuk satu orang pengajar pada waktu yang sama

Pengajar hanya dapat memeberikan perkuliahan yang sama pada waktu yang berbeda

Hard constraints merupakan constraints yang tidak boleh diterobos. Sebagai contoh, seorang pengajar tidak

(25)

ALGORITMA EVOLUSI DENGAN PYTHON (Integrasi algoritma evolusi pada pembuatan aplikasi

timetable perkuliahan berbasis web dengan Django) 18 boleh berada dalam dua tempat dalam waktu bersamaan.

Daftar ekstensif pada hard constraints ditunjukkan pada Tabel 2.2.

Tabel 2 Hard constraints

Hard constraints

Ruang kelas tidak dapat digunakan dalam waktu yang bersamaan

Pengajar tidak boleh mengajar pada satu waktu untuk dua kelas bersamaan

Ruang kelas dapat menampung jumlah perserta

Perlunya metode yang handal untuk menyelesaikan sebuah permasalahan timetable yang besar jelas dengan mempertimbangkan bahwa fakta sederhanaya, katakanlah, 𝑚 matakuliah dipasangkan kedalam slot waktu 𝑡 maka kemungkinan kandidat timetable sebanyak 𝑡𝑚, yang bervariasi dalam optimalitas berdasarkan permasalahan constraints.

(26)

2.1 Metode Pewarnaan Graph

de Werra (1985) meberikan ilustrasi bagaimana sebuah permsalahan timetabling dapat dimodelkan menggunakan graph. Pada bagian ini menyajikan sebuah model pewarnaan graph yang dipat digunakan dalam permodalan permasalahan timetabling untuk universitas.

Sebuah graph tidak langsung (undirect) 𝐺=(𝑉,𝐸) adalah representasi yang terdiri dari set vertik, 𝑉=

{𝑣1,...,𝑣𝑛}, dan set dari edges, 𝐸. Jika (𝑣𝑖,𝑣𝑗} adalah edge dalam sebuah graph 𝐺=(𝑉,𝐸), maka vertex 𝑣𝑖 berdekatan (adjacent) dengan vertex 𝑣𝑗. Gambar 2.1 menunjukkan graph tidak lansung (undirect graph) pada set vertex { 𝑣1,𝑣2,𝑣3,𝑣4,𝑣5}.

(27)

ALGORITMA EVOLUSI DENGAN PYTHON (Integrasi algoritma evolusi pada pembuatan aplikasi

timetable perkuliahan berbasis web dengan Django) 20

Gambar 3 Graph tidak lansung 𝑮=(𝑽,𝑬)

Definisi lainnya adalah :

x Tingkatan vertex adalah jumlah dari edge yang saling terhubung. Sebai contoh, dari Gambar 2.1, vertex 𝑣1 mempunyai tiga tingkatan.

x Jumlah chromatic dari graph adalah jumlah minimum pewarnaan yang diperlukan untuk mewarnai vertex, dengan demikian tidak ada dua vertik terhubung dengan sebuah edge yang keduanya memiliki warna yang sama.

(28)

2.1.1 Pewarnaan graph untuk timet abling perkuliaha n

Untuk pemahaman yang lebih baik mengenai hubungan antara masalah pewarnaan graph dan permasalahan timetabling, diberikan sebuah contoh permasalahan timetabling perkuliahan yang disajikan pada Gambar 2.2.

Gambar 4 Model graph untuk contoh permsalahan timetable perkuliahan sederhana

Dari Gambar 2.2, kita dapat melihat bahwa ada lima perkuliahan berbeda diberikan kode dengan A, B, C, D dan E. Kemungkinan satu tujuan adalah memenukan jumlah minimum dari slot waktu yang diperlukan untuk

(29)

ALGORITMA EVOLUSI DENGAN PYTHON (Integrasi algoritma evolusi pada pembuatan aplikasi

timetable perkuliahan berbasis web dengan Django) 22 menjadwalkan lima perkuliahan tersebut. Sebuah set dari edge menyatakan ketidakcocokan atara perkuliahan. Jika terdapat sebuah edge antara vertik, itu artinya bahwa perkuliahan itu tidak dapat dijadwalkan pada slot waktu yang sama. Sebagai contoh, Perkuliahan A tidak dapat dijadwalkan pada waktu yang sama dengan B dan C.

Perkuliahan B tidak dapat dijadwalak pada waktu dengan perkuliahan A dan D begitu juga seterusnya.

Secara jelas dalam permasalahan ini, diperlukan tiga warna (slot waktu) untuk membuat penjadwalan.

Perkuliahan A dan E dapat diberikan warna merah, Perkuliahan D dapat diberikan warna dengan warna kuning, Perkuliahan B dapat diberikan warna dengan warna biru dan Perkuliahan C dapat diberikan warna dengan warna kuning atau biru. Warna warna tersebut dapat disamkan dengan slot waktu. Masalah pewarnaan graph berkaitan dengan menemukan jumlah chromatic dari sebuah graph (yang mana merupakan jumlah minimum warna yang diperlukan untuk warna graph).

Dari Gambar 2.2 tersebut, mudah untuk melihat jumlah chromatic yaitu ada tiga.

(30)

2.1.2 Pewarnaan graph untuk timet abling ujian

Diasumsikan bahwa terdadapat sepuluh mahasiwa (m1. . . m10), enam ujian (u1 . . . u6) dan delapan slot waktu (t1 . . . t8) sedemikian rupa, hingga t1 . . t4 muncul pada hari ke 1 dan t5 .. t8 pada hari ke 2. Masing-masing hari memiliki empat slot waktu yaitu dua pada pagi hari dan dua pada siang hari. Masing-masing mahasiwa mengambil sejumlah ujian yang berbeda seperi yang ditunjukkan pada Tabel 2.3, dimana mahasiswa 1 mengambil ujian 1, 2, 4, 6, mahasiswa 2 mengambil ujian 1, 2, 4, 5, dan seterusnya.

Tabel 3 Contoh data ujian-mahasiwa

Mahasiswa Ujian s1 e1, e2, e4, e6 s2 e1, e2, e4, e5 s3 e1, e2, e4, e5

s4 e1, e2, e5

s5 e4

s6 e4, e5

s7 e2, e4

s8 e2, e4, e6

s9 e3, e4, e6

s10 e3, e4, e6

(31)

ALGORITMA EVOLUSI DENGAN PYTHON (Integrasi algoritma evolusi pada pembuatan aplikasi

timetable perkuliahan berbasis web dengan Django) 24 Sebuah timetable kosong ditunjukkan pada Tabel 2.4, dengan masing-masing slot dilabelkan dengan identifier.

Tabel 4 Contoh slot waktu (kosong)

Hari

AM PM

09.30 – 11.00

11.30 – 13.00

16.00 – 17.30

16.00 – 17.30

1 t1 t2 t3 t4

2 t5 t6 t7 t8

Contraints dalam contoh permasalahan ini adalah bahwa seorang siswa tidak dapat mengambil dua ujian pada time slot yang sama dan mengambil tiga ujian berbeda pada hari yang sama sangat harus dihindari dan juga dalam permasalahan ini mesti menghindari siswa yang sama mengambil dua ujian yang berurutan.

Pemetaan masalah ini dengan algoritma pewarnaan graph (graph colouring) ditunjukkan pada Gambar 2.1,

(32)

dimana masih-masing edge menyatakan batasan tidak- pada-sama-waktu.

Gambar 5 Graph colouring untuk contoh permasalahan timetabling sederhana

Itu adalah, e1e2, e1e4, e1e6, e2e4, e2e6 dan e1e6 merupakan edge yang timbul dari siswa bahwa nyatanya s1 mengambil jadwal ujian pada e1, e2, e4 dan e6, jadi tidak ada dua yang bermasaan pada satu waktu.

Kemungkinan satu timetable ditunjukkan pada Tabel 2.5, dimana ujian e1, e2, e3, e4, e5 dan e6 dimasukkan kedalam slot waktu t1,t5, t2, t4, t7 dan t8 secara berturut- turut.

e

e

e

e

e

e

(33)

ALGORITMA EVOLUSI DENGAN PYTHON (Integrasi algoritma evolusi pada pembuatan aplikasi

timetable perkuliahan berbasis web dengan Django) 26

Tabel 5 Kemungkinan timetable ujian

Hari

AM PM

09.30 – 11.00

11.30 – 13.00

14.00 – 15.30

16.00 – 17.30

1 e1 e3 e4

2 e2 e5 e6

2.2 Rangkuman

Pada BAB 2 ini telah diperkenalkan berbagai macam jenis permasalahan timetabling. Permasalahan timetabling untuk sebuah universitas merupakan domain aplikatif untuk buku ini serta telah dibahas juga bersamaan dengan berbagai constraints baik itu soft constraints dan hard constraints. Salah satu contoh pendekatan algoritma yang dapat diterapkan pada timetabling untuk sebuah universitas telah juga disinggung pada tulisan ini yaitu seperti graph colouring untuk menyelesaikan permasalahan.

(34)

2.3 Latihan

1. Sebutkan jenis permasalahan yang dapat diselesaikan dengan EAs.!

2. Apa yang dimaksud dengan fungsi objektif

3. Misalkan ada persamaan 𝑎+2𝑏+3𝑐+4𝑑=20, kita mencari nilai 𝑎,𝑏,𝑐 𝑑𝑎𝑛𝑑 yang memenuhi persamaan diatas dengan ruang perncarian diberikan batasan −2≤𝑎,𝑏,𝑐,𝑑≤2 maka dengan cepat akan mendapatkan solusi. Namun jika menambah ruang perncarian antara [-100, 100] akan membuat permasalahan pencarian menjadi sulit, jelaskan mengapa?

(35)

ALGORITMA EVOLUSI DENGAN PYTHON (Integrasi algoritma evolusi pada pembuatan aplikasi

timetable perkuliahan berbasis web dengan Django) 28

BAB 3 Anaconda - Python

3.1 Distribusi Anaconda untuk Python

Anaconda adalah distributor bahasa pemrograman python dan R untuk komputasi ilmiah seperti data science, machine lehnjarning, pemrosesan data dengan skala besar, analisis deskriptif dan lain sebagainya yang bertujuan untuk menyederhanakan manajemen dan penerapan paket. Platform ini dapat digunakan pada windows, linux, maupun macOS.

3.1.1 Install Anaconda

Pada browser, download anaconda installer untuk sistem anda dan hal-hal yang diperlukan pada situs https://www.anaconda.com/downloads dan ikuti langkah-langkah berikut:

(36)

Untuk menggunakan paket GUI pada sistem operasi Linux, kita perlu menginstall enxtended dependencies untuk QT . Enxtended dependencies dapat dilihat pada Tabel 3.

x Masukkan perintah berikut pada terminal anda untuk pemasangan Anaconda untuk versi Python 3.7:

x Penginstal meminta “In order to continue the installation process, please review the license agreement.” Klik Enter untuk melihat persyaratan lisensi.

x Gulir ke bawah persyaratan lisensi dan masukkan

“Yes” untuk setuju.

x Penginstal meminta Anda untuk mengklik Enter untuk menerima lokasi penginstalan default, CTRL- C untuk membatalkan penginstalan, atau menentukan direktori penginstalan alternatif. Jika Anda menerima lokasi penginstalan default, penginstal menampilkan “PREFIX = / home /

<user> / anaconda <2 atau 3>” dan melanjutkan

(37)

ALGORITMA EVOLUSI DENGAN PYTHON (Integrasi algoritma evolusi pada pembuatan aplikasi

timetable perkuliahan berbasis web dengan Django) 30 penginstalan. Mungkin perlu beberapa menit untuk menyelesaikannya. Catatan : Kami menyarankan Anda menerima lokasi pemasangan default. Jangan memilih jalur sebagai / usr untuk instalasi Anaconda x Pemasang meminta “Do you wish the installer to initialize Anaconda3 by running conda init?”

Kemudian klik “Yes”.

Tabel 3 Enxtended dependencies

x Penginstal selesai dan menampilkan “Thank you for installing Anaconda<2 or 3>!”. Tutup dan buka jendela terminal Anda agar penginstalan diterapkan, atau Anda dapat memasukkan perintah .source

~/.bashrc ketika menjalankan conda di terminal dan tidak berjalankan, maka perlu menambahkan path nya dengan cara: sudo gedit ~/.baschrc kemudian

(38)

masukan diakhir export PATH="home/username/anaconda3/bin:$PATH".

x Untuk mengontrol apakah setiap sesi shell memiliki base environment yang diaktifkan atau tidak . Untuk menjalankan conda dari mana saja tanpa mengaktifkan base environment secara default . Ini hanya berfungsi jika Anda telah menjalankannya terlebih dahulu.conda config --set auto_activate_base False or True conda config --set auto_activate_base False conda init

3.1.2 Menggunakan Environment Anaconda

Dalam Anaconda, anda dapat menggunakan beberapa versi python dan library pendukung yang berbeda-beda dalam Anaconda. Caranya adalah dengan menggunakan conda environment. Gunakan terminal atau Anaconda propmpt untuk langkah-langkah berikut:

x Untuk membuat sebuah environtment:

(39)

ALGORITMA EVOLUSI DENGAN PYTHON (Integrasi algoritma evolusi pada pembuatan aplikasi

timetable perkuliahan berbasis web dengan Django) 32

--name : Ini merupakan argumen untuk

mendefinisikan nama dari environment yang akan kita buat. Perlu diperhatikan bahwa myenv dapat diganti dengan nama environtment yang diinginkan

Gambar 3 Proses download installasi

x Untuk membuat environment dengan spesifik versi dari Python yang ingin digunakan. Misalkan kita ingin menggunakan Python 3.9 pada environtment:

(40)

Ketik y atau Yes, atau ikuti perintahnya kemudian proses download dan instalasi akan berjalan seperti yang ditunjukkan pada Gambar 3.

x Untuk mengkatifkan environment yang telah kita install:

conda activate <nama env>

3.2 Rangkuman

Anaconda adalah sebuah distribusi untuk bahasa pemrograman Python dan R diperuntukkan bagi komputasi saints seperti data science, machine learning Applications, permrosesan data skala besar, predictive analytics dan lain-lian. Tujuan dari distribusi ini adalah untuk menyederhanakan manajemen paket dan deployment.

Versi paket pada Anaconda diatur oleh sistem manajemen paket conda. Paket manager ini digunakan terpisah sebagai paket open source yang berguna untuk hal-hal diluar bahasa pemrograman Python. Terdapat juga versi bootsraps kecil dari

(41)

ALGORITMA EVOLUSI DENGAN PYTHON (Integrasi algoritma evolusi pada pembuatan aplikasi

timetable perkuliahan berbasis web dengan Django) 34 Anaconda yang disebut dengan Miniconda, yang mana didalamnya hanya tersedia Python dan paket-paket pendukung dengan skala kecil.

3.3 Latihan

1. Sebutkan tujuan dari distribusi Anaconda ?

2. Sistem manajemen version pada Anaconda disebut dengan?

3. Sebutkan bahasa permrograman yang ada pada Anaconda?

4. Tuliskan kode untuk membuat environment baru?

5. Tuliskan koden untuk mengaktifkan environment Anaconda ?

(42)

BAB 4 Memulai Algoritma Evolusi dengan Python

4.1 Exploring Jupyter Notebooks

Saat berkerja dengan projek yang berkaitan dengan Algoritma Evolusi kita memerlukan sebuah tool yang dapat membantu kita melukan observasi terhadap output yang dihasilkan pada setiap langkah dengan demikian kita dapat menyesuaikannya secara langsung. Jupyter Notebook adalah tool yang dimaksud. Jupyter Notebook dikenal sebagai kesederhanaanya dan banyak mendukung fitur-fitur dan platform yang diperlukan dalam pengembangan Algoritma evolusi.

4.1.1 Installing Jupyter Notebook

Jika sebelumnya Python sudah terpasang pada sistem anda, anda dapat melanjutkan pemasangan paket Jupyter

(43)

ALGORITMA EVOLUSI DENGAN PYTHON (Integrasi algoritma evolusi pada pembuatan aplikasi

timetable perkuliahan berbasis web dengan Django) 36 Notebook dari repository pip untuk mulai menggunakan jupyter notebook secara cepat.

Untuk Python versi 3, gunakan perintah berikut:

python3 -m pip install --upgrade pip

python3 -m pip install jupyter Untuk memeriksa apakah Jupyter notebook sudah terpasang dengan baik, jalan perintah berikut pada terminal (Windows/Linux/Mac):

Jupyter notebook

Anda akan bisa melihat bebera logging output pada terminal. Setelah itu, browser bawaan anda, akan terbuka dan anda akan dibawa pada tautan (link) browser seperti yang menyerupai Gambar 4 berikut.

(44)

Gambar 4 Login Jupyter

Pada tab Files merupakan file manager yang disediakan untuk user agar dapat melakukan create, upload, rename, delete dan memindahkan file-file.

Pada list tab Running merupakan seluruh Jupyter Notebook yang sedang running saat ini.

Pada tab Clusters menyediakan semua overview dari seluruh cluster IPython yang tersedia. Agar dapat menggunakan fitur ini, anda perlu melakukan

(45)

ALGORITMA EVOLUSI DENGAN PYTHON (Integrasi algoritma evolusi pada pembuatan aplikasi

timetable perkuliahan berbasis web dengan Django) 38 pemasanangan ekstensi parallel IPython untuk enviromentmen python anda.

4.1.2 Jupyter Notebook

Secara default Jupyter Notebook didentifikasi dengan file berekstensikan .ipynb. Setelah mengklik nama file tersebut maka anda akan dibawa pada tampilan seperti Gambar 4.1 berikut:

Gambar 4.1 Markdown Cell

(46)

Bagian teratap pada tampilan diatas terdapat sebuah menu bar, toolbar dan judul dari notebook, ini disebut dengan header. Pada sisi kanan header anda dapat melihat environtment dimana notebook di eksekusi, dan saat pekerjaan apapun yang sedang running, bulatan putih disamping tulisan language berubah menjadi warna abu-abu.

4.1.3 Numpy

NumPy adalah akronim dari Numerical Python. NumPy merupakan library yang tersedia untuk bahasa permrograman python. NumPy dapat digunakan untuk multidimensi array dengan performa komputasi tinggi.

NumPy dapat dimport pada code python dengan perintah sebagai berikut:

import numpy as np

np adalah singkatan yang paling sering digunakan untuk importing numpy. Berikut adalah contoh penggunaan Numpy.

(47)

ALGORITMA EVOLUSI DENGAN PYTHON (Integrasi algoritma evolusi pada pembuatan aplikasi

timetable perkuliahan berbasis web dengan Django) 40

4.1.4 Abstract Base Classes (ABC)

Sebuah class dikatakan kelas abstrak jika berisikan satu atau lebih method abstract. Sebuah method abstract adalah sebuah method yang dideklarasikan, tetapi tidak mengandung implementasi. Kelas abstrak mungkin tidak dilakukan instansiasi, dan metod abstrak itu sendiri mesti diimplementasikan oleh subclassnya.

ABC menyediakan cara untuk mendifinisikan interface saat teknik lain seperti hasattr() canggung digunakan

(48)

(contohnya metod magic). ABCs memperkenalkan virtual subkelas, yang mana kelas tersbut tidak memerlukan inherit dari dari sebuah kelas tertentu, tetapi tetap dapat dikenali oleh fungsi isinstance() dan issubclass().

‘abc’ berkeja dengan cara membuat penanda pada metod dari base kelas sebagai abstrak. Yaitu dengan merbikan decorator @absttractmethod. Sebagai contoh kelas shape berikut:

Perhatikan kelas dasar abstrak mungkin memiliki lebih dari satu metode abstrak. Kelas anak harus mengimplementasikan semuanya jika gagal TypeError mana yang akan dimunculkan. Modul abc juga

(49)

ALGORITMA EVOLUSI DENGAN PYTHON (Integrasi algoritma evolusi pada pembuatan aplikasi

timetable perkuliahan berbasis web dengan Django) 42 mendefinisikan kelas pembantu ABC yang dapat digunakan sebagai pengganti kelas ABCMeta dalam definisi kelas dasar abstrak.

4.2 Algoritma Evolusi untuk Maksimisasi

Seperti yang sudah dibahas pada BAB 1 sebelumnya, Algoritma evolusi merupakan metode spesial untuk menyelesaikan permsalahan komputasional, seperti masalah optimisasi.

Sekarang kita akan melihat bagaimana mengembangkan sebuah Algoritma Evolusi untuk menyelesaikan permasalahan fungsi maksimisasi sederhana. Kita ingin menemukan sebuah input 𝑥 yang memaksimalkan output yang diberikan oleh fungsi 𝑓. Sebagai contoh solusi unik untuk 𝑓(𝑥,𝑦)= −(𝑥2+ 𝑦2) menjadi (𝑥,𝑦)=(0,0).

Sebagai contoh sebuah fungsi 𝑓(𝑥) = −𝑥(𝑥−1)(𝑥−

2)(𝑥−3)(𝑥−4) pada interval [0, 4]. Kita berharap untuk menemukan beberapa nilai untuk memaksimalkan fungsi tersebut. Masalah potensial local maximum

(50)

mungkin sekitaran pada 1.4, yang tidak ingin kita jumpai.

4.2.1 Individual

Pada contoh diatas, jumlah antara 0 sampai dengan 4 merupakan individual yang selalu berpotensi menjadi solusi dari permasalahan yang diselesaikan. Karena kita hanya mempetimbangkan fungsi pada interval tersebut.

Jumlah individual adalah hyperparameter yang dapat kita sesuaikan. Jika kita tidak memiliki clue mengenai solusi yang akan dibangkitkan, lakukan inisialisasi populasi secara random.

Dalam permasalahan ini, kita menggunakan 10 individual acak. Kita berharap dengan inisialiasi random ini merupakan langkah terbaik karena dapat mencakup seluruh solusi dalam ruang pencarian. Sebagai contoh, misal kita menggunakan distribusi normal dengan nilai mean 1.4, mungkin akan mendorong kita pada solusi lokal maksimum yang kurang tepat sekitar 1.4.

(51)

ALGORITMA EVOLUSI DENGAN PYTHON (Integrasi algoritma evolusi pada pembuatan aplikasi

timetable perkuliahan berbasis web dengan Django) 44

4.2.2 Fitness Score dan Mutasi Offspring

Untuk permasalahan ini, nilai fitness harus memiliki nilai yang tertinggi. Karena kita ingin memaksimalkan fungsi 𝑓, jadi kita dapat menggunakan fungsi 𝑓 itu sendiri. Pada contoh ini, kita selalu dapat menggunakan dua individual untuk menghasilkan satu offspring. Kita juga dapat membiarkan mereka menghasilkan lebih banyak offspring. Jika kita memiliki dua individual (atau disebut parents), offspring nya merupakan mean dari mereka. Offspring 1.1 dan offspring 3.5 dapat menjadi sebuah offspring 2.3.

Enam individual dengan nilai fitness tertinggi adalah 1.792, 1.184, 3.169, 1641, 1.431 dan 3.785. Katakanlah dari dua bertetanggaan berikut akan memperoleh offspring:

x 1.792 dengan 1.184 : 1.488 x 3.169 dengan 1641 : 2.405 x 1.431 dengan 3.785 : 2.608

Dalam permsalahan ini, kita perlu menambahkan Gaussian noise ke setiap offspring. Nilai mean dari 0

(52)

dan standar deviasi dari 0.25 tidak menjadi permasalahan. Perlu diingat bahwa Individual berpotensi menjadi solusi dari permsalahan ini. Jadi, mutasi (children) tidak boleh dilakukan lewat dari interver [0, 4]. Jika ini terjadi, set children ke tepi terdekat dari interval. Seperti yang ditunjukkan pada Gambar 4.2 sebagai ilustrasi.

Gambar 4.2 Sedikit pergeseran pada titik bewarna orange setelah mutasi

Karena kita memiliki 13 individual pada populasi kita sekarang, biarkan tiga dari mereka mati dan 10 lagi untuk sisa terakhir. Worst fitness dipilih yang merupakan

(53)

ALGORITMA EVOLUSI DENGAN PYTHON (Integrasi algoritma evolusi pada pembuatan aplikasi

timetable perkuliahan berbasis web dengan Django) 46 old individual yaitu 0.596 dan 2.495 begitu juga individual yang baru dibuat 2.121

4.2.3 Implementasi dengan Jupyter Notebook

Pada sub bagian ini kita akan mengimplementasikan teori maksimisasi yang telah dibahas sebelumnya terhadap sebuah fungsi. Kode dituliskan dengan jupyter notebook secara umum dan abstrak, dengan demikian dapat dengan mudah menggunakannya.

Jika sebelumnya belum pernah menggunakan Abstract Base Class (ABC), jangan khawatir. Pada kelas individual hanya berisi interface yang mana yang akan digunakan untuk sebuah objek yang merepresentasikan individual-individual. Individual memerlukan sebuah nilai (payload, solusi potensial), kita perlu mengimplementasikan random inisialisasi, mutasi, dan sepasang fungsi.

Pertama kita mulai dengan mebangkitkan 10 individu (ukuran populasi=10) secara random yaitu 0.596, 1.067,

(54)

1.184, 1.431, 1.641, 1.792, 2.068, 2.495, 3.169, and 3.785.

(55)

ALGORITMA EVOLUSI DENGAN PYTHON (Integrasi algoritma evolusi pada pembuatan aplikasi

timetable perkuliahan berbasis web dengan Django) 48 Secara visual 10 individu yang dibangkitkan dapat dilihat pada Gambar 4.3 berikut :

Gambar 4.3. 10 Individual

Untuk memaksimalkan fungsi 𝑓 kita hanya perlu menjadikan fungsi itu sendiri sebagai fitness:

Pada Gambar 4.4 terlihat bahwa sisi paling kanan individual memiliki skor fitness tertinggi yaitu 3.1.

beberapa individual memiliki nilai 1 dan bahkan tiga individual lainnya memiliki nilai nagatif.

(56)

Gambar 4.4. Nilai Fitness

Enam individual dengan nilai tertinggi akan saling dipasangkan untuk mendapatkan offspring

Katakana bahwa dua nilai fitness tertinggi pada list di bawah ini yang saling berdekatan akan membentuk sebuah offspring :

x 1.792 dengan 1.184 : 1.488

(57)

ALGORITMA EVOLUSI DENGAN PYTHON (Integrasi algoritma evolusi pada pembuatan aplikasi

timetable perkuliahan berbasis web dengan Django) 50 x 3.169 dengan 1641 : 2.405

x 1.431 dengan 3.785 : 2.608

Offspring yang yang telah diperoleh dari nilai mean pada tiap pasangan individu dapat dilihat pada Gambar 4.5.

Gambar 4.5. Offsprings

Perubahan offspring dilakukan dengan sedikit probabilistic. Ini adalah cara yang baik untuk mengexplore banyak solusi kemungkinan dalam tempat berbeda dan bukan jalan yang salah secara deterministik.

(58)

Pada proses mutasi kita akan memberi batasan dengan interval [0, 4] serta menambahkan distribusi normal gaussian pada setiap offspring dengan standart deviasi 0.25.

points bewarna orange yang ditunjukkan pada Gambar 4.3. mengalami sedikit pergeseran setelah mutasi.

Keseluruhan dari potongan kode diatas ditunjukkan sebagai berikut:

(59)

ALGORITMA EVOLUSI DENGAN PYTHON (Integrasi algoritma evolusi pada pembuatan aplikasi

timetable perkuliahan berbasis web dengan Django) 52

(60)

Kemudian kelas Pool dan Kelas Evolution menangani sisa proses yang ada. Beberapa parameter telah digunakan seperti batas bawah 0 batas atas adalah 4 dengan rate 0.25, dim 1 dan alpha = 0.5. seperti yang ditunjukkan pada kode berikut:

Pemaksimalan pada fungsi 𝑓 diperoleh sekitar 3.6 dengan nilai maksimalnya juga 3.6 seperti yang ditunjukkan pada Gambar 4.6.

(61)

ALGORITMA EVOLUSI DENGAN PYTHON (Integrasi algoritma evolusi pada pembuatan aplikasi

timetable perkuliahan berbasis web dengan Django) 54 Gambar 4.6. Maksimal fungsi 𝒇

Setelah dilakukan perulangan sebanyak 50 epoch, pada epoch 25 terlihat populasi berkumpul disekitar lokal maksimum 1.4, tetapi beruntungnya terdapat individual pada titik ke 4 yang berhasil menarik populasi ke sisi paling kanan dimulai pada epoch ke 25. Fitness dari individual terbaik ditunjukkan pada Gambar 4.7.

(62)

Gambar 4.7. Finess terbaik

4.3 Kesimpulan

Algoritma evolusi merupakan argoritma yang sangat acak (blackbox). Inisialisasi populasi dibangkitkan secara acak, keturunan yang dihasilkan dari individu- individu melalui pengoperasian yang rumit, mutasi terhadap keturunan secara acak dan proses ini berulang- ulang sebanyak ratusan, ribuan dan jutaan kali.

(63)

ALGORITMA EVOLUSI DENGAN PYTHON (Integrasi algoritma evolusi pada pembuatan aplikasi

timetable perkuliahan berbasis web dengan Django) 56

4.4 Latihan

1. Jelaskan kelebihan dan kelemahan pada Algoritma Evolusi berdasarkan contoh implementasi yang sudah dibahasa sebelumnya.

2. Beberapa banyak perulangan dilakukan selama proses evolusi sehingga menghasilkan solusi terbaik?

3. Apa yang dimaksud dengan reproduksi, offsprings dan mutasi?

(64)

BAB 5 Pengatar Singkat Django

5.1 Memulai dengan django

Django adalah salah satu framework yang paling popular untuk mengambangkan web menggunakan Python.

Django juga merupakan kerangka kerja python web tingkat tinggi yang dapat melakukan pengembangan aplikasi dengan cepat dan memiliki desain pragmatis yang bersih. Django dapat membuat pengembangan aplikasi menjadi lebih mudah, lebih cepat dan lebih sedikit menggunakan kode. Django dibuat pada tahun 2003 oleh Simon Wilison dan Adrian Holovaty. Nama Django sendiri diambil dari nama seorang gitaris kebangsaan Belgia dan Perancis yaitu, Django Reinhardt

Django bekerja dengan sempurna sebagaimana adanya dan memberi pengguna berbagai opsi untuk membuat aplikasi web berbasis Python termasuk dasbor dan berbagai dukungan basis data (SQLite, PostgresSQL,

(65)

ALGORITMA EVOLUSI DENGAN PYTHON (Integrasi algoritma evolusi pada pembuatan aplikasi

timetable perkuliahan berbasis web dengan Django) 58 MySQL), fungsi admin, dan banyak lagi. Beberapa perusahaan terkenal yang menggunakan Django yaitu sebagai berikut.

Struktur inisial awal sebuah project Django adalah sebagai berikut:

Susunan file tersebut dibangkitkan secara otomatis saat pertama kali anda membuat sebuah project baru menggunakan django-admin tool. Pada directory level atas, mysite, merepresentasikan nama dari project. Setiap project Django berisikan apps. Apps mirip dengan konsep module dalam pengembangan

(66)

software. Mereka biasanya merupakan potongan- potongan tunggal (independen) terhadap complete project dan diletakkan bersamaan dengan master mysite app didalam directory project. Setiap project dapat memiliki beberapa apps.

5.1.1 Installasi Django

Untuk menginstall Django, buka sebuah terminal baru pada window dan gunakan perintah berikut:

conda install django

Sebagai alternative, dengan menggunakan PIP, gunakan perintah berikut:

pip install django

Ini akan menginstall module Django pada environtment python anda.

Untuk pengecekan apakah telah berhasil terinstall dengan baik, gunakan perintah berikut pada terminal:

python –m django –version

(67)

ALGORITMA EVOLUSI DENGAN PYTHON (Integrasi algoritma evolusi pada pembuatan aplikasi

timetable perkuliahan berbasis web dengan Django) 60 Ini mesti menghasilakn sebuah keluaran berupa versi python yang sudah terinstall saat ini. Jika tidak cek kembali installasi Django anda.

5.1.2 Membuat Project Baru

Django menyediakan utility praktik yang dinamakan dengan django-admin tool, yang dapat digunakan untuk membuat boilerplate code untuk project Django.

Untuk membuat project baru sekaligus nama project, katakanlah, helloworld, gunakan kode berikut:

django-admin startproject

helloworld

Ini akan membuat semua file dan folder boilerplate.

Untuk menjalankan server local, tuliskan perintah berikut:

(68)

python manage.py runserver setelah berhasil, pergi ke browser anda dan ketikkan:

localhost:8080

setelah berhasil, anda akan melihat pada tampilan browser anda berupa konfirmasi bahwa installasi telah berhasil dilakukan. Serperti yang ditunjukkan pada Gambar 5.1. Sebelum melanjutkan ketahap selanjutnya kita akan bahas sedikit tentang pola model, view, template (MVT). Django menggunakan pola MVT karena memungkinkan developer untuk melakukan skip pada bagian tedious saat pembuatan kostum controller.

(69)

ALGORITMA EVOLUSI DENGAN PYTHON (Integrasi algoritma evolusi pada pembuatan aplikasi

timetable perkuliahan berbasis web dengan Django) 62 Gambar 5.1. Installasi Django

5.1.3 Membuat app

Bagaimanapun juga, kita harus membuat setidaknya satu app didalam project. Gunakan perintah berikut untuk membuat app didalam project :

python manage.py startapp myapp dengan demikian, kita telah membuat sebuah folder dengan nama myapp dengan diikuti folder-folder lainnya. Semua file yang terdapat pada folder tersebut dibangkitkan secara otomatis.

(70)

Setelah berhasil membuat app, kita akan melakukan installasi app tersebut pada file settings.py

(71)

ALGORITMA EVOLUSI DENGAN PYTHON (Integrasi algoritma evolusi pada pembuatan aplikasi

timetable perkuliahan berbasis web dengan Django) 64 Setelah pemasangan app baru, kita masuk kedalam file urls.py dan tambahkan kode berikut.

Sekarang kita akan membuat view. silahkan edit pada file views.py dan sesuaikan kodenya seperti berikut:

Disini kita telah mengimport class HttpResponse dan meneruskan sebuah variabel response dengan sebuah value “Hello world”. Kemudian kita lanjutkan dengan

(72)

membua sebuah url untuk view. Buka file urls.py (myapp/urls.py) dan tambahkan kode berikut.

Sekarang kita akan coba menjalankan lokal server untuk melihat hasilnya.

python manage.py runserver

(73)

ALGORITMA EVOLUSI DENGAN PYTHON (Integrasi algoritma evolusi pada pembuatan aplikasi

timetable perkuliahan berbasis web dengan Django) 66

5.1.4 Menyiapkan template halaman

Sebelum menggunakan templates, kita perlu membuat sebuah folder pada app kita untuk dapat menggunakannya. Kita hanya perlu membuat sebuah folder dengan nama templates , setelah itu buat sebuah file pada folder template dan beri nama file tersebut dengan index.html lalu copy paste kode berikut

Setelah itu kita lakukan perubahan pada helloworldview, untuk render template kita.

(74)

Disini kita menggunakan fungsi render, yang mengambil parameter, user request, nama template, yaitu index.html dan context, yang akan kita jumpai bagaimana menggunakannya nanti. Setelah perubahan sedikit dilakukan maka anda akan melihat kurang lebih tampilannya seperti ini:

5.1.5 Menggunakan django template language (DTL)

Sekarang kita akan melihat dasar dari penggunaan DTL.

Pertama kali buat sebuah file dengan nama base.html

(75)

ALGORITMA EVOLUSI DENGAN PYTHON (Integrasi algoritma evolusi pada pembuatan aplikasi

timetable perkuliahan berbasis web dengan Django) 68 didalam folder templates, kemudian copy paste kode berikut.

Tetapi dengan sedikit perubahan kita menggunakan tag DTL. Yaitu dalam bentuk {% tag %}. Tag yang kita gunakan dalam contoh ini adalah

Pada tag itu memungkinkan kita untuk meletakkan kode html didalam block tersebut. Sekarang lakukan perubahan pada file index.html dan ikuti kode

(76)

berikut. Kita memanggil inheritance dengan tag {%

extends “nama template” %}.

Kode keseluruhan setelah perubahan tampak seperti berikut.

(77)

ALGORITMA EVOLUSI DENGAN PYTHON (Integrasi algoritma evolusi pada pembuatan aplikasi

timetable perkuliahan berbasis web dengan Django) 70 Kita lanjutkan dengan passing variabel context dari views kita. Jadi mari kita ubah kode pada file views.py kita menjadi seperti berikut.

(78)

Kita telah melakukan passing, sebuah context dictionary ke template kita. Kuncinya adalah “people” sebagai list strings. Sekarang kita akan buat perulangan untuk iterasi seluruh list.

Seperti yang mungkin anda perhatikan, for loop pada DTL mirip dengan yang ada pada Python. Dan variabel- variabel pada DTL direpresentasikan dengan {{

nama_variabel }}.

(79)

ALGORITMA EVOLUSI DENGAN PYTHON (Integrasi algoritma evolusi pada pembuatan aplikasi

timetable perkuliahan berbasis web dengan Django) 72 Sekarang kita cek server kita dan akan tampak seperti berikut.

5.2 Kesimpulan

Django framework merupakan salah satu framework terpopuler untuk pengembangan website. Sampai saat ini, sudah banyak perusahaan besar yang memanfaatkan framework ini, seperti Instagram, Dropbox, Spotify, Pinterest, dan masih banyak lagi. Django framework banyak digunakan karena mengikuti prinsip DRY (Dont Repeat Yourself) sehingga memiliki efisiensi waktu yang baik.

(80)

5.3 Latihan

1. Jelaskan apa yang dimaksud dengan model view template (MVT)

2. Jelaskan yang anda ketahui tentang DTL

(81)

ALGORITMA EVOLUSI DENGAN PYTHON (Integrasi algoritma evolusi pada pembuatan aplikasi

timetable perkuliahan berbasis web dengan Django) 74

BAB 6 Pengatar Singkat SQLite

SQLite adalah Relational Database Management Server (RDBMS) alternatif yang bersifat portable (tidak memerlukan proses instalasi), cepat, gratis, dan didukung oleh banyak bahasa pemrograman. SQLite Project dimulai pada tahun 2000 oleh Richard Dwayne Hipp. Para pengembang SQLite berharap agar SQLite dapat terus dikembangkan sampai tahun 2050, dimana para pengembang bersama SQLite Consortium (asosiasi yang didirikan untuk memberikan kontribusi berupa pendanaan untuk pengembangan SQLite) senantiasa berupaya untuk melanjutkan vitalitas dan independensi SQLite sehingga tetap menjadi perangkat lunak basis data yang berkualitas tinggi tetapi tetap berada dalam domain perangkat lunak yang bersifat public domain software.

(82)

6.1 Installasi

SQLite bersifat portable sehingga tidak dibutuhkan proses instalasi, untuk menggunakan SQLite dapat dilakukan dengan cara : download sqlite3.zip (untuk windows) pada alamat : http://www.sqlite.org, lalu ekstrak file yang telah didownload tersebut hingga menghasilkan file sqlite3.exe , selanjutnya SQLite dapat diakses melalui command prompt.

Untuk menjalankan perintah sqlite3, ketikkan sqlite3 diikuti dengan nama file yang juga merupakan nama database. Jika file dimaksud belum ada, otomatis akan dibuatkan sebuah file baru. Untuk menjalankan perintah SQL dilakukan dengan menambahkan tanda semicolon (;), lalu tekan enter dan untuk mengeksekusi perintah SQL. Contoh : Untuk membuat database baru dengan nama db_anggaran yang berisi tabel t_dept dapat dilakukan dengan perintah sebagai berikut :

(83)

ALGORITMA EVOLUSI DENGAN PYTHON (Integrasi algoritma evolusi pada pembuatan aplikasi

timetable perkuliahan berbasis web dengan Django) 76 Untuk mengakhiri proses jalannya perintah SQL dapat dilakukan dengan menggunakan interrupt character ( Ctrl+C ). Pastikan bahwa setiap akhir perintah SQL di sertai tanda semicolon (;). Sqlite3 melihat semicolon sebagai tanda bahwa perintah SQL yang diberikan telah lengkap. Sqlite3 akan menganggap perintah tanpa semicolon (;) sebagai satu kesatuan perintah dengan perintah sebelumnya. Ketentuan ini memungkinkan untuk membuat perintah SQL lebih dari satu baris perintah.

6.1.1 SQLite Dot Command

Terdapat beberapa perintah khusus yang hanya digunakan di sqlite3. Perintah khusus ini ditandai dengan tanda titik/dot command (.), dot command merupakan perintah yang hanya akan diterjemahkan oleh sqlite3 sebagai perintah internal. Perintah dot command biasanya digunakan untuk melakukan perubahan pada format output hasil query atau untuk menjalankan perintah query yang bersifat prepackaged.

(84)

1. Format Query

sqlite3 dapat menampilkan hasil query dalam delapan format yang berbeda: " csv ", " column ", "

html ", " insert ", " line ", " list ", " tabs ", dan " tcl ".

Berikut beberapa perintah yang dapat digunakan untuk mengatur tampilan/format hasil query :

1) .mode

Perubahan format dapat dilakukan dengan perintah .mode , secara default format yang digunakan adalah list . Dalam format list seluruh record hasil query ditulis dalam satu baris output untuk setiap kolom dengan pemisahan menggunakan separator string pipe symbol (|), contoh :

2) .sparator

Perintah . sparator dot command dapat digunakan untuk melakukan perubahan karakter pemisah pada list mode. Contoh pemisahan

(85)

ALGORITMA EVOLUSI DENGAN PYTHON (Integrasi algoritma evolusi pada pembuatan aplikasi

timetable perkuliahan berbasis web dengan Django) 78 menggunakan koma dan spasi (‘ ) dapat dilakukan dengan cara sebagai berikut :

3) .line

Dalam format line, setiap kolom data ditampilkan sebagai sebuah baris, setiap baris terdiri atas nama kolom, tanda sama dengan dan kolom data. Pembeda record ditandai dengan baris kosong, contoh :

Dalam format column, setiap record akan ditampilkan sebagai berikut :

(86)

4) .width

Perintah . width digunakan untuk mengatur lebar kolom, dapat digunakan jika lebar kolom yang ada tidak dapat menampilkan seluruh isi data. Jika lebar kolom didefinisikan dengan 0, maka lebar kolom akan otomatis menyesuaikan dengan lebar pada data pertama. Default seting untuk setiap kolom adalah auto-­adjusting bernilai 0.

5) .header

Label atau nama kolom dapat ditampilan atau tidak dengan menggunakan perintah . header, berikut contoh header bernilai off :

6) .insert

Perintah . insert digunakan untuk memformat hasil query tampak seperti perintah SQL INSERT. Format ini dapat digunakan untuk menghasilkan text yang dapat digunakan untuk memindahkan data ke database lain. Dalam

(87)

ALGORITMA EVOLUSI DENGAN PYTHON (Integrasi algoritma evolusi pada pembuatan aplikasi

timetable perkuliahan berbasis web dengan Django) 80 perintah .insert dapat ditambahkan argument yang menunjukkan nama tabel yang akan menjadi tujuan insert, contoh :

7) .html

Perintah .html akan menghasilkan query sebagai tabel XHTM. Hasil query diawali dengan

<TABLE> namun penutup </TABLE> tidak disertakan, seluruh format <TR>, <TH>, dan

<TD> disertakan untuk menjaga kesesuaian dengan format CGI.

2. Menulis Hasil Query ke File

Secara default, sqlite3 menampilkan hasil query ke layar. Untuk memindahkan hasil query ke dalam file dapat dilakukan dengan menggunakan perintah .output sebagaimana contoh berikut :

Referensi

Garis besar

Dokumen terkait

Belum diketahuinya kondisi terakhir tingkat kepuasan pelanggan Apotek Kimia Farma Jakarta sebagai salah satu wujud keberhasilan kualitas layanan kepada pelanggan dan untuk

Isomer rantai pada alkena terjadi karena rantai karbon berubah misalnya dari lurus menjadi bercabang tetapi posisi ikatan rangkap tetap.. Contoh : etena, propena, butena. 2) Letak

Berdasarkan hasil dan pembahasan di atas, maka dapat disimpulkan bahwa kerapatan dan kerusakan stomata daun mangga (Mangifera indica) dapat dipengaruhi oleh kondisi

Terkait dengan pencapaian tujuan jangka menengah kegiatan SPP maka perlu untuk mengoptimalkan proses pendampingan dalam pelaksanaan kegiatan SPP, maka hal penting

Produk utama alkilasi termis adalah neoheksana yang mempunyai bilangan oktana 104,8. Neoheksana dapat digunakan sebagai probe untuk meneliti bagian aktif dari

Kebaharuan penelitian ini antara lain: [1] penelitian ini merupakan penelitian yang pertama sekaligus mencari hubungan antara defisiensi vitamin D, polimorfisme gen RVD

Uji daya warna air dingin terhadap kayu Sengon yang diwarnai serasah Tengkawang menggunakan fiksasi tawas dan kapur menunjukkan daya tahan warna yang baik

Abstrak : Kampung Kauman merupakan kawasan yang memiliki perjalanan sejarah yang panjang, dengan tradisi yang kuat dan beragam yang terletak di Kecamatan Semarang Tengah..