0% menganggap dokumen ini bermanfaat (0 suara)
203 tayangan45 halaman

Modul Praktikum AI (AKAMIGAS)

Dokumen ini adalah modul praktikum tentang kecerdasan buatan yang mencakup pengenalan bahasa pemrograman Python, perbandingan dengan bahasa pemrograman AI lainnya, serta penggunaan Google Colab untuk pengembangan aplikasi. Modul ini juga menjelaskan langkah-langkah praktikum, termasuk instalasi paket, penggunaan modul logika, dan contoh pemrograman. Selain itu, terdapat penjelasan mengenai fitur-fitur Python dan kelebihan Google Colab dalam penelitian dan pengembangan perangkat lunak.

Diunggah oleh

Yardan akbar
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
203 tayangan45 halaman

Modul Praktikum AI (AKAMIGAS)

Dokumen ini adalah modul praktikum tentang kecerdasan buatan yang mencakup pengenalan bahasa pemrograman Python, perbandingan dengan bahasa pemrograman AI lainnya, serta penggunaan Google Colab untuk pengembangan aplikasi. Modul ini juga menjelaskan langkah-langkah praktikum, termasuk instalasi paket, penggunaan modul logika, dan contoh pemrograman. Selain itu, terdapat penjelasan mengenai fitur-fitur Python dan kelebihan Google Colab dalam penelitian dan pengembangan perangkat lunak.

Diunggah oleh

Yardan akbar
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 45

MODUL PRAKTIKUM

KECERDASAN BUATAN

Oleh :

DWI NORMAWATI, S.T, M.Eng.

UNIVERSITAS AHMAD DAHLAN


YOGYAKARTA
2024
PRAKTIKUM 1 : PENGENALAN BAHASA PEMROGRAMAN
PHYTON

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.

2. PERBEDAAN PYTHON DENGAN BAHASA AI LAINNYA

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.

B. PENGENALAN GOOGLE COLAB

Python mendukung pemrograman dengan paradigma multiguna, utamanya; namun


tidak dibatasi; pada pemrograman berorientasi objek, pemrograman imperatif, dan
pemrograman fungsional. Salah satu fitur yang tersedia pada python adalah sebagai bahasa
pemrograman dinamis yang dilengkapi dengan manajemen memori otomatis. Sama halnya
dengan bahasa pemrograman dinamis lainnya, python umumnya digunakan sebagai bahasa
scripting namun penggunaan bahasa ini lebih luas mencakup konteks pemanfaatan. Python
dapat digunakan untuk berbagai keperluan pengembangan perangkat lunak dan dapat
berjalan di berbagai platform sistem operasi. Kode python dapat dijalankan di berbagai
platform sistem operasi, antara lain: Linux/Unix, Windows, MacOSX, Java Virtual Machine,
OS/2, Amiga dan sebagainya. Beberapa fitur yang dimiliki Python adalah:
1) memiliki library atau pusaka yang sangat lengkap yang siap dipakai untu berbagai memiliki
tata bahasa yang jernih dan mudah dipelajari.
2) Tata Bahasa pemogramannya mudah diapahami
3) memiliki aturan layout kode sumber yang memudahkan pengecekan, pembacaan Kembali
dan penulisan ulang kode sumber.
4) berorientasi objek.
5) memiliki sistem pengelolaan memori otomatis (garbage collection, seperti java)
6) modular, mudah dikembangkan dengan menciptakan modul-modul baru; modul-modul
tersebut dapat dibangun dengan bahasa Python maupun C/C++.
7) Garbage collection otomatis
8) Fasilitas pengaturan penggunaan ingatan komputer sehingga para pemrogram tidak perlu
melakukan pengaturan ingatan komputer secara langsung.
9) memiliki banyak faslitas pendukung sehingga mudah dalam pengoperasiannya.

Python dapat digunakan dengan berbagai macam antarmuka aplikasi seperti


Anaconda, IntelliJ IDEA, Visual Studio Code, Sublime Text, Spyder, Google Colab, dan
sebagainya. Google Colab (Google Collaboratory) merupakan tools yang berbasis cloud dan
free untuk tujuan penelitian. Google colab dibuat dengan environment jupyter notebook dan
mendukung hampir semua library yang dibutuhkan dalam berbagai lingkungan
pengembangan, seperti Machine Learning, Artificial Intelegence (AI), Kriptografi, pengolahan
data, dan sebagainya. Berikut adalah beberapa kelebihan dalam menggunakan google colab,
antara lain:
1) Penggunaan google colab ditujukan bagi para peneliti yang sedang mengembangkan
penelitian dan membutuhkan spesifikasi komputer yang tinggi. Hanya perlu diingat bahwa
google colab membutuhkan koneksi internet.
2) Google memberikan akses cloud komputer dengan spesifikasi: Intel(R) Xeon(R) CPU @
2.30GHz, 12,6 GB VRAM, Tesla P100-PCIE-16GB, Cuda Cores: 2496 dan 33GB.
3) Dalam menggunakan google colab kita tidak memerlukan konfigurasi apapun, namun
dapat menginstall Pustaka di Google Colab.
4) Dapat diintegrasikan dengan Google Drive dan berbagi denga pengguna lainnya.
5) Dapat digunakan dimana saja karena bersifat cloud

