A. Vektor dan Skalar I. PENDAHULUAN. B. Proyeksi Vektor II. DASAR TEORI

dokumen-dokumen yang mirip
Aplikasi Aljabar Geometri dalam Menentukan Volume Parallelepiped Beserta Penurunan ke Rumus Umum dengan Memanfaatkan Sifat Aljabar Vektor

Aplikasi Aljabar Vektor bagi Pengembang Game (Game Developer)

Strategi Permainan Menggambar Tanpa Mengangkat Pena

Matriks Sebagai Representasi Orientasi Objek 3D

Penerapan Pewarnaan Graf dalam Alat Pemberi Isyarat Lalu Lintas

Pemanfaatan Permodelan Ruang Vektor untuk Pengecekan Kemiripan

Ilustrasi Penggunaan Quaternion untuk Penanggulangan Gimbal Lock

I. PENDAHULUAN. 1.1 Permainan Rush Hour

Penerapan strategi runut-balik dalam penyelesaian permainan puzzle geser

Perbandingan Algoritma Depth-First Search dan Algoritma Hunt-and-Kill dalam Pembuatan Labirin

Aplikasi Shortest Path dalam Strategy Game Mount & Blade: Warband

Penggunaan Bilangan Kompleks dalam Pemrosesan Signal

Percobaan Perancangan Fungsi Pembangkit Bilangan Acak Semu serta Analisisnya

Penerapan Operasi Matriks dalam Kriptografi

Penggunaan Algoritma Pathfinding pada Game

Penerapan Sistem Persamaan Lanjar dalam Penyetaraan Reaksi Kimia

Geometri pada Bidang, Vektor

Penggunaan Pohon Biner dalam Binary Space Partition untuk Membuat Dungeon Game Roguelike RPG

Penerapan Matriks dalam Kriptografi

Perhitungan Nilai Golden Ratio dengan Beberapa Algoritma Solusi Persamaan Nirlanjar

Implementasi Vektor dalam Penyelesaian Car Travelling at The Speed of Light

Aplikasi Aljabar Vektor dalam Algoritma Page Rank

Penggunaan Transformasi Matriks dalam Enkripsi dan Dekripsi

Aplikasi Algoritma MiniMax pada Beberapa Permainan Papan

I. PENDAHULUAN. Gambar 1. Contoh-contoh graf

Penerapan Algoritma A-star (A*) Untuk Menyelesaikan Masalah Maze

Penerapan Program Dinamis Pada Sistem Navigasi Otomotif

Aplikasi Pewarnaan Graf Pada Pengaturan Warna Lampu Lalu Lintas

Aplikasi Interpolasi Polinom dalam Tipografi

I. PENDAHULUAN. Gambar 1: Graf sederhana (darkrabbitblog.blogspot.com )

Pencarian Lintasan Terpendek Pada Aplikasi Navigasi Menggunakan Algoritma A*

Penghematan BBM pada Bisnis Antar-Jemput dengan Algoritma Branch and Bound

Program Studi Teknik Mesin S1

Aplikasi Algoritma Traversal Dalam Binary Space Partitioning

Penerapan Algoritma Knuth Morris Pratt dalam Aplikasi Penerjemah Teks

Penerapan Algoritma Greedy dalam Penyetokan Barang

Penerapan Pohon dengan Algoritma Branch and Bound dalam Menyelesaikan N-Queen Problem

Aplikasi Teori Graf dalam Penggunaan Cairan Pendingin pada Proses Manufaktur

Pengantar Teknologi dan Aplikasi Elektromagnetik. Dr. Ramadoni Syahputra Jurusan Teknik Elektro FT UMY

Penyelesaian Five Coins Puzzle dan Penghitungan Worst-case Time dengan Pembuatan Pohon Keputusan

Representasi Matriks dan Transformasi Lanjar dalam Gerakan Contra Dance

Menentukan Titik Evakuasi Selanjutnya bagi Sekelompok Regu Tim SAR dengan Algoritma Branch and Bound

Pemanfaatan Vektor pada Permainan Super Mario Bros

Menentukan Arah Pukulan Terbaik dalam Pertandingan Bulutangkis Kategori Tunggal dengan Teori Graf Terbalik

Matematika II : Vektor. Dadang Amir Hamzah

Mencari Solusi Persamaan Rekursif Bilangan Catalan dengan Prinsip-prinsip Kombinatorial

Keunggulan Penyelesaian Persamaan Linear dengan Metode Dekomposisi LU dalam Komputerisasi

Penyelesaian Teka-Teki Matematika Persegi Ajaib Menggunakan Aljabar Lanjar

Implementasi Pohon Keputusan untuk Membangun Jalan Cerita pada Game Engine Unity

Penerapan Teori Graf dalam Game Bertipe Real Time Strategy (RTS)

