Taksi Otomatis

Figure 1
Sebuah agent taksi otomatis yang menerima penumpang dan mengantarkannya ke tujuan.
Performance measure : sampai tujuan, tidak melanggar aturan lalu lintas, perjalanan nyaman, hemat bensin.
Environment : jalan, lalu lintas, pejalan kaki, pelanggan.
Actuators : arah stir, gas, rem, klakson, sinyal kiri atau kanan.
Sensors : video, speedometer, GPS, keyboard.

Medical Diagnosis System

Figure 2
Sebuah agent Medical diagnosis system yang mendiagnosa pasien secara otomatis.
Performance measure : pasien sembuh, biaya murah, tidak menyalahi hukum.
Environment : pasien, rumah sakit, suster, dokter.
Actuators : layar monitor (pertanyaan, tes, diagnosa, treatment, petunjuk).
Sensors : keyboard (masukan gejala penyakit, jawaban pasien).

Robot Pabrik Penjamin Mutu

Figure 3

Sebuah robot yang melakukan pemisahan komponen yang bermutu tinggi pada ban berjalan ke dalam kotak berbeda.
Performance measure : prosentase jumlah komponen yang diletakkan pada kotak yang benar. Environment : ban berjalan, komponen yang diuji, kotak.
Actuators : gerak lengan dan tangan robot.
Sensors : kamera, sensor fisik.

Interactive English Tutor

Figure 4
Sebuah agent tutor yang memberikan latihan english secara interaktif.
Performance measure : nilai skor maksimal.
Environment : para siswa.
Actuators : layar monitor (latihan, saran koreksi).
Sensors : keyboard.


Referensi

Google Images.
https://www.kisspng.com/png-medical-diagnosis-system-remote-diagnostics-health-6096457/
http://columbiaokura.com/products/robotic-palletizers/
https://www.edsurge.com/news/2018-09-04-flexible-interactive-and-fun-why-this-teacher-made-the-jump-to-tutoring-esl-online
Slide Presentasi. Chastine Fatichah. IT ITS. 30 oktober 2018. 




[youtube featured="1" src="rsdlYeqDFKI"/]
[youtube featured="1" src="F4sFJxxeKIs"/]
[youtube featured="1" src="is7AHOBaDfs"/]
[youtube featured="1" src="N_76FN7vraE"/]

Definisi

Sebuah agen adalah segala sesuatu yang dapat merasakan lingkungannya melalui peralatan sensorsensor, bertindak sesuai dengan lingkungannya dan dengan mengunakan peralatan penggeraknya /actuator (Russel dan Norvig). 

Figure
Sebuah agen adalah sebuah sistem komputer yang berada dalam suatu lingkungan dan memiliki kemampuan bertindak secara otonomos didalam situasi lingkungan tersebut sesuai dengan sasaran yang dirancang (Woold-ridge). 

Konsep

Sebuah agen selalu mencoba untuk mengoptimasikan sebuah nilai ukuran kinerja yang disebut agen memiliki rasional (rational agent). Sebuah agen adalah rasional jika dapat memilih kemungkinan untuk bertindak yang terbaik setiap saat, menurut apa yang ia ketahui mengenai lingkungannya pada saat itu. Untuk setiap deretan persepsi yang mungkin, sebuah agen rasional hendaklah memilih satu tindakan yang diharapkan memaksimalkan ukuran kemampuannya, dengan adanya bukti yang diberikan oleh deretan persepsi dan apapun pengetahuan terpasang yang dimiliki agen itu.

Rational Agent

Jadi, agen rasional diharapkan dapat melakukan atau memberi tindakan yang benar. Tindakan yang benar adalah tindakan yang menyebabkan agen mencapai tingkat yang paling berhasil. (Stuart Russel, Peter Norvig, 2003). Ukuran kinerja (dari rational agent) biasanya didefinisikan oleh perancang agen dan merefleksikan apa yang diharapkan mampu dilakukan dari agen tersebut. Sebuah agen berbasis rasional juga disebut sebuah agen cerdas. Dari perspektif ini, bidang kecerdasan buatan dapat dipandang sebagai studi mengenai prinsip-prinsip dan perancangan dari rasio agen-agen buatan. 