C. LANGKAH-LANGKAH PRAKTIKUM

1. MENGGUNAKAN GOOGLE COLAB


1) Akses halaman Google Colab melalui laman : : https://colab.research.google.com/ ,
maka akan muncul halaman pembuka Google Colab

Gambar 1. Tampilan Awal Google Colab


2) Untuk menggunakan layanan Google Colab, kita diharuskan memiliki akun Google.
Jika belum memiliki akun, silah kan daftar memelalui link ini
https://accounts.google.com/
3) Jika sudah memiliki akun Google, silahkan Sign In menggunakan akun Google anda.
Berikut contoh Sign In ke Goole Colab
4) Setelah login, maka akun muncul sebuah jendela yang memberitahukan apakah kita
mau membuat File Notebook yang baru atau menggunakan File yang sudah ada
sebelumnya.
Gambar 2. Jendela Awal Setelah Login Google Colab
5) Klik NEW NOTEBOOK untuk membuat sebuah file notebook baru untuk menjalankan
kode python di Google Colab, maka akan dibuat sebuah file Notebook yang baru
seperti gambar dibawah ini.

Gambar 3. File Notebook pada Google Colab.

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

Gambar 4. Notebook Sudah Aktif

2. MENJALANKAN CODE PYTHON DI GOOGLE COLAB

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 5. Hasil Eksekusi Kode Pyhton


3) Pada Cell kode baris tersebut, ada beberapa tools yang terdapat pada Cell, kita dapat
memindahkan sebuah cell ke atas atau bawah, membuat hyperlink, menghapus cell,
maupun memberikan komentar pada cell tersebut.

Gambar 6. Pengaturan pada Cell Notebook Google Colab


4) Kita dapat menambahkan teks pada Notebook, dengan meng-klik tombol +Text.
Ketikkan teks yang mau dibuat pada cell text editor, kemudian eksekusi dengan

tombol atau tekan tombol Shift+Enter bersamaan.


Gambar 7. Text Editor untuk menambahkan text pada Notebook
5) Contoh penggunaan Cell +Code dan +Text

Gambar 8. Contoh kode Python dan Text

3. MENGGUNAKAN GPU DI GOOGLE COLAB


Google Colab menyediakan akses proses GPU secara gratis untuk penggunanya
yaitu dapat melakukan pengaturan pada Notebook kita untuk dapat menggunakan
akses GPU yang telah disediakan oleh Google Colab.
1) Klik menu Edit→Notebook settings

Gambar 9. Setting Notebook


2) Kemudian ubah pada bagian Hardware accelerator menjadi GPU kemudian Klik
Save, maka kita dapat mengubah runtime versi Python pada notebook sedang
aktif.
Gambar 10. Setting GPU pada Notebook aktif

4. INSTALASI DAN IMPORT LIBRARI DI GOOGLE COLAB


1) Untuk menambahkan library baru pada google colab, gunakan perintah “pip install
(nama_package)”, kemudian eksekusi baris perintah tersebut

Gambar 11. Contoh Install Library


2) Untuk import library yang sudah diinstall, gunakan perintah “import (nama_
pustaka)” atau “import (nama_ pustaka) as inisial_pustaka” jika ingin menggunakan
inisial

Gambar 12. Import Pustaka/Package di Notebook Google Colab


5. UPLOAD FILE DAN AKSES GOOGLE DRIVE
1) Untuk upload file kedalam google colab, caranya klik pada icon folder pada
sidebar sebelah kiri
2) Kemudian klik folder “content/sample_data” kemudian pada sample_data klik
kanan → upload. Jika upload sudah selesai klik refresh.

Gambar 13. Upload file pada Google Colab


3) Cara lain untuk membaca file adalah dengan mengintegrasikan Google Drive kita
ke dalam google colab. Untuk langkah awal kita perlu upload file kedalam google

drive. Kemudian klik tombol Mount Drive


4) Kemudian akan muncul Jendela pemberitahuan untuk mengizinkan Google Colab
mengakses Google Drive Anda. Kemudian klik Connect to Google Drive

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

Contoh 16. Contoh Programm perulangan For


3) Pembuatan Fungsi

Gambar 17. Contoh program Fungsi


4) List

Gambar 18. Contoh List


PRAKTIKUM 2 : KONSEP DASAR PELACAKAN
A. PENDAHULUAN
Sebelum memulai praktikum, perlu memastikan bahwa komputer sudah dilengkapi
dengan package-package yang dibutuhkan untuk pemrograman Python. Jika belum, instalasi
package tersebut perlu dilakukan terlebih dahulu. Mengingat praktikum AI akan
menggunakan Python, penting untuk memahami cara menginstal Python beserta package-
package yang relevan.
Python memiliki keunggulan dengan ketersediaan package yang sangat luas,
memungkinkan aplikasi yang dikembangkan untuk menyesuaikan dengan berbagai tingkat
kompleksitas. Oleh karena itu, instalasi package dapat dilakukan secara bertahap sesuai
dengan kebutuhan aplikasi yang sedang dikembangkan.

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)