Penerapan Matriks dalam Analisis Sektor Perekonomian Indonesia

Penerapan Algoritma Runut-balik pada Permainan Math Maze

Implementasi Graf dalam Penentuan Rute Terpendek pada Moving Object

Aplikasi OBE Untuk Mengurangi Kompleksitas Algoritma Program Penghitung Determinan Matriks Persegi

Algoritma Prim sebagai Maze Generation Algorithm

Peluang Mendapatkan Bonus Dari Sebuah Game Menggunakan Distribusi Multinomial

Penyelesaian SPL dalam Rangkaian Listrik

Penerapan Gaussian Filter pada Edge Detection

Pencarian Solusi Permainan Pipe Puzzle Menggunakan Algoritma Backtrack

Aplikasi Matematika Diskrit dalam Permainan Nonogram

Implementasi Struktur Data Rope menggunakan Binary Tree dan Aplikasinya dalam Pengolahan Teks Sangat Panjang

Analisis Vektor. Ramadoni Syahputra Jurusan Teknik Elektro FT UMY

Penerapan Algoritma Prim dan Kruskal Acak dalam Pembuatan Labirin

Penerapan Logika dan Peluang dalam Permainan Minesweeper

Penerapan Pohon dan Modulo untuk Menentukan Akor Triad

Pengkajian Metode dan Implementasi AES

Branch and Bound untuk Rute Terpendek Tur Pengenalan Labtek V Gedung Benny Subianto Chita Najmi Nabila /

Menyelesaikan Topological Sort Menggunakan Directed Acyclic Graph

Aplikasi Pohon dan Graf dalam Kaderisasi

Penerapan TSP pada Penentuan Rute Wahana dalam Taman Rekreasi

Menyelesaikan Permainan Wordament Menggunakan Algoritma Backtracking

Pengaplikasian Graf Planar pada Analisis Mesh

Penerapan Algoritma Greedy dalam Permainan Tetris

Kasus Perempatan Jalan

Optimalisasi Susunan Tempat Duduk Kereta Api Menggunakan Algoritma Greedy dan Program Dinamis

Menentukan Susunan Pengambil Tendangan Penalti dalam Skema Adu Penalti pada Pertandingan Sepak Bola dengan Algoritma Branch and Bound

Penggunaan Pohon Huffman Sebagai Sarana Kompresi Lossless Data

Penggunaan Teori Graf dan Pohon untuk Memodelkan Game bertipe RPG

Algoritma A* Memanfaatkan Navigation Meshes dalam 3 Dimensional Pathfinding

Penerapan Teknik Binary Search Tree Sebagai Alternatif Penyimpanan Data

Pemanfaatan Matriks dalam Penyeimbangan Persamaan Reaksi Kimia

Penerapan Integrasi Numerik pada Medan Magnet karena Arus Listrik

Aplikasi Aljabar Lanjar pada Teori Graf dalam Menentukan Dominasi Anggota UATM ITB

Penerapan Graf pada Robot Micromouse

Penerapan Bilangan Kompleks pada Rangkaian RLC

Pemanfaatan Pohon Biner dalam Pencarian Nama Pengguna pada Situs Jejaring Sosial

Penerapan Travelling Salesman Problem dalam Penentuan Rute Pesawat

Transformasi Linier dalam Metode Enkripsi Hill- Cipher

PERANCANGAN ALGORITMA KRIPTOGRAFI KUNCI SIMETRI DENGAN MENGGUNAKAN JARINGAN SARAF TIRUAN

Penerapan Algoritma Greedy dalam Pembuatan Artificial Intelligence Permainan Reversi

Penerapan Pewarnaan Graf dalam Perancangan Lalu Lintas Udara

Penerapan Pohon Keputusan dalam Pengambilan Keputusan Terbaik dibidang Pemasaran Produk

Vektor Ruang 2D dan 3D

Aplikasi Graf dalam Rute Pengiriman Barang

Algoritma Brute Force pada Fluid Particle Engine

Penerapan Algoritma Pencocokan String Boyer-Moore untuk Keamanan Komputer

Algoritma Puzzle Pencarian Kata

Pemodelan Game Theory untuk Mengatasi Kemacetan

Aplikasi Algoritma Greedy pada Optimasi Pelaksanaan Misi dalam Permainan Assassins Creed : Revelations

Penerapan Aljabar Vektor pada GPS (Global Positioning System)

Transkripsi:

