Implementasi Algoritma Semut IMPLEMENTASI SISTEM

4.7 Implementasi Algoritma Semut

Pada simulasi algoritma semut pada aplikasi ini, dilakukan optimasi terhadap teori dan perhitungan dasar algoritma semut. Optimasi yang dilakukan berdasarkan perhitungan dan iterasi yang ada pada landasan teori adalah sebagai berikut : 1. Variabel yang tidak digunakan adalah α tetapan pengendali intensitas jejak semut dan ß tetapan pengendali visibilitas. Kedua variabel ini tidak digunakan karena berdasarkan riset yang telah dilakukan sebelumnya untuk studi kasus penentuan jarak terdekat, nilai α dan ß bisa dihilangkan. 2. Rumus-rumus yang digunakan adalah sebagai berikut : ij =1d ij T ij = T ij 1- ρ P ij = ∑ T ij + ij REF Ref = rand ∑ ij ∆ Tij = Tij – Q-ρ Sedangkan penerapannya dalam aplikasi terdapat pada potongan source code berikut ini : public void moveOneStepSpace space { gatherAroundInfospace; if seeTargetAround { moveTotargetDirection; switchStateAtTarget; } else { moveTonextStepDirection; ifreleasePheromone{ releasePheromoneAtLocation; ifloseMyWay switchStateAtLost; } } } Langkah-langkah yang dilakukan adalah sebagai berikut : 1. Mengumpulkan informasi tentang keadaan sekitar. private void gatherAroundInfoSpace space { for Direction d : Direction.values { aroundInfo.put d, SpacePointInfo space.getSpacePoint locationX + d.dX, locationY + d.dY ; } } 2. Melihat target di sekitarnya, ada makanan ataukah tidak. a. Jika melihat makanan, private ListDirection aroundTarget = new ArrayListDirection; private boolean seeTargetAround { senseAroundTarget; return aroundTarget.size 0; } private void senseAroundTarget { aroundTarget.clear; for Direction d : Direction.values { ifaroundInfo.getd.landform == state.targetLandform aroundTarget.addd; } } Jalan ke arah makanan. private void moveToDirection d { headDirection = d; locationX += d.dX; locationY += d.dY; locationInfo = aroundInfo.getd; } Tentukan target. private void switchStateAtTarget { switch state { case FindFood: case ReturnHomeLost: state = State.ReturnHome; break; case ReturnHome: case FindFoodLost: state = State.FindFood; break; } b. Jika tidak melihat makanan, teruskan langkah selanjutnya. private Direction nextStepDirection { senseAroundAttraction; return randomChooseOneWithWeightingaroundAttraction; } Sebar pheromone sambil terus melangkah. private void releasePheromoneAtLocation { locationInfo.putPheromone state.releasePheromone, pheromoneReleaseQuantity ; decreasePheromoneReleaseQuantity; } Jika sudah kehilangan arah, kembali ke rumah. private void switchStateAtLost{ switch state { case FindFood: state = State.FindFoodLost; break; case ReturnHome: state = State.ReturnHomeLost; break; }

4.8 Implementasi Antarmuka