3) Intalasi Package Kanren (LogPy)


Pada dasarnya package standar Python tidak mendukung logic programming seperti
bahasa AI lain seperti Prolog. Oleh karena itu, package atau modul logic programming
dibutuhkan untuk menerapkan konsep pelacakan dalam Python.
Salah satu package yang digunakan adalah Kanren (dulu disebut LogPy). Dengan
menggunakan Kanren, bisa mengekspresikan relasi, fakta dan melakukan query untuk
menemukan nilai yang diinginkan. Kanren menyimpan data dalam bentuk fakta-fakta
yang menjelaskan relasi di antara istilah-istilah.
Instalasi Kanren dapat dilakukan menggunakan pip:
pip install kanren

Setelah terinstal, package Kanren dapat digunakan dalam program dengan melakukan
import pada program.

4) Menggunakan Modul Logika dalam Package Kanren

(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)).

(c) Ekspresi Logika (Logic Expression)


Ekspresi logika terdiri dari kumpulan variabel logika dan kumpulan constraint
terhadap nilai dari varibel logika tersebut. Apabila x adalah variabel maka tiap
ekspresi logika mengandung constraint yang membatasi nilai dari variabel x.
Berdasarkan Contoh_1, ekspresi logika dapat dituangkan ke dalam program sebagai
berikut:
1 from kanren.core import var, eq, run
2 x = var()
3 output = run(1, x, eq(5, x))
4 print(output)
Listing 1. Kode program untuk Contoh 1.
Pertama, import sintaks dari package Kanren yang akan dipakai dalam program
yaitu var, eq, dan run seperti pada baris pertama. Selanjutnya deklarasi variabel
logika x seperti yang ditulis pada baris 2. Kemudian ekspresi logika yang dijalankan
dengan menggunakan sintaks run pada baris 3, menunjukkan bahwa program
tersebut meminta 1 nilai, yaitu variabel x, dengan constraint x = 5. Hasil program
ditampilkan pada baris 4 sehingga keluaran dari program tersebut adalah sebagai
berikut:

Contoh_2 dapat dituliskan ke dalam program seperti berikut:


1 from kanren.core import var, eq, run
2 x = var()
y = var()
3 output = run(1, x, eq((x, y), (y, 3)))
4 print(output)
Listing 2. Kode Program untuk Contoh

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:

(d) Fakta dan relasi :


Deklarasi fakta dan relasi menggunakan Kanren mirip dengan deklarasi
menggunakan bahasa Prolog. Contoh penggunaan fakta dan relasi menggunakan
Kanren dapat dilihat pada tabel 1.
Tabel 1. Fakta dan Relasi
Fakta dalam kalimat Relasi Fakta
Abe is the father of father fact(father(“Abe”,“Homer”)
Homer" )
California is a coastal coastal fact(coastal(“California”)
)
California is adjacent adjacent fact(adjacent(“California,
to Arizona “Arizona”))

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.

Gambar 19. Contoh Silsilah Keluarga

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

Homer is the father of Bart fact(father( “Homer”, “Bart”))

Homer is the father of Lisa fact(father( “Homer”, “Lisa”))

Abe is the father of Homer fact(father( “Abe”, “Homer”))

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:

Relasi baru dapat dideklarasikan dengan dua cara yaitu:


Dengan membuat deklarasi relasi baru menggunakan Relation
Menggunakan relasi yang sudah ada untuk membentuk relasi lain tanpa membuat
Relation baru.
Implementasi cara pertama dapat dilihat pada baris 13-19 di dalam program di
bawah ini. Relasi sibling dideklarasikan menggunakan Relation kemudian
perlu didefinisikan fakta baru berdasarkan relasi tersebut. Cara ini menjadi tidak
efektif karena terdapat redundansi data dan apabila jumlah saudara sangat banyak
maka kita harus menambahkan fakta satu persatu sesuai jumlah fakta yang ada.
Untuk kasus seperti ini kita dapat menggunakan relasi yang sudah ada untuk
mendeteksi relasi baru. Dalam kasus ini relasi Parent dapat digunakan untuk
mendeteksi relasi saudara tanpa membuat relasi baru. Implementasi penggunaan
relasi Parent untuk mendeteksi nama saudara dapat dilihat pada fungsi
get_sibling yang ada pada baris 2-4. Pemanggilan fungsi dan tampilan
keluaran dapat dilihat pada baris 20-24.
from kanren.facts import Relation, facts from
1 kanren.core import var, run, conde

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)

Listing 4. Kode program untuk silsilah keluarga menggunakan relasi baru


Apabila program tersebut dijalankan akan mengeluarkan keluaran seperti berikut
ini :

C. TUGAS
Perhatikan Gambar 20, merupakan silsilah suatu keluarga. Dengan menerapkan contoh
program listing 2, carilah solusinya