Penggunaan Medan Vektor dalam Menghindari Tabrakan M. Isham Azmansyah F. 13514014 Program Studi Teknik Informatika Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung, Jl. Ganesha 10 Bandung 40132, Indonesia i@adimaja.com Abstrak Menghindari tabrakan adalah salah satu hal yang paling sering dilakukan. Makalah ini menjelaskan cara menghindari tabrakan dengan memanfaatkan sifat vektor dan medan vektor. Makalah ini juga menunjukkan implementasi sederhana algoritma ini dalam bahasa Javascript. A. Vektor dan Skalar Kata kunci vektor, AI, gerakan, medan vektor. I. PENDAHULUAN Salah satu hal yang paling sering dilakukan oleh AI dalam sebuah game, simulasi, atau bahkan pada robot di dunia nyata adalah menghindari tabrakan. Menghindari tabrakan dapat dilakukan dengan menentukan arah gerak berdasarkan kondisi lingkungan sekitar. Untuk menentukan arah gerak, dapat digunakan beberapa cara. Salah satu cara yang mungkin dilakukan adalah dengan menggunakan algoritma pathfinding. Namun, algoritma pathfinding biasanya harus digunakan pada ruangan yang memiliki struktur yang diskrit, seperti graf atau grid, sedangkan ruangan di kebanyakan game, simulasi, atau di dunia nyata bersifat kontigu. Algoritma pathfinding masih bisa digunakan dengan membagi ruang kontigu menjadi sebuah grid, namun pendekatan ini bisa menjadi mahal dalam hal komputasi. Cara lain yang bisa dilakukan adalah dengan melihat ke depan dan menghitung besar pembelokan yang diperlukan. Namun, cara ini akan sulit digunakan jika ada beberapa rintangan yang berdekatan. Makalah ini akan membahas cara lain untuk menghindari tabrakan yang memanfaatkan medan vektor dan sifat vektor. Cara ini dapat dilakukan pada ruang yang kontigu, memperhitungkan keberadaan banyak rintangan, dan cukup murah dalam hal komputasi karena hanya memerlukan beberapa operasi matematika yang bisa dihitung dengan cepat oleh komputer. Gambar 1: Ilustrasi vektor. Sumber: https://en.wikipedia.org/wiki/image:plane_cartesian_vector.png Vektor adalah sebuah objek yang memiliki besar dan arah. Skalar adalah objek yang hanya memiliki besar. Vektor dapat digambarkan sebagai gabungan beberapa skalar sesuai dimensi vektor tersebut. Pada sebuah vektor dapat dilakukan berbagai operator, baik dengan vektor lain ataupun dengan skalar. Sebuah vektor dapat ditambah atau dikurang dengan vektor lain. Sebuah vektor dapat dikalikan dengan skalar untuk mengubah besarnya. Namun, mengalikan sebuah vektor dengan vektor lain cukup rumit. Salah satu cara untuk mengalikan dua vektor adalah dot product. Operasi ini menghasilkan skalar, dan bisa dilakukan dengan mengalikan komponen-komponen kedua vektor dan menjumlahkan hasilnya. B. Proyeksi Vektor II. DASAR TEORI Algoritma ini menggunakan beberapa konsep dalam aljabar vektor. Gambar 2. Ilustrasi proyeksi vektor. Sumber: https://commons.wikimedia.org/wiki/file:projection_and_rejection.png

Sebuah vektor dapat diproyeksikan ke vektor lain. Hal ini dapat dilakukan melalui rumus berikut. C. Medan Vektor Gambar 3: Ilustrasi medan vektor. Sumber: https://commons.wikimedia.org/wiki/file:vectorfield.svg Sebuah medan vektor adalah penempatan sebuah vektor ke setiap titik dalam sebuah ruang. Medan vektor bisa didefinisikan dengan sebuah fungsi yang memetakan posisi dalam ruang ke vektor. Bila sebuah medan vektor dijumlahkan dengan medan vektor yang lain, hasilnya adalah penjumlahan dua vektor pada titik yang sama. Medan vektor sering digunakan dalam fisika, seperti medan gravitasi dan medan magnet. A. Deskripsi III. ANALISIS Sifat medan vektor dapat dimanfaatkan untuk membuat algoritma menghindari tabrakan. Prinsip algoritma ini sangat sederhana. Semua hambatan yang ada dianggap menghasilkan sebuah medan vektor yang arahnya tegak lurus dengan arah gerak. Semua medan vektor tersebut dijumlahkan. Ambil nilai vektor gabungan di titik tempat kendaraan. Nilai ini dijumlahkan dengan vektor arah tujuan. Arah dari vektor hasil ini merupakan arah gerak selanjutnya. Gambar 4: Ilustrasi penggunaan medan vektor untuk menghindari tabrakan. Pada gambar 4, ditunjukkan medan vektor yang dihasilkan oleh hambatan. Arah gerak kendaraan ini adalah ke atas kanan. Menurut algoritma ini, kendaraan ini harus belok ke kiri untuk menghindari tabrakan. Algoritma ini akan menghasilkan gerakan yang terlihat halus dan berusaha menjauhi rintangan. Namun, gerakan yang dihasilkan algoritma ini juga mampu melewati tempat yang cukup sempit, seperti yang ditunjukkan pada gambar 5.