Perilaku Agent

Agent rasional : agent yang mengerjakan sesuatu yang benar. Performance measure : bagaimana keberhasilan suatu agent. Diperlukan suatu standard untuk mengukur performansi, dengan mengamati kondisi yang terjadi. 

Karakteristik Agen 

Sebuah agen memiliki karakteristik yang menggambarkan kemampuan dari agen itu sendiri, Semakin banyak karakteristik yang dimiliki oleh suatu agen, maka akan semakin cerdas agen tersebut. 

Ada beberapa karakteristik dari agen : 

1. Autonomous 

kemampuan untuk melakukan tugasnya dan mengambil keputusan secara mandiri tanpa adanya intervensi dari luar seperti agen lain, manusia ataupun entitas lain. 

2. Reaktif 

kemampuan agen untuk cepat beradaptasi terhadap perubahan informasi yang ada pada lingkungannya.

3. Proaktif 

kemampuan yang berorientasi pada tujuan dengan cara selalu mengambil inisiatif untuk mencapai tujuan.

4. Fleksibel 

agen harus mempunyai banyak cara dalam mencapai tujuannya.

5. Robust 

agen harus dapat kembali ke kondisi semula jika mengalami kegagalan dalam hal tindakan ataupun dalam menjalankan plan.

6. Rasional 

kemampuan untuk bertindak sesuai dengan tugas dan pengetahuannya dengan tidak melakukan hal yang dapat menimbulkan konflik tindakan.  

7. Social 

dalam melakukan tugasnya, agen memiliki kemampuan untuk berkomunikasi dan berkoordinasi baik dengan manusia maupun dengan agen lain.

8. Situated 

 agen harus berada dan berjalan di lingkungan tertentu.

Tipe Agen

Untuk pembuatan agen cerdas, ada lima tipe agen yang dapat mengimplementasikan pemetaan dari kesan yang diterima ke tindakan yang akan dilakukan. 5 tipe agen tersebut adalah simple reflex agents, model-based reflex agents, goal-based reflex agents, utility-based reflex agents dan Learning agents. (Stuart Russel, Peter Norvig, 2003).

1. Simple Reflex Agents

Figure 1
Agen refleks sederhana merupakan agen yang paling sederhana karena dia hanya menerapkan teknik kondisi-aksi. Jadi, jika terjadi suatu kondisi tertentu maka agen akan secara sederhana memberikan aksi tertentu. Contoh : agen untuk pengendara taxi diberikan kondisi “jika mobil di depan melakukan pengereman” maka agen akan memberikan aksi “injak rem”.

2. Model-Based Reflex Agents

Figure 2
Agen refleks sederhana dapat melakukan tindakannya dengan baik jika lingkungan yang memberikan kesan tidak berubahubah. Misalkan untuk kasus agen pengendara taxi, agen tersebut hanya dapat menerima kesan dari mobil dengan model terbaru saja. Jika ada mobil dengan model lama, agen tersebut tidak dapat menerima kesannya sehingga agen tersebut tidak melakukan tindakan pengereman. Pada kasus ini, dibutuhkan agen refleks berbasis model yang dapat terus melakukan pelacakan terhadap lingkungan sehingga lingkungan dapat dikesan dengan baik.

Agen ini akan menambahkan suatu model tentang dunia yaitu pengetahuan tentang bagaimana dunianya bekerja. Jadi, agen refleks berbasis model ini menjaga keadaan dunianya menggunakan model internal kemudian memilih tindakan seperti agen refleks sederhana.

3. Goal-Based Agents

