我目前正在开发一个答案集编程问题,包括一个机器人,该机器人需要覆盖一个房间以避免障碍物并在所有房间都被覆盖时到达目标点。我的想法是将房间地图转换为 asp 谓词,以 room/3 的形式,作为参数:
- X:x 坐标
- Y:y 坐标
- V:房间内点的值,分别为0(初始点),1(覆盖点),2(障碍物),3(目标点)
程序必须满足的标准之一是覆盖值为 1 的每个点,这可以通过约束来实现,但我不知道如何对机器人运动进行建模。我的想法是使用 move/1 形式的谓词,向上、向下、向左或向右。
任何人都可以帮助我指导我如何建模这个问题吗?
void map_to_asp(std::ofstream& file,std::vector<std::vector<char>>& room)
{
std::cout << room.size() << "," << room[0].size() << std::endl;
for(int i = 0; i < room.size(); i++)
{
for(int j = 0;j < room[0].size(); j++)
{
switch(room[i][j])
{
case '@':
file << "initial(" << i+1 << "," << j+1 << ").\n";
break;
case '.':
file << "toClean(" << i+1 << "," << j+1 << ").\n";
break;
case '#':
file << "obstacle(" << i+1 << "," << j+1 << ").\n";
break;
case 'X':
file << "goal(" << i+1 << "," << j+1 << ").\n";
break;
}
}
}
}
先感谢您。