Gambar 5: Jalan yang ditempuh menggunakan algoritma ini. Dapat dilihat bahwa kendaraan akan memilih jalur yang menempatkan hambatan pada jarak yang sama. Hal ini disebabkan medan vektor gabungan yang akan bernilai nol di posisi tersebut, karena medan vektor kedua hambatan akan saling meniadakan. B. Fungsi Medan Vektor Fungsi medan vektor yang digunakan akan mempengaruhi sifat algoritma ini. Untuk makalah ini, digunakan fungsi yang bergantung pada jarak kendaraan dengan hambatan secara kuadrat. Semakin jauh suatu kendaraan dengan hambatan, semakin kecil besar medan vektornya. Konstanta yang digunakan juga akan berpengaruh. Bila besaran medan vektor relatif kecil dibandingkan dengan besaran vektor arah tujuan, jalan yang dihasilkan tidak akan menghindari hambatan. Sebaliknya, jika besaran medan vektor terlalu besar, kendaraan tidak akan bisa bergerak menuju tujuannya. C. Kelebihan Algoritma ini cukup sederhana, sehingga cepat dihitung oleh komputer. Algoritma ini juga tidak terlalu memerlukan ketepatan perhitungan, sehingga implementasi operasi matematikanya bisa mementingkan kecepatan dibandingkan ketepatan. Algoritma ini mudah menangani hambatan yang bergerak, seperti yang ditunjukkan pada gambar 6. Gambar 6: Karakter-karakter lain dianggap sebagai hambatan, dan dihindari.

D. Kekurangan Algoritma ini akan melakukan penyesuaian arah meskipun tidak ada hambatan di depannya, sehingga menghasilkan jalan yang tidak efisien seperti yang ditunjukkan pada gambar 7. Hal ini disebabkan oleh nilai medan vektor yang tidak pernah nol. Hal ini bisa ditangani dengan menetapkan nilai nol pada fungsi medan vektor dalam kondisi tertentu, misalnya ketika jarak hambatan melebihi suatu batas tertentu. Gambar 7: Jalan yang berbelok-belok meskipun tidak ada hambatan. Algoritma ini bukan algoritma pathfinding, sehingga algoritma ini tidak bisa menangani hambatan yang rumit, misalnya sebuah maze. Hal ini bisa ditangani dengan menggabungkan algoritma ini dengan algoritma pathfinding. Salah satu cara menggabungkan algoritma ini dengan algoritma pathfinding ditunjukkan pada gambar 8. Pada gambar tersebut, ruangan yang rumit dibagi menjadi beberapa ruangan kecil yang cukup sederhana. Algoritma pathfinding digunakan untuk mencari jalan menuju ruangan yang berisi titik tujuan. Algoritma menghindari tabrakan digunakan untuk menggerakkan kendaraan menuju titik pertemuan antar ruangan kecil. Gambar 8: Ilustrasi penggabungan algoritma menghindari tabrakan dengan algoritma pathfinding.

IV. PENGGUNAAN Dalam makalah ini, digunakan gambar-gambar dari program yang mengimplementasikan algoritma ini. Program tersebut bisa diakses secara online di tautan https://misc.adimaja.com/algeo/. Algoritma ini juga digunakan dalam beberapa game, salah satunya adalah Supreme Commander 2, yang memerlukan algoritma untuk menentukan gerakan ratusan kendaraan yang bergerak pada arah yang berbeda. Cara yang mirip juga digunakan pada model gerakan orang banyak dalam suatu penelitian oleh University of Washington. V. UCAPAN TERIMA KASIH Penulis memanjatkan puji dan syukur kepada Allah SWT atas segala rahmatnya sehingga makalah ini dapat diselesaikan. Penulis juga mengucapkan terima kasih kepada dosen pengajar Aljabar Geometri, Bapak Judhi Santoso dan Bapak Rinaldi Munir untuk semua pengetahuan yang telah diberikan mengenai semua aspek Aljabar Geometri, dan khususnya tentang teori Aljabar Vektor yang mendasari makalah ini. VI. DAFTAR PUSTAKA [1] Sutherland, Alexander. Vector Field Obstacle Avoidance. Diakses 16 Desember 2015. http://buildnewgames.com/vector-fieldcollision-avoidance/ [2] Treuille et al. Continuum Crowds. University of Washington. 2006. [3] Taylor et al. Supreme Commander 2 - Flowfield. Diakses 16 Desember 2015. https://www.youtube.com/watch?v=ja2epda-rkm PERNYATAAN Dengan ini saya menyatakan bahwa makalah yang saya tulis ini adalah tulisan saya sendiri, bukan saduran, atau terjemahan dari makalah orang lain, dan bukan plagiasi. Bandung, 16 Desember 2015 M. Isham Azmansyah F. 13514014