Figure 3
Pengetahuan agen akan keseluruhan keadaan pada lingkungan tidak selalu cukup. Suatu agen tertentu harus diberikan informasi tentang tujuan yang merupakan keadaan yang ingin dicapai oleh agen. Dengan demikian, agen akan bekerja hingga mencapai tujuannya. Pencarian dan perencanaan adalah dua deretan pekerjaan yang dilakukan untuk mencapai tujuan agen. Agen refleks berbasis tujuan ini menambahkan informasi tentang tujuan tersebut.

4. Utility-Based Agents

Figure 4
Pencapaian tujuan pada agen tidak cukup untuk menghasilkan agen dengan tingkah laku berkualitas tinggi. Sebagai contoh untuk agen pengendara taxi, ada beberapa tindakan yang dapat dilakukan oleh agen sehingga dapat mencapai tempat tujuan, namun ada yang lebih cepat, lebih aman, atau lebih murah dari yang lainnya. Agen refleks berbasis tujuan tidak membedakan keadaan yang bagus dengan keadaan yang tidak bagus untuk agen. Pada agen refleks berbasis kegunaan ini memikirkan kondisi yang bagus untuk agen sehingga agen dapat melakukan tugasnya jauh lebih baik.

Walaupun untuk kasus tertentu, tidak mungkin agen dapat melakukan semuanya sekaligus. Misalnya untuk agen pengendara taxi, untuk pergi ke suatu tempat tujuan dengan lebih cepat, itu bertentangan dengan keadaan lebih aman. Karena untuk perjalanan taxi yang lebih cepat, tentu saja tingkat bahaya lebih tinggi dari pada perjalanan taxi yang santai.

5. Learning Agents 

Figure 5
Learning agents belajar dari pengalaman, meningkatkan kinerja bertanggung jawab untuk membuat perbaikan Elemen kinerja bertanggung jawab untuk memilih tindakan eksternal Kritikus memberikan umpan balik tentang bagaimana agen bekerja.

Referensi 

https://www.doc.ic.ac.uk/project/examples/2005/163/g0516334/index.html
Slide Presentasi. Iman Cholissodin. Agen cerdas. 30 oktober 2018.
Slide Presentasi. Dewi Liliana. IT PNJ. Agen cerdas. 30 oktober 2018.
Slide Presentasi. Chastine Fatichah. IT ITS. 30 oktober 2018.



[youtube featured="1" src="IK7l4ZLm55I"/]
[youtube featured="1" src="Aytf8DxatvM"/]


Program Java Membalikan kata string pada dasarnya bisa menggunkan reverse yaitu library pada java, tetapi disini kita menggunakan kondisi if jika kita memasukan sendiri kalimat atau kata lalu di balikan.

[code type="Java Membalikan String"]import java.util.Scanner;

public class balikkata {
   
    public static void main(String args[]){
       
        String katabener;
        String balikkata = "";
       
        Scanner input = new Scanner(System.in);
        System.out.print("Masukan Kata atau Kalimat : ");
        katabener = input.nextLine();
        System.out.println();
       
        for (int i = katabener.length() - 1; i >= 0; i--){
            balikkata += katabener.charAt(i);
        }
       
        System.out.println("Hasil kata yang dibalik : "+balikkata);
    }
}
[/code]

[left-side]


Sebuah Contoh Program Java dalam membuat menara hanoi, menara hanoi merupakan permainan yang dimana kita diharuskan memindahkan cakram dari tiang awal ke tiang tujuan dengan syarat besar ke kecil atau kecil ke besar.

[code type="Java Menara Hanoi"]import java.util.Scanner;

public class menarahanoi {
   
    static int move = 1;

    public static void main(String[] args) {
       
        Scanner input = new Scanner(System.in);
        System.out.print("Masukan Jumlah Cakram/Piringan : ");
        int Cakram = input.nextInt();
        System.out.println();
       
        menarahanoi (Cakram, 'A', 'C', 'B');}