Gambar 20. Contoh Silsilah Keluarga (untuk Tugas)

Contoh program: Kasus Silsilah Keluarga pada gambar 20

from kanren.facts import Relation, facts from


kanren.core import var, run

parent = Relation() facts(parent, ("Slamet",


"Amin"),
("Slamet", "Anang"),
("Amin", "Badu"),
("Amin", "Budi"),
("Anang", "Didi"),
("Anang", "Dadi"))
x = var() child = "Amin"
ayah = run(1, x, parent(x, child)) print("\nNama
ayah " + child + ": ") for item in ayah:
Listingprint(item)
5. Contoh Program Silsilah Kelaurga Menggunakan Package Kanren
Jawablah Pertanyaan Berikut ini :
1. Coba ketik program di atas dengan bahasa Python. Caranya:
a) Tulislah sintaks program listing 5 diatas
b) Run program dengan menggunakan console
c) Perhatikan apa yang terjadi
d) Cobalah beberapa query (minimal 3 query) catatlah hasilnya
e) Capture hasil running program
2. Berdasarkan listing 5, cobalah kembangkan program dengan menambahkan fakta
Kakek, anak atau paman dengan du acara yaitu :
a) Membuat relasi baru yaitu grandfather, children, dan uncle
b) Tanpa membuat relasi baru (hanya gunakan relasi parent untuk membentuk relasi
lain. Hint: lihat kembali contoh pada Listing 4)
PRAKTIKUM 3 : IMPLEMENTASI PELACAKAN BUTA

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.

Gambar 21. Sistem Kecerdasan Buatan

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:

1. Mendefinisikan masalah dengan tepat. Pendefinisian ini mencakup spesifikasi


uang tapat mengenai keadaan awal (initial state) dan solusi yang diharapkan.
2. Menganalisis masalah serta mencari beberapa titik penyelesaian masalah uang
sesuai.
3. Merepresentasikan pengetahuan yang perlu untuk menyelesaikan masalah
tersebut.
4. Memilih teknik penyelesaian masalah uang terbaik.
2. Penyelesaian Masalah dalam AI
Dalam pemyelesaian masalah dengan teknik AI menyangkut beberapa langkah yaitu:
1) Analisa Masalah
2) Representasi Masalah dan Pengetahuan
3) Inferensi
4) Penggunaan Bahasa AI
Dalam menyelesaikan masalah dalam AI, perlu melakukan analisa masalah sebagai
langkah pertama. Langkah ini menganalisa masalah yang dihadapi dan
mengungkapkan masalah tersebut dalam satu sistem simbol.
Sistem tersebut dapat merupakan diagram, skema, graf, atau simbol- simbol yang lain.
Sistem simbol ini harus diterjemahkan dalam dalam Bahasa pemrograman AI. Sistem
ini harus dapat mengungkapkan dengan tepat keadaan awal (initial state). Keadaan
akhir atau sasaran yang dituju (Goal State).
Misal contoh pedagang mengunjungi 10 kota. Keadaan awal adalah rute perjalanan
yang ada dan dapat dilukiskan sebagai berikut:
R(K1, K2,…, KN)
R(KJ1, KJ2, , KJN)
Dengan jarak kota K1 ke kota KJ1 adalah d iJ.Dimana KJ1, KJ2 adalah kota- kota dalam
daftar pedagang tersebut.
Keadaan sasaran adalah salah satu rute perjalanan yang mempunyai jumlah dij
minimum. Secara umum pendefinisian masalah sebagai suatu ruang keadaan meliputi
3 hal yaitu: Posisi Awal (Initial State), Aturan (Rule), dann Tujuan (Goal).
Contoh
Misal permasalahan yang dihadapi adalah “Permaian Catur”, maka harus ditentukan:
1) Posisi awal pada papan catur : Posisi awal setiap permaian catur selalu sama, yaitu
semua bidak diletakkan di atas papan catur dalam 2 sisi yaitu kubu putih dan kubu
hitam.
2) Aturan- aturan untuk melakukan gerakan secara ilegal (Rule) : Aturan- aturan (rule)
berguna untuk menentukan gerakan suatu bidak, yaitu melangkah dari satu
keadaan ke keadaan lain. Misal untuk mempermudah menunjukkan posisi bidak,
setiap kotak ditunjukkan dalam huruf (a, b, c, d, e, f, g, h) pada arah hotizontal dan
angka (1, 2, 3, 4, 5, 6, 7, 8) pada arah vertikal. Suatu aturan untuk menggerakkan
bidak dari posisi (e,2) ke (e,4) dapat ditunjukkan dengan aturan:
IF bidak putih pada kotak (e,2),
AND Kotak (e,3) Kosong,
AND Kotak (e,4) Kosong,
THEN Gerakkan bidak dari (e,2) ke (e,4)
3) Tujuan (Goal) : Tujuan yang ingin dicapai adalah posisi pada papan catur yang
menunjukkan kemenangan seseorang terhadap lawannya. Kemenangan ini
ditandai dengan posisi RAJA uang sudah bergerak lagi.

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

