Modul Praktikum AI (AKAMIGAS)
Modul Praktikum AI (AKAMIGAS)
KECERDASAN BUATAN
Oleh :
A. PENDAHULUAN
1. SEJARAH PYTHON
Python adalah bahasa pemrograman tingkat tinggi yang diciptakan oleh Guido van
Rossum dan pertama kali dirilis pada tahun 1991. Python saat ini merupakan bahasa
pemrograman yang sangat populer di kalangan ilmuwan data dan pengembang AI karena
sintaksnya yang sederhana dan pustaka yang kuat. Python juga merupakan bahasa
pemrograman yang multiguna karena bisa digunakan untuk berbagai macam aplikasi seperti
pengembangan website, komputasi matematika, antar- muka grafis, dan lain-lain.
Dalam bidang kecerdasan buatan Prolog dan Lisp merupakan bahasa yang populer
terutama di kalangan akademisi. Prolog populer di Eropa, sedangkan di Amerika peneliti
mengembangkan bahasa pemrograman yang mirip, yaitu LISP. Akhir-akhir ini Python muncul
sebagai bahasa pemograman yang sangat populer dalam bidang kecerdasan buatan.
Tidak seperti Prolog yang menggunakan konsep logic programming, Python dapat
mendukung beberapa konsep pemrograman, seperti pemrograman berorientasi objek,
pemrograman imperatif, pemrograman fungsional, pemrograman prosedural. Banyaknya
dukungan jenis pemrograman ini dikarenakan sintaks bahasa pemrograman Python sangat
simpel dan fleksibel dengan dukungan package yang sangat komperehensif. Komunitas open-
source yang sangat besar dan aktif menghasilkan banyak sekali package yang dapat digunakan
untuk memecahkan permasalahan-permasalahan dalam bidang kecerdasan buatan.
Contohnya TensorFlow yang dikembangkan oleh tim Google Brain, Scikit-learn yang banyak
digunakan untuk machine learning, Keras untuk pengembangan neural network, NLTK untuk
pemrosesan bahasa alami, dan masih banyak lagi.
C. LANGKAH-LANGKAH PRAKTIKUM
Keterangan Gambar 3 :
[1] Nama File
[2] Untuk mengaktifkan (menghubungkan) Notebook di Google Colab.
[3] Menambahkan baris kode Notebook
[4] Menambahkan keterangan Teks
[5] Eksekusi kode Python yang dituliskan kode baris
[6] Cell tempat baris kode dituliskan
6) Untuk mengaktifkan File Notebook yang telah dibuat, klik Connect (Seperti yang
ditunjukkan pada Gambar 4, No 2)
7) Setelah Connect, maka File Notebook sudah aktif dan bisa menjalankan kode python
1) Ketik baris kode python di Cell kode python, kemudian klik tombol atau tekan
tombol Shift + Enter bersamaan.
2) Maka kode baris yang kita ketik, akan dieksekusi, dan memberikan Output dibawah
baris kode yang kita buat.
Gambar 14. Jendela permintaan akses Google Drive melalui Google Colab
5) Untuk membaca file yang diupload ke Google Drive, bisa kita akses dengan path
“/content/sample_data/”
6. CONTOH PEMROGRAMAN
1) Kondisional If – else
Gambar 15. Contoh program kondisional If
2) Perulangan For
B. LANGKAH-LANGKAH PRAKTIKUM
Lakukan langkah 1-4 di bawah ini :
1) Instalasi Package
Penambahan package ke dalam Python dapat dilakukan melalui perintah : pip
install <nama package>. Apabila pip belum terinstal, lakukan langkah berikut:
(a) Unduh get-pip.py melalui tautan berikut:
https://bootstrap.pypa.io/get- pip.py.
(b) Jalankan perintah berikut untuk instalasi pip:
python get-pip.py
(c) Apabila pip telah terinstal, package Python dapat diinstal menggunakan perintah
sebagai berikut:
pip install <nama_package>
Package yang telah didaftarkan pada PyPI (repository resmi untuk package python)
dapat diinstal secara langsung dengan memanggil nama packagenya. Contohnya
jika ingin menginstal package numpy untuk komputasi numerik di Python, maka
perintah berikut ini dapat dijalankan
pip install numpy
2) Melakukan pemanggilan Module di dalam Package Python
Module merupakan file berekstensi .py yang memuat kode Python dan berisi
beberapa fungsi maupun Class. Module dapat disatukan dalam satu package supaya
kumpulan module tersebut menjadi terstruktur dan dapat didistribusikan secara
mudah. Pemanggilan module dapat dilakukan menggunakan “dot/titik”, contohnya
apabila ingin menggunakan module core dalam numpy, maka dapat dilakukan
dengan numpy.core.
Konten dari module dapat diakses dengan melakukan import. Ada tiga cara untuk
melakukan import module:
(a) import <nama_module>
contoh:
import numpy.core
subtract(3,2)
(b) from <nama_ module> import <nama_obyek>
contoh:
from numpy.core import substract
subtract(3,2)
(c) from <nama_ module> import <nama_obyek> as <inisial>
contoh:
from numpy.core import subtract as sub
sub(3, 2)
Setelah terinstal, package Kanren dapat digunakan dalam program dengan melakukan
import pada program.
(a) Variabel Logika : Variabel yang bisa memuat sembarang nilai, tetapi hanya satu nilai
dalam satu waktu. Cara penggunaan variabel logika menggunakan Kanren adalah
dengan mendeklarasikan variabel menggunakan var. Contohnya x = var()
dimana x merupakan variabel logika.
(b) Constraint dan Goal : adalah ekspresi yang membatasi nilai dari variabel logika.
Contoh_1 :
Setelah mendeklarasikan x = var(), variabel x dapat menampung sembarang
nilai. Apabila ingin membatasi atau memberi constraint bahwa nilai variabel x
adalah sama dengan 5, maka constraint variabel x dapat ditulis menjadi
eq(x,5). Goal menyatakan hasil akhir yang ingin dicapai.
Contoh 2:
Misalnya variabel y dideklarasikan sebagai variabel menggunakan cara yang sama
dengan contoh 1, y=var(). Goal yang ingin dicapai adalah persamaan (x,
y)=(y, 3). Pada persamaan tersebut goal dapat ditulis menggunakan sintaks eq,
yang menyatakan bahwa kedua espresi adalah sama (equal). Goal tersebut dapat
ditulis sebagai berikut eq((x, y), (y, 3)).
Deklarasi variabel dan import package hampir sama dengan program pada
Contoh_1. Bedanya sekarang ada dua variabel yang dideklarasikan yaitu x dan y.
Selanjutnya sintaks pada baris 4 menunjukkan bahwa program tersebut meminta 1
nilai, yaitu variabel x, dengan goal eq((x, y), (y, 3)) . Dengan kata lain, cari nilai
variabel x yang memenuhi constraint y == 3 dan memenuhi syarat (x, y) = (y, 3)
sehingga apabila dijalankan program tersebut akan menampilkan keluaran sebagai
berikut:
Contoh kasus silsilah keluarga seperti pada Gambar 1.1 dapat digunakan untuk
memperjelas penggunaan fakta dan relasi dalam program Python menggunakan
Kanren. Fakta dan relasi dapat dibuat menggunakan acuan seperti pada Tabel 1.
Relation dan facts diimport dari package Kanren pada baris 1 bersamaan
dengan var dan run yang digunakan untuk menampung relasi, fakta, variabel
logika, dan eksekusi ekspresi logika secara berurutan. Relasi yang dipakai pada
contoh ini adalah father. Daftar fakta pada contoh silsilah keluarga menggunakan
relasi father dapat dilihat pada Tabel 2.
Tabel 2. Fakta Silsilah Keluarga
Fakta dalam kalimat Fakta
Deklarasi relasi father ditulis pada baris 3. Karena fakta-fakta pada Tabel 2
menggunakan relasi yang sama yaitu father, maka kumpulan fakta tersebut
dapat dituliskan menjadi satu menggunakan facts seperti yang dituliskan pada
baris 4.
1 from kanren.facts import Relation, facts
2 from kanren.core import var, run
3 father = Relation()
4 facts(father, ("Homer", "Bart"),
("Homer", "Lisa"),
("Abe", "Homer"))
5 x = var()
6 output = run(1, x, father(x, "Bart"))
7 print("\nNama ayah Bart : ", output[0])
Listing 3. Kode program untuk Silsilah Keluarga Pada Gambar 19.
Baris 5 variabel logika dan baris6 menunjukkan eksekusi ekspresi logika untuk
mencari ayah dari Bart. Apabila dijalankan, program dapat menghasilkan keluaran
seperti berikut:
2
def get_sibling(x, y):
3 temp = var()
4 return conde((parent(temp, x), parent(temp,
y)))
5
if name ==' main ':
6 parent = Relation()
7 facts(parent, ("Homer", "Bart"),
8 ("Homer", "Lisa"),
9 ("Abe", "Homer"))
10 x = var()
11 output = run(1, x, parent(x, "Bart"))
12 print("\nNama ayah Bart : ", output[0])
# contoh definisi saudara (sibling)
menggunakan relasi baru
13 sibling = Relation()
14 facts(sibling, ("Bart", "Lisa"),
15 ("Lisa", "Bart"))
16 brother = run(0, x, sibling(x, "Lisa"))
17 print("\nNama saudara laki-laki Lisa : ",
brother[0])
18 sister = run(0, x, sibling(x, "Bart"))
19 print("\nNama saudara perempuan Bart : ",
sister[0])
'''
contoh definisi saudara (sibling)
menggunakan relasi yang sudah ada
(parent)
'''
20 siblings = run(0, x, get_sibling(x, "Bart"))
21 siblings = [x for x in siblings if x !=
"Bart"]
22 print("\nNama saudara Bart : ")
23 for item in siblings:
24 print(item)
C. TUGAS
Perhatikan Gambar 20, merupakan silsilah suatu keluarga. Dengan menerapkan contoh
program listing 2, carilah solusinya
A. PENDAHULUAN
1. Representasi Masalah
Seperti telah diketahui pada sistem yang menggunakan kecerdasan buatan akan
mencoba memberikan output berupa solusi suatu masalah berdasarkan kumpulan
pengetahuan yang ada. Hal tersebut direpresentasikan pada Gambar 21.
Berdasarkan Gambar 21, input yang diberikan pada sistem yang menggunakan
kecerdasan buatan berupa masalah. Pada sistem harus dilengkapi dengan sekumpulan
pengetahuan yang ada pada basis pengetahuan (knowlage base). Sistem harus
memiliki inference engine agar sistem mampu mengambil kesimpulan berdasarkan
fakta atau pengetahuan. Output yang diberikan berupa solusi masalah sebagai hasil
dari interfrensi.
Secara umum untuk membangun sistem uang mampu menyelesaiakn masalah perlu
mempertimbangkan 4 hal:
B. PRE-TEST
1. Jelaskan ada berapa jenis pelacakan Buta!
2. Jelaskan kelebihan serta kekurangan pelacakan buta!
3. Jelaskan langkah-langkah pencarian solusi dengan pelacakan Buta untuk jenis Deep
First Search lengkapi dengan contoh graphnya!
C. LANGKAH-LANGKAH PRAKTIKUM
Dalam praktikum ini menggunakan bahasa pemrograman Phyton. Para praktikan diminta
memjalankan bahasa pemrograman Phyton yang sudah diinstal package.
1. Ketiklah program Python berikut ini:
# Program aktivitas 1
fact(gelap, "hitam")
fact(gelap, "cokelat")
x = var()
kecil = run(0, z, ukuran(z, "kecil"))
print("hewan berukuran kecil: ", kecil)
Pertanyaan :
1) Jalankan program tersebut dengan menambahkan goal sebagai berikut:
ukuran(z, "besar").
2) Tulis ke dalam program dan tampilkan keluaran program
warna(z, "cokelat").
3) Tambahkan kode ke dalam program untuk menampilkan binatang yang berukuran besar
dan berwarna cokelat
4) Tambahkan kode ke dalam program untuk menampilkan binatang yang: berwarna gelap
berukuran besar dan berwarna gelap
5) Setelah mencoba query tersebut, cobalah untuk menambahkan fakta dan relasi
baru pada program tersebut. Tambahkan relasi jenis dan fakta jenis("beruang",
"karnivora")dan jenis("kucing", "karnivora"). Tambahkan kode ke
dalam program untuk menampilkan binatang berjenis karnivora.
D. TUGAS
1. Tampilan kodingnya serta running. Apakah sukses? jika belum perbaiki lakukan
hingga program berhasil running.
2. Buatlah beberapa query yang bisa menampilkan solusi
PRAKTIKUM 4 : PENCARIAN HEURISTIK
A. PENDAHULUAN
Metode pencarian dan pelacakan adalah hal penting dalam kecerdasan buatan atau
kita sebut dengan AI. Dalam kecerdasan buatan lebih di fokuskan dalam hal pencarian,
karena AI harus dapat mencari solusi / jawaban atas suatu permasalahn dalam
sekumpulan kemungkinan ruang keadaan.
Terdapat 4 kriteria yang dapat mengukur dalam hal pencarian dalam kecerdasan
buatan:
1. Completeness
2. Time complexity
3. Space Complexity
4. Optimality
a. Instalasi
Untuk melakukan instalasi cukup dengan mengunduh
package wheels dengan ekstensi .whl dan mengeksekusi
perintah selayaknya instalasi package dari sever Python.
pip install <nama_file_whl>
ai_pkg/
…
search.py
Graph <class>
Node <class>
Problem
<class>
utils.py
…
Permasalahan TSP:
Ada 4 kota yaitu Zerind, Oradea, Sibiu, dan Arad dan jarak antar kota dapat
dilihat pada Gambar 22. Asumsi jarak antar kota adalah simetris sehingga
jarak dari Zerind ke Oradea dan sebaliknya adalah sama yaitu 38.
Kasus TSP dapat dimodelkan sebagai graf berbobot dan tidak berarah
(undirected weighted graph). Tiap kota direpresentasikan sebagai “simpul”
(vertex atau node) dan tiap jalur antar kota direpresentasikan sebagai “sisi”
(edge).
city_map = Graph(dict(
Oradea=dict(Oradea=0, Sibiu=24, Arad=59, Zerind=38),
Zerind=47), Zerind=dict(Oradea=38,
Kode untuk metode Hill Climbing dapat dilihat pada Listing 11.
def hill_climbing(problem):
neighbors = []
for i in range(number_of_neighbors):
new_state = problem.generate_neighbour(state)
neighbors.append(Node(new_state))
state = new_state
return neighbors
current = Node(problem.initial)
while True:
neighbors = find_neighbors(current.state)
if not neighbors:
break
break
current.state = neighbor.state
return current.state
Kode untuk metode Hill Climbing dapat dilihat pada Listing 13.
def hill_climbing(problem):
neighbors = []
for i in range(number_of_neighbors):
new_state = problem.generate_neighbour(state)
neighbors.append(Node(new_state))
state = new_state
return neighbors
current = Node(problem.initial)
while True:
neighbors = find_neighbors(current.state)
if not neighbors:
break
break
current.state = neighbor.state
return current.state
Potongan program untuk ditambahkan pada kasus Traveling Salesman Problem (TSP) pada
listing 9.
if name ==' main ':
all_cities = []
cities_graph = city_map.graph_dict
for city_1 in cities_graph.keys():
distances[city_1] = {}
if(city_1 not in all_cities):
all_cities.append(city_1)
for city_2 in cities_graph.keys():
if(cities_graph.get(city_1).get(city_2) is not None):
distances[city_1][city_2] = cities_graph.get(city_1).get(city_2)
Listing 3.4 Kode untuk Mendefinisikan Jarak Kota
PERTANYAAN :
Jalankan program Traveling Salesman Problem dengan cara:
a. Unduh custom package melalui URL yang diberikan asisten dan instal package tersebut dan
import modul yang ada pada package untuk menggunakannya dalam program.
b. Tuliskan program yang ada pada contoh kasus gambar 3.1 dan tambahkan listing 3.4 untuk
menjalankan program
c. Program TSP dapat dijalankan dengan cara membuat objek baru TSP_problem dengan
parameter all_cities. Selanjutnya panggil fungsi hill_climbing dengan parameter
objek yang baru saja dibuat.
Jalankan program tersebut dan tampilkan hasilnya
C. TUGAS
PERTANYAAN :
1) Buatlah program TSP dengan menggunakan data kota seperti gambar diatas dan
catat hasilnya !
2) Lakukan beberapa percobaan catatlah hasilnya !
PRAKTIKUM 5 : IMPLEMENTASI REPRESENTASI PENGETAHUAN
A. PENDAHULUAN
Pengetahuan (Knowledge) didefinisikan sebagai fakta atau kondisi
sesuatu atau keadaan yang timbul karena suatu pengalaman. Pengetahuan
merupakan Cabang ilmu filsafat, yaitu Epistemology, berkenaan dengan sifat,
struktur dan keaslian dari knowledge. Dalam konsep AI, ada berbagai teknik
menyajikan pengetahuan, yaitu:
1) Aturan Produksi
2) Jaringan Semantik
3) Graph
4) Frame dan Scemata
5) Logika Proposisi
6) List
7) Tabel keputusan
Pada praktikum pertemuan ke 4 ini, materi representasi pengetahuan yang
dibahas adalah logika proposisi. Representasi ini menggunakan ekspresi-
ekspresi dalam logika formal untuk merepresentasikan basis pengetahuan.
Bahasa representasi harus dapat membuat seorang programmer mampu
mengekspresikan pengetahuan untuk mendapatkan solusi suatu masalah.
Proposisi adalah kalimat deklaratif yang bernilai benar (true) atau salah (false),
tetapi tidak dapat sekaligus keduanya. Kebenaran atau kesalahan dari sebuah
kalimat disebut nilai kebenarannya (truth value).
Tiga buah contoh berikut ini dapat mengilustrasikan kalimat mana yang
merupakan proposisi dan mana yang bukan. Pernyataan-pernyataan berikut
ini;
(e) 12 ³ 19.
r : 2 + 2 = 4.
q : Murid-murid
maka
~p : Tidak benar hari ini hujan (atau dalam kalimat lain yang lebih
lazim: Hari ini tidak
hujan)
B. LANGKAH PRAKTIKUM
1. Ketiklah koding program logika proposisi pada listing 4.1.
def is_prop_symbol(s):
return isinstance(s, str) and s[:1].isalpha() and
s[0].isupper()
Operator Simbol
Not ~
And &
Or |
implication ==>
2. TUGAS
Pertanyaan :
1) Jalankan listing diatas, dan perhatikan hasilnya !
2) Tambahkan beberapa query di bawah ini ke dalam program pada listing diatas
untuk membuktikan ekspresi logika proposisi. Catatlah hasilnya.
Query 1 : not ( A and B)
Query 2 : not ( A and B) or not (A or B) Query 3 : not
( A or B) and not ( A and B)
Query 4: not (A or B) and not (B)
3) Buatlah 3 query berdasarkan koding tersebut, catat hasilnya!
PRAKTIKUM 6 : IMPLEMENTASI KECERDASAN BUATAN (SISTEM
PAKAR)
class Perminyakan(Fact):
"""Informasi tentang perminyakan"""
pass
class SistemPakarEksplorasi(KnowledgeEngine):
@Rule(Perminyakan(batuan='sedimen',
kedalaman='dangkal'))
def metode_seismik(self):
print("Gunakan metode seismik.")
@Rule(Perminyakan(batuan='karbonat',
kedalaman='dalam'))
def metode_gravitasi(self):
print("Gunakan metode gravitasi.")
engine = SistemPakarEksplorasi()
engine.reset()
@Rule(Perminyakan(batuan='sedimen', kedalaman='dangkal'))
def metode_seismik(self):
print("Rekomendasi: Gunakan metode seismik.")
@Rule(Perminyakan(batuan='sedimen', kedalaman='dalam'))
def metode_gravitasi(self):
print("Rekomendasi: Gunakan metode gravitasi.")
@Rule(Perminyakan(batuan='karbonat', kedalaman='dangkal'))
def metode_elektromagnetik(self):
print("Rekomendasi: Gunakan metode elektromagnetik.")
@Rule(Perminyakan(batuan='karbonat', kedalaman='dalam'))
def metode_resistivitas(self):
print("Rekomendasi: Gunakan metode resistivitas.")
@Rule(Perminyakan(batuan='vulkanik', kedalaman='dangkal'))
def metode_magnetik(self):
print("Rekomendasi: Gunakan metode magnetik.")
@Rule(Perminyakan(batuan='vulkanik', kedalaman='dalam'))
def metode_refleksi(self):
print("Rekomendasi: Gunakan metode refleksi seismik.")
1. Fakta (Facts):
o Perminyakan adalah kelas yang digunakan untuk mendefinisikan fakta-fakta
terkait kondisi lapangan, seperti jenis batuan ( batuan) dan kedalaman
(kedalaman).
2. Sistem Pakar (KnowledgeEngine):
o SistemPakarEksplorasi adalah kelas yang mengandung aturan-aturan (rules) untuk
Hasil Eksekusi:
Jika Anda menjalankan program ini, hasilnya akan berupa rekomendasi metode eksplorasi
berdasarkan kondisi yang diinputkan:
Tugas Mandiri