    static void menarahanoi (int Cakram, char asal_tiang, char bantu_tiang, char tujuan_tiang){

    if (Cakram == 1) {
       
        System.out.println("Pindahkan Cakram 1 dari tiang "+ asal_tiang + " ke tiang "+ bantu_tiang);
        return;
        }
   
    menarahanoi(Cakram-1, asal_tiang, tujuan_tiang, bantu_tiang);
    System.out.println("Pindahkan Cakram "+Cakram+" dari tiang "+asal_tiang+" ke tiang "+bantu_tiang);
   
    menarahanoi(Cakram-1, tujuan_tiang, bantu_tiang, asal_tiang);
    }
}


[/code]

[left-side]

[right-side]




Dibawah ini saya berikan sebuah source code program menu garis berbasis OpenGL menggunakan bahasa pemogramman C++.


[code type="OpenGL C++"]
/*
 * Copyright (c) 2018 Wisnu Dwi Pamungkas. All rights reserved.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 * DEALINGS IN THE SOFTWARE.
 *
 * By Wisnu Dwi Pamungkas
 */

#include <iostream>
#include <windows.h>
#include <gl/glut.h>
#include <stdlib.h>
#include <cstdlib>
#include <conio.h>


using namespace std;

void vertikal()
{
    float yver, ytii, xkal;

    cout << "- Program OpenGl - Garis Vertikal - \n\n";
    cout << "       Ketentuan / Syarat : \n";
    cout << " 1. Nilai Y Awal (Y0) & Nilai X Tetap = 0\n";
    cout << " 2. Nilai Y Akhir (Y1) tidak boleh angka 0\n";
    cout << "\n";
    cout << "---> Masukan Nilai Y Awal  (Y0) : "; cin >> yver;
    cout << "---> Masukan Nilai Y Akhir (Y1) : "; cin >> ytii;
    cout << "---> Masukan Nilai X Tetap      : "; cin >> xkal;

    if (yver != 0 or xkal != 0)
    {
        cout << "\n 404...ERROR!!! Gambar Garis Vertikal tidak muncul";
        cout << "\n Dikarenakan...";
        cout << "\n Nilai Y Awal (Y0) atau Nilai X Tetap yang dimasukan tidak sesuai dengan syarat (tidak=0)!";
        cout << "\n Atau Nilai Y Akhir (Y1) = 0";
    }

    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(0.0, 0.0, 1.0);
    glBegin(GL_LINES);
    glVertex3f(xkal+0.5 , yver+0.5 , 0.0);
    glVertex3f(xkal+0.5 , ytii+0.5 , 0.0);
    glEnd();
    glFlush();
}

void horizontal()
{
    float xhori, xzon, ytal;

    cout << "- Program OpenGl - Garis Horizontal - \n\n";
    cout << "       Ketentuan / Syarat : \n";
    cout << " 1. Nilai X Awal  (X0) & Nilai Y Tetap = 0\n";
    cout << " 2. Nilai X Akhir (X1) tidak boleh angka 0\n";
    cout << "\n";
    cout << "---> Masukan Nilai X Awal  (X0) : "; cin >> xhori;
    cout << "---> Masukan Nilai X Akhir (X1) : "; cin >> xzon;
    cout << "---> Masukan Nilai Y Tetap      : "; cin >> ytal;

    if (xhori != 0 or ytal != 0)
    {
        cout << "\n 404...ERROR!!! Gambar Garis Horizontal tidak muncul";
        cout << "\n Dikarenakan...";
        cout << "\n Nilai X Awal (X0) atau Nilai Y Tetap yang dimasukan tidak sesuai dengan syarat (tidak=0)!";
        cout << "\n Atau Nilai X Akhir (X1) = 0";
    }

    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(1.0, 0.0, 1.0);
    glBegin(GL_LINES);
    glVertex3f(xhori+0.1 , ytal+0.1 , 0.0);
    glVertex3f(xzon+0.1 , ytal+0.1 , 0.0);
    glEnd();
    glFlush();
}