from kanren.facts import Relation, facts, fact from


kanren.core import var, run
from kanren.goals import membero suka = Relation()
facts(suka, ("ellen", "tenis"),
("john", "football"),
("john", "tenis"),
("mary", "renang"),
("tom", "tenis"),
("tom", "basket"),
("eric", "renang"),
("mary", "tenis"))
x = var()
tom_hobbies = run(0, x, suka("tom", x)) print("Tom: ",
tom_hobbies)
for hobby in tom_hobbies: fact(suka, ("bill"), hobby)
bill_hobbies = run(0, x, suka("bill", x)) print("Bill: ",
bill_hobbies)
mary_hobbies = run(0, x, suka("mary", x)) print("Mary: ",
mary_hobbies)

for hobby in mary_hobbies: fact(suka, ("ann"), hobby)


ann_hobbies = run(0, x, suka("ann", x)) print("Ann: ",
ann_hobbies)

Listing 6. Program Hobi 1


Pertanyaan :

1) Bagaimana output dari program listing 6 ?


2) Cobalah menambahkan fakta-fakta baru untuk pengembangan program pada
listing 6 !

2. Ketikan listing berikut ini :


# Program aktivitas 2

from kanren.facts import Relation, facts, fact from


kanren.core import var, run
from kanren.goals import membero suka = Relation()

facts(suka, ("ellen", "tenis"),


("john", "football"),
("mary", "renang"),
("tom", "tenis"),
("eric", "renang"))
x = var()
tom_hobbies = run(0, x, suka("tom", x)) print("Tom: ",
tom_hobbies)

for hobby in tom_hobbies: fact(suka, ("bill"), hobby)


bill_hobbies = run(0, x, suka("bill", x)) print("Bill: ",
bill_hobbies)

mary_hobbies = run(0, x, suka("mary", x)) print("Mary: ",


mary_hobbies)

for hobby in mary_hobbies: fact(suka, ("ann"), hobby)


ann_hobbies = run(0, x, suka("ann", x)) print("Ann: ",
ann_hobbies)

Listing 7. Program Hobi 2


Pertanyaan :

1) Bagaimana output dari program listing 7 ?


2) Cobalah menambahkan fakta-fakta baru untuk pengembangan program pada
listing 6 !

3. Ketik listing berikut ini dan perhatikan hasilnya

from kanren.facts import Relation, facts, fact from


kanren.core import var, run
from kanren.goals import membero from kanren import vars
ukuran = Relation() warna = Relation() gelap = Relation()
facts(ukuran, ("beruang", "besar"),
("gajah", "besar"),
("kucing", "kecil"))
facts(warna, ("beruang", "cokelat"),
("kucing", "hitam"),
("gajah", "kelabu"))

fact(gelap, "hitam")
fact(gelap, "cokelat")

x = var()
kecil = run(0, z, ukuran(z, "kecil"))
print("hewan berukuran kecil: ", kecil)

Listing 8. Contoh Program

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

Di dalam kecerdasan buatan terdapat 2 metode pencarian dan pelacakan diantaranya


adalah:
1. Pencarian buta (Blind Search): Dalam metode pencarian buta ini dibagi menjadi 2
yaitu:
a) Breadth - First Search: Metode ini akan mulai mencari dari node yang paling
kiri, kemudian berpindah ke-node se-level dengannya, dan berulang - ulang
trus hingga menemukan solusi yang dimaksud.
Keuntungan metode Breadth-First Search adalah: pasti menemukan solusi
yang dicari, tidak akan mengalami jalan buntu / tidak menemukan solusi.
b) Depth - Fisth Search: Metode ini dimulai dari semua node-node anaknya
kemudian berpindah ke node-node se-level nya.
Kelemahan metode Breadth-First Search adalah: memerlukan memori yang
cukup besar, karena metode ini mengecek keseluruhan node yang ada dan
membutuhkan waktu yang lebih untuk mengecek semua node yang ada
tersebut.

2. Pencarian terbimbing (Heuristic search): Istilah Heuristic diambil dari bahasa


Yunani yang berarti menemukan. Heuristic merupakan suatu strategi untuk
melakukan proses pencarian (search) ruang problema secara selektif, yang
memandu proses pencarian yang kita lakukan disepanjang jalur yang memiliki
kemungkinan sukses paling besar. Dalam metode pencarian terbimbing atau kita
sebut Heuristic search terbagi menjadi 4 macam yaitu:
a) Pembangkit & Pengujian
Pembangkit & Pengujian: Pada prinsipnya metode ini merupakan
penggabungan antara depth-first search dengan pelacakan mundur
(backtracking), yaitu bergerak ke belakang menuju pada suatu keadaan awal.
Terdapat kelemahan dalam metode ini:
1) Perlu membangkitkan semua kemungkinan sebelum dilakukan
pengujian
2) Membutuhkan waktu yang cukup lama dalam pencariannya
b) Hill Climbing
Metode ini merupakan jenis pelacakan heuristik, karena dalam pencarian
solusinya selalu mempertimbangkan node yang memiliki nilai terbaik atau
dengan model bertahap.
1) Merupakan metode pelacakan yang mengkombinasikan pelacakan
Generate and Test dengan Backtracking.
2) Untuk langkah awal pelacakan dengan memilih node yang memiliki
nilai terbaik/terbesar (fungsi heuristik).
c) Best First Search (BFS)
d) Simulated Annealing
B. LANGKAH PRAKTIKUM
Untuk dapat menjalankan praktikum untuk metode pelacakan heuristic, perlu
dilakukan langkah persipan oleh semua praktikan. Langkah-langkahnya sebagai
berikut:
1. Melakukan Kustomisasi Python Package untuk Pencarian

