C. Hƣớng phát triển của đề tài:
2. Mã nguồn cài đặt thuận toán leo đồi cơ bản
package com.search.algorithm;
publicclass LeoDoi extends Library {
publicstaticvoid main(String[] args) {
LeoDoi obj = new LeoDoi(); Node a13 = new Node(); a13.nodeId = 13;
Node a12 = new Node(); a12.nodeId = 12;
Node a11 = new Node(); a11.nodeId = 11;
Node a10 = new Node(); a10.nodeId = 10;
Node a9 = new Node(); a9.nodeId = 9;
Node a8 = new Node(); a8.nodeId = 8;
Node a7 = new Node(); a7.nodeId = 7;
Node a6 = new Node(); a6.nodeId = 6;
Node a5 = new Node(); a5.nodeId = 5;
Node a4 = new Node(); a4.nodeId = 4;
Node a3 = new Node(); a3.nodeId = 3;
Node a2 = new Node(); a2.nodeId = 2;
Node a1 = new Node(); a1.nodeId = 1;
Node a0 = new Node(); a0.nodeId = 0; obj.addSubgoal(a1); obj.addSubgoal(a3); obj.addSubgoal(a6); obj.addSubgoal(a7); obj.addSubgoal(a9); obj.addSubgoal(a11); obj.addSubgoal(a12);
System.out.print("Danh sach subgoal ban dau:"); for(inti = 0; i<obj.SUBGOAL.size(); i++){
System.out.print(obj.SUBGOAL.get(i).nodeId); if(i!=obj.SUBGOAL.size()-1) System.out.print("--"); } obj.NodePass.add(a0); intstop = 1; // thuchienvong lap do {
inta = (int )(Math.random() * 50 + 1); intb = (int )(Math.random() * 50 + 1); intc = (int )(Math.random() * 50 + 1); double[] arrRandom = { a, b, c };
doublecostCS = obj.costFinalFnij(arrRandom);
System.out.print(" 3 so dau tien:"+a+"--"+b+"--"+c+"--->chi phi:"+costCS);
// chay ham pathTree de lay raduongdicua arrRandom obj.NodePass.clear();
System.out.print("\node pass sau khi xoa:"); for (inti = 0; i<obj.NodePass.size(); i++) { System.out.print(obj.NodePass.get(i).nodeId); if(i!=obj.NodePass.size()-1)
System.out.print("--"); }
obj.pathTree(arrRandom, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12);
System.out.print("\n Cac nut ma {"
+ arrRandom[0] + "," + arrRandom[1] + "." + arrRandom[2] + "} di qua la: ");
for (inti = 0; i<obj.NodePass.size(); i++) { System.out.print(obj.NodePass.get(i).nodeId); if(i!=obj.NodePass.size()-1)
System.out.print("--"); }
//duyetdanhsach subgoal xemneu nut cuoicungcuaduongdidicotrong subgoal
//thixoakhoi subgoal va them vao SAVE
for (inti = 0; i<obj.SUBGOAL.size(); i++) {
if (obj.SUBGOAL.get(i).nodeId == obj.NodePass.get(obj.NodePass .size() - 1).nodeId) {
obj.SUBGOAL.remove(obj.SUBGOAL.get(i)); obj.addSave(arrRandom, stop);
} }
System.out.print("\n Subgoal sau khi xoa:"); for (inti = 0; i<obj.SUBGOAL.size(); i++) { System.out.print(obj.SUBGOAL.get(i).nodeId); if(i!=obj.SUBGOAL.size()-1) System.out.print("--"); } obj.createNeighbour(arrRandom); doublecostneighbour = 0f;
System.out.print("\n Neighbour size: " + obj.neighbour.size() + " data ");
for (inti = 0; i<obj.neighbour.size(); i++) {
System.out.print("{" + obj.neighbour.get(i).arr[0] + "," + obj.neighbour.get(i).arr[1] + ","
+ obj.neighbour.get(i).arr[2] + "}"); }
// kiemtraxem cost neighbournhohon cost csthithuchien for (inti = 0; i<obj.neighbour.size(); i++) {
costneighbour = obj.costFinalFnij(obj.neighbour.get(i).arr); if (costneighbour<costCS) {
System.out.print("\n Hang xom co chi phi nho hon {" + obj.neighbour.get(i).arr[0] + ","
+ obj.neighbour.get(i).arr[1] + ","
+ obj.neighbour.get(i).arr[2] + "}---> voi chi phi:"+costneighbour);
obj.NodePass.clear();
System.out.print("\node pass sau khi xoa:");
for (intiiii = 0; iiii<obj.NodePass.size(); iiii++) { System.out.print(obj.NodePass.get(iiii).nodeId); if(iiii!=obj.NodePass.size()-1)
System.out.print("--"); }
obj.pathTree(obj.neighbour.get(i).arr, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12);
System.out.print("\n Cac nut di qua la: "); for (intii = 0; ii<obj.NodePass.size(); ii++) { System.out.print(obj.NodePass.get(ii).nodeId); if(ii!=obj.NodePass.size()-1)
System.out.print("--"); }
for (intiii = 0; iii<obj.SUBGOAL.size(); iii++) { if (obj.SUBGOAL.get(iii).nodeId == obj.NodePass .get(obj.NodePass.size() - 1).nodeId) { obj.SUBGOAL.remove(obj.SUBGOAL.get(iii)); obj.addSave(obj.neighbour.get(i).arr, stop); } }
System.out.print("\n Subgoal sau khi xoa:"); for (intiiii = 0; iiii<obj.SUBGOAL.size(); iiii++) { System.out.print(obj.SUBGOAL.get(iiii).nodeId); if(iiii!=obj.SUBGOAL.size()-1) System.out.print("--"); } } }
System.out.print("\n SAVE sau vong lap thu "+stop); for (inti = 0; i<obj.SAVE.size(); i++)
System.out.print("{" + obj.SAVE.get(i).arr[0] + ","
+ obj.SAVE.get(i).arr[1] + "," + obj.SAVE.get(i).arr[2] + "}");
obj.neighbour.clear(); stop++;
} while (stop<= obj.MAX&&obj.SUBGOAL.size()>0); //in raketquakiemnghiem
System.out.print("\nSUBGOAL size:" + obj.SUBGOAL.size() + " - data:");
for (inti = 0; i<obj.SUBGOAL.size(); i++){ System.out.print(obj.SUBGOAL.get(i).nodeId); if(i!=obj.SUBGOAL.size()-1)
System.out.print("--"); }
System.out.print("\nSAVE size:" + obj.SAVE.size() + " - data:"); for (inti = 0; i<obj.SAVE.size(); i++)
System.out.print("{" + obj.SAVE.get(i).arr[0] + ","
+ obj.SAVE.get(i).arr[1] + "," + obj.SAVE.get(i).arr[2] + "}-" + obj.SAVE.get(i).cost);
} }