void diagonal()
{
    float xdii, yaaa, xgoo, ynal;

    cout << "- Program OpenGl - Garis Diagonal - \n\n";
    cout << "       Ketentuan / Syarat : \n";
    cout << " 1. Nilai X Awal  (X0) & Nilai Y Awal (Y0) = 0\n";
    cout << " 2. Nilai X Akhir (X1) & Nilai Y Akhir (Y1) tidak boleh angka 0\n";
    cout << "\n";
    cout << "---> Masukan Nilai X Awal  (X0) : "; cin >> xdii;
    cout << "---> Masukan Nilai Y Awal  (Y0) : "; cin >> yaaa;
    cout << "---> Masukan Nilai X Akhir (X1) : "; cin >> xgoo;
    cout << "---> Masukan Nilai Y Akhir (Y1) : "; cin >> ynal;

    if (xdii != 0 or yaaa != 0)
    {
        cout << "\n 404...ERROR!!! Gambar Garis Diagonal tidak muncul";
        cout << "\n Dikarenakan...";
        cout << "\n Nilai X Awal (X0) atau Nilai Y Awal (Y0) yang dimasukan tidak sesuai dengan syarat (tidak=0)!";
        cout << "\n Atau Nilai X Akhir (X1) atau Nilai Y Akhir (Y1) = 0";
    }

    glPushMatrix();
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(0.0, 0.0, 0.0);
    glBegin(GL_LINES);
    glVertex3f(xdii+0.5 , yaaa+0.5 , 0.0);
    glVertex3f(xgoo+0.5 , ynal+0.5 , 0.0);
    glPopMatrix();
    glEnd();
    glFlush();
}

void Initialize()
{
    glClearColor(0.5, 1.0, 0.0, 0.0);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);
}

int main(int iArgc, char** cppArgv)
{
    menu:
        int minput;

        cout << "\n\n";
        cout << "====== Menu Garis ====== \n";
        cout << "1. Garis Horizontal \n";
        cout << "2. Garis Vertikal \n";
        cout << "3. Garis Diagonal \n";
        cout << "4. Keluar dari program \n";
        cout << "Masukan Pilihan kamu [1...4] : "; cin >> minput;
        cout << "\n";
        glutInit(&iArgc, cppArgv);
        glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
        glutInitWindowSize(500, 500);
        glutInitWindowPosition(600, 200);
        glutCreateWindow("Program Garis OpenGL dengan C++");
        Initialize();

         switch(minput)
        {
        case 1:
            glutDisplayFunc(horizontal);
            glutMainLoop();

            return 0;

        case 2:
            glutDisplayFunc(vertikal);
            glutMainLoop();
            return 0;

        case 3:
            glutDisplayFunc(diagonal);
            glutMainLoop();
            return 0;

        case 4:
            cout << "Terima Kasih...";
            return 0;

        default: cout << "Menu Garis yang kamu pilih tidak tersedia, mohon pilih kembali...! \n";
        goto menu;
        }
}

[/code]

Program menu garis horizontal, vertikal, dan diagonal menggunakan library OpenGL

 

[tooltip url="https://drive.google.com/file/d/1pmcksVH9Ge_uEY_2t27SOZiaZhpEHn2N/view" title="Program Menu OpenGL Garis Horizontal, Vertikal Dan Diagonal Dengan Codeblocks C++ "]Klik link ini untuk file pdf atau lihat secara online seperti dibawah[/tooltip]

[media width="640" height="840"]https://drive.google.com/file/d/1pmcksVH9Ge_uEY_2t27SOZiaZhpEHn2N/preview[/media]

Wisnu Dwi Pamungkas

Wisnu Dwi Pamungkas {facebook#YOUR_SOCIAL_PROFILE_URL} {twitter#YOUR_SOCIAL_PROFILE_URL} {google#YOUR_SOCIAL_PROFILE_URL} {pinterest#YOUR_SOCIAL_PROFILE_URL} {youtube#YOUR_SOCIAL_PROFILE_URL} {instagram#YOUR_SOCIAL_PROFILE_URL}
Powered by Blogger.