Untuk materi praktikum ini dan seterusnya akan digunakan custom


package yang mendefinisikan struktur data dan fungsi-fungsi dasar yang
ada pada materi modul praktikum. Custom package dikemas dalam
bentuk Python wheels yang merupakan standar distribusi package Python.
Langkahnya sebagai berikut:

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>

b. Melakukan strukturisasi Modul Pencarian dalam Package


Custom package yang akan digunakan untuk praktikum bernama
ai_pkg. Di dalam modul ini terdapat beberapa modul, salah satu

diantaranya adalah modul search. Dalam modul ini terdapat tiga


class yang mendefinisikan struktir data yang digunakan untuk
metode pencarian.

ai_pkg/

search.py
Graph <class>
Node <class>
Problem
<class>
utils.py

1. Bacalah kasus pencarian dengan metode Hill Climbing


Berikut adalah contoh pengaplikasian pelacakan dengan metode Hill
Climbing untuk menjawab permasalahan Traveling Salesman Problem (TSP).
Permasalahannya adalah apabila diberikan beberapa kota dan diketahui
jarak antara masing-masing kota, maka solusinya adalah rute terpendek
yang bisa menjangkau semua kota dan kembali pada kota asal. Lihar Gambar
3.2.

Gambar 22 Peta Kota

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

Sibiu=dict(Oradea=24, Sibiu=0, Arad=51,

Zerind=56), Arad=dict(Oradea=59, Sibiu=51, Arad=0,

Zerind=47), Zerind=dict(Oradea=38,

Sibiu=56, Arad=47, Zerind=0)), directed=False)

Listing 9 Kode untuk Representasi Graf Kota pada Gambar 22


Pertama, Graph dibentuk dengan parameter berupa dict dan
directed. Nama kota dan jarak masing-masing kota dapat
didefinisikan secara langsung menggunakan dict. Pada kasus TSP
digunakan graf tidak berarah maka parameter directed diatur
menjadi False. Dengan membuat objek Graph baru, maka simpul graf
akan terbentuk otomatis menggunakan class Node yang ada pada
module search. Representasi graf kota pada Gambar 22 dapat
dituliskan seperti pada Listing 9.
distances = {}
class TSP_problem(Problem):
def generate_neighbour(self, state):
neighbour_state = state[:]
left = random.randint(0,
len(neighbour_state) - 1)
right = random.randint(0,
len(neighbour_state) - 1)
if left > right:
left, right = right, left
neighbour_state[left: right + 1] =
reversed(neighbour_state[left: right + 1])
return neighbour_state

def actions(self, state):


return [self.generate_neighbour]

def result(self, state, action):


return action(state)
def path_cost(self, state):
cost = 0
for i in range(len(state) - 1):
current_city = state[i]
next_city = state[i + 1]
cost +=
distances[current_city][next_city]
cost += distances[state[0]][state[-1]]
return cost

def value(self, state):


return -1 * self.path_cost(state)
Listing 10 Kode untuk Definisi Problem TSP

Selanjutnya untuk buat permasalahan TSP dengan membuat class dengan


nama TSP_problem yang mengimplementasikan abstract class Problem
pada package yang digunakan. Terdapat empat fungsi dasar yaitu: actions,
result, path_cost, dan value. Keempat fungsi dasar ini harus
diimplementasikan karena digunakan dalam eksekusi TSP di dalam class
Node.

Kode untuk metode Hill Climbing dapat dilihat pada Listing 11.

def hill_climbing(problem):

def find_neighbors(state, number_of_neighbors=100):

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

neighbor = argmax_random_tie(neighbors, key=lambda node:


problem.value(node.state))

if problem.value(neighbor.state) <= problem.value(current.state):

break

current.state = neighbor.state

return current.state

Listing 11 Kode untuk Metode Hill Climbing


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 12 Kode untuk Mendefinisikan Jarak Kota

Selanjutnya untuk buat permasalahan TSP dengan membuat class


dengan nama TSP_problem yang mengimplementasikan abstract
class Problem pada package yang digunakan. Terdapat empat fungsi
dasar yaitu: actions, result, path_cost, dan value. Keempat fungsi
dasar ini harus diimplementasikan karena digunakan dalam eksekusi
TSP di dalam class Node.

Kode untuk metode Hill Climbing dapat dilihat pada Listing 13.
def hill_climbing(problem):

