【发布时间】:2018-04-17 14:37:31
【问题描述】:
我目前正在开发一个答案集编程问题,其中包括一个机器人,该机器人需要覆盖一个房间以避免障碍物并在所有房间都被覆盖时到达目标点。 我的想法是将房间地图转换为 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;
}
}
}
}
提前谢谢你。
【问题讨论】:
-
你有一个到目前为止所做的例子吗?
-
@ApoloRadomer 我编辑了从地图生成命题的重要功能
标签: robotics answer-set-programming clingo