예제 #1
0
파일: main.cpp 프로젝트: zorg24/AStar
int main() {
    struct FakeHeur{ int h(GridState a, GridState b) {return 0;}};
    GridEnvironment g("arena.map");
    GridState start {3,3};
    GridState goal {45,45};
    InefficientAStar<GridState, GridAction, GridEnvironment, FakeHeur> slowAS;
    slowAS.GetPath(g, start, goal);
}
예제 #2
0
int main() {
//	std::ofstream out("out.txt");
//	std::cout.rdbuf(out.rdbuf());
	srand(0);
	std::vector<GridAction > act;
	std::string filename = "lak303d.map";
	GridEnvironment g(filename);

	std::ifstream scen_file(filename + ".scen");
	std::string line = "";
	std::string skip = "";
	getline(scen_file, line);

	InefficientAStar<GridState, GridAction , GridEnvironment, DifferentialHeuristic> SlowAS;
	DifferentialHeuristic dh;
	dh.FurthestPivots(g, 10);

	DifferentialHeuristic dh2;
	dh2.RandomPivots(g, 10);


	while (getline(scen_file, line)) {
		std::stringstream ss(line);
		ss >> skip;
		ss >> skip;
		ss >> skip;
		ss >> skip;
		int startX, startY, goalX, goalY;
		ss >> startX;
		ss >> startY;
		ss >> goalX;
		ss >> goalY;
		ss >> skip;

		std::cout << "\nstart: " << startX << " " << startY << " goal: " << goalX << " " << goalY << std::endl;
		GridState start{ startX, startY };
		GridState goal{ goalX, goalY };;
		assert(g.valid(start.x,start.y));
		assert(g.valid(goal.x,goal.y));
		std::cout << "Farthest spaced:\n";
		auto time1 = std::chrono::system_clock::now();
		SlowAS.GetPath(g, start, goal, dh);
		std::cout << "time: " << std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now() - time1).count() << " ms\n";
		std::cout << "Random pivots:\n";
		time1 = std::chrono::system_clock::now();
		SlowAS.GetPath(g, start, goal, dh2);
		std::cout << "time: " << std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now() - time1).count() << " ms\n";
	}
}