def find_neighbors(state, number_of_neighbors=100):

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

neighbor = argmax_random_tie(neighbors, key=lambda node:


problem.value(node.state))

if problem.value(neighbor.state) <= problem.value(current.state):

break

current.state = neighbor.state

return current.state

Listing 13 Kode untuk Metode Hill Climbing

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

Lakukanlah tugas selanjutnya berdasarkan gambar 3.3. dengan menjawab pertanyaan:


D.

E. Gambar 3.3 Peta Kota

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.

Di dalam matematika, tidak semua kalimat berhubungan dengan logika. Hanya


kalimat yang bernilai benar atau salah saja yang digunakan dalam penalaran.
Kalimat tersebut dinamakan proposisi (preposition).

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;

(a) 6 adalah bilangan genap.

(b) Soekarno adalah Presiden Indonesia yang pertama.


(c) 2 + 2 = 4.
(d) Ibukota Provinsi Jawa Barat adalah Semarang.

(e) 12 ³ 19.

(f) Kemarin hari hujan.

(g) Suhu di permukaan laut adalah 21 derajat Celcius.

(h) Pemuda itu tinggi.

(i) Kehidupan hanya ada di planet Bumi.

Semuanya merupakan proposisi. Proposisi a, b, dan c bernilai benar, tetapi


proposisi d salah karena ibukota Jawa Barat seharusnya adalah Bandung dan
proposisi e bernilai salah karena seharusnya 12
£ 19. Proposisi f sampai i memang tidak dapat langsung ditetapkan
kebenarannya, namun satu hal yang pasti, proposisi-proposisi tersebut tidak
mungkin benar dan salah sekaligus. Kita bisa menetapkan nilai proposisi
tersebut benar atau salah. Misalnya, proposisi f bisa kita andaikan benar (hari
kemarin memang hujan) atau salah (hari kemarin tidak hujan). Demikian pula
halnya untuk proposisi g dan h. Proposisi i bisa benar atau salah, karena sampai
saat ini belum ada ilmuwan yang dapat memastikan kebenarannya.

Secara simbolik, proposisi biasanya dilambangkan dengan huruf kecil seperti p,


q, r, …. Misalnya, p : 6 adalah bilangan genap.

Untuk mendefinisikan p sebagai proposisi “6 adalah bilangan genap”. Begitu


juga untuk q : Soekarno adalah Presiden Indonesia yang pertama.

r : 2 + 2 = 4.

dan sebagainya. Kita dapat membentuk proposisi baru dengan cara


mengkombinasikan satu atau lebih proposisi. Operator yang digunakan untuk
mengkombinasikan proposisi disebut operator logika. Operator logika dasar
yang digunakan adalah dan (and), atau (or), dan tidak (not). Dua operator
pertama dinamakan operator biner karena operator tersebut mengoperasikan
dua buah proposisi, sedangkan operator ketiga dinamakan operator uner
karena ia hanya membutuhkan satu buah proposisi. Proposisi baru yang
diperoleh dari pengkombinasian tersebut dinamakan proposisi majemuk
(compound proposition). Proposisi yang bukan merupakan kombinasi proposisi
lain disebut proposisi atomik. Dengan kata lain, proposisi majemuk disusun dari
proposisi-proposisi atomik. Metode pengkombinasian proposisi dibahas oleh
matematikawan Inggris yang bernama George Boole pada tahun 1854 di dalam
bukunya yang terkenal, The Laws of Thought. Proposisi majemuk ada tiga
macam, yaitu konjungsi, disjungsi, dan ingkaran. Ketiganya didefinisikan sebagai
berikut:

Misalkan p dan q adalah proposisi. Konjungsi (conjunction) p dan q,


dinyatakan dengan notasi ∧ , adalah proposisi p dan q. Disjungsi
(disjunction) p dan q, dinyatakan dengan notasi ∨ , adalah proposisi p
atau q. Ingkaran atau (negation) dari p, dinyatakan dengan notasi ~p,
adalah proposisi tidak p.
Contoh :

Diketahui proposisi-proposisi berikut:

p : Hari ini hujan

q : Murid-murid

diliburkan dari sekolah

maka

∧ : Hari ini hujan dan murid-murid diliburkan dari sekolah

∨ : Hari ini hujan atau murid-murid diliburkan dari sekolah

~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.

from ai_pkg.utils import Expr

def is_prop_symbol(s):
return isinstance(s, str) and s[:1].isalpha() and
s[0].isupper()

def is_true(exp, model={}): if exp in (True, False):


return exp
op, args = exp.op, exp.args if is_prop_symbol(op):
return model.get(exp) elif op == '~':
p = is_true(args[0], model) if p is None:
return None else:
return not p elif op == '|':
result = False for arg in args:
p = is_true(arg, model) if p is True:
return True if p is None:
result = None return result
elif op == '&': result = True for arg in args:
p = is_true(arg, model) if p is False:
return False if p is None:
result = None return result
p, q = args
if op == '==>':
return is_true(~p | q, model) elif op == '<==':
return is_true(p | ~q, model) pt = is_true(p, model)
if pt is None: return None
qt = is_true(q, model) if qt is None:
return None if op == '<=>':
return pt == qt elif op == '^':
return pt != qt else:
raise ValueError("illegal operator" + str(exp))

if name ==' main ': A, B = map(Expr, 'AB')


model = {A: False, B: True} query = (A & B)
print(query , ' : ' , is_true(query, model))

Operator Simbol

Not ~

And &

Or |

implication ==>

if and only if <=>

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)

Implementasi Sistem Pakar di Python

• Studi Kasus: Pemilihan Metode Eksplorasi Minyak Bumi


• Langkah-langkah Implementasi:
o Langkah 1: Definisikan Basis Pengetahuan:
▪ Basis pengetahuan dalam bentuk aturan (rules).
▪ Contoh:

from experta import *

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.")

o Langkah 2: Input Data dan Jalankan Mesin Inferensi:


▪ Memasukkan fakta-fakta terkait kondisi lapangan.
▪ Jalankan mesin inferensi untuk mendapatkan rekomendasi.
▪ Contoh:

engine = SistemPakarEksplorasi()
engine.reset()

# Input data perminyakan


engine.declare(Perminyakan(batuan='sedimen',
kedalaman='dangkal'))
engine.run()

Eksekusi Program dan Analisis Hasil

• Uji Kasus Berbeda:


o Cobalah beberapa input data yang berbeda untuk melihat bagaimana sistem
pakar memberikan rekomendasi.
o Diskusikan hasil yang diperoleh dan evaluasi kinerja sistem.
• Modifikasi Aturan:
o Cobalah menambahkan aturan baru atau memodifikasi aturan yang ada
untuk meningkatkan sistem pakar.

Contoh Program Sistem Pakar: Pemilihan Metode Eksplorasi Minyak

from experta import *

# Definisi Fakta (Facts)


class Perminyakan(Fact):
"""Informasi tentang kondisi perminyakan."""
pass

# Definisi Sistem Pakar


class SistemPakarEksplorasi(KnowledgeEngine):

@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.")

# Inisialisasi Mesin Sistem Pakar


engine = SistemPakarEksplorasi()

# Menjalankan Mesin Sistem Pakar


engine.reset()

# Input data kondisi perminyakan


# Contoh 1: Batuan sedimen dengan kedalaman dangkal
engine.declare(Perminyakan(batuan='sedimen',
kedalaman='dangkal'))
engine.run()

# Contoh 2: Batuan karbonat dengan kedalaman dalam


engine.declare(Perminyakan(batuan='karbonat',
kedalaman='dalam'))
engine.run()

# Contoh 3: Batuan vulkanik dengan kedalaman dangkal


engine.declare(Perminyakan(batuan='vulkanik',
kedalaman='dangkal'))
engine.run()

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

memutuskan metode eksplorasi yang sesuai berdasarkan input fakta.


o Setiap aturan (@Rule) mencakup kondisi tertentu (misalnya, batuan sedimen
dengan kedalaman dangkal) dan aksi yang diambil jika kondisi tersebut
terpenuhi (misalnya, "Gunakan metode seismik").
3. Eksekusi:
o Sistem pakar diinisialisasi dengan engine = SistemPakarEksplorasi().
o Setiap kali kondisi baru dimasukkan (menggunakan engine.declare()), mesin
sistem pakar akan berjalan (engine.run()) dan memberikan rekomendasi metode
eksplorasi berdasarkan aturan yang sesuai.

Hasil Eksekusi:

Jika Anda menjalankan program ini, hasilnya akan berupa rekomendasi metode eksplorasi
berdasarkan kondisi yang diinputkan:

• Untuk batuan sedimen dan kedalaman dangkal: "Rekomendasi: Gunakan


metode seismik."
• Untuk batuan karbonat dan kedalaman dalam: "Rekomendasi: Gunakan metode
resistivitas."
• Untuk batuan vulkanik dan kedalaman dangkal: "Rekomendasi: Gunakan
metode magnetik."

Tugas Mandiri

• Modifikasi dan Pengembangan Sistem:


o Kembangkan sistem pakar dengan skenario yang lebih kompleks.
o Gunakan dataset yang lebih besar dan realistis di bidang perminyakan.
REFERENSI

Hermawan, A. 2006. Jaringan Syaraf Tiruan. ANDI OFFSET, Yogyakarta


Kusumadewi S. 2003. Artificial Intelligence (Teknik dan Aplikasinya). Graha Ilmu, Yogyakarta.
Modul Praktikum Kecerdasan Buatan UAD 2020
Prateek, Joshi, Artificial Intelligence with Python, 2017.
Russel, Stuart, Artificial Intelligence a Modern Aproach, 2016
https://github.com/logpy/logpy
https://packaging.python.org/tutorials/packaging-projects/
http://mbp.sourceforge.net/index.html, tanggal akses 9 Agustus 2014, jam 13.10 WIB.

Anda mungkin juga menyukai