Prolog 关系学习:这个序言输出说明了什么?

Prolog 关系学习:这个序言输出说明了什么?,prolog,output,Prolog,Output,我需要在prolog数据集中查找关系。我有不同种类的列车,具有不同的功能,例如1号列车: has_car(rel_east1,car_11). has_car(rel_east1,car_12). has_car(rel_east1,car_13). infront(car_11,car_12). infront(car_12,car_13). size(car_11,long). size(car_12,long). size(car_13,short). shape(car_11,he

我需要在prolog数据集中查找关系。我有不同种类的列车,具有不同的功能,例如1号列车:

has_car(rel_east1,car_11).
has_car(rel_east1,car_12).
has_car(rel_east1,car_13).

infront(car_11,car_12).
infront(car_12,car_13).

size(car_11,long).
size(car_12,long).
size(car_13,short).

shape(car_11,hexagon).
shape(car_12,rectangle).
shape(car_13,hexagon).

load(car_11,rectangle).
load(car_12,circle).
load(car_13,triangle).
我有十列不同的火车。现在我使用了Metagol算法,该算法将学习不同列车内的不同关系。结果我得到了一个包含不同子句的列表。这是我的问题:我不理解分句之间的归纳步骤。例如:

relational(A):-has_car(A,B),relational_1(B).
relational_1(A):-relational_2(A,rectangle).
relational_2(A,B):-relational_3(A),shape(A,B).
relational_3(A):-infront(A,B),relational_4(B).
relational_4(A):-load(A,triangle).
我所知道的唯一一件事是,整个条款说:“有一列火车包含一辆长方形的汽车,这辆汽车在另一辆包含三角形的汽车前面。” 有人能给我解释一下密码吗?一行接一行?
例如,我不明白如何阅读第二行:“如果a与1之间存在关系,那么a与矩形之间也存在关系2”

我不是100%确定,但我认为关系谓词是metagol为您的学习任务“发明”的关系(谓词)。 由于命名发明的谓词是一项艰巨的任务(没有很好的解决方案),因此您可以获得这些类型的名称

例如,如果您在此处使用“亲属关系1”示例:

它通过学习
祖父母\u 1/2
来学习
祖父母/2
关系。我们人类称之为父母

所以
relational_4(A):-load(A,三角形)。
你可以称之为“承载三角形负载的汽车”。和
关系式_3(A):-前面(A,B),关系式_4(B)。
则是“车辆前面的车辆承载三角形负载”等

relational_4(A):-load(A,triangle).
如果一个对象A加载了一个三角形,那么A是关系型的 或 有一辆车的负载是三角形的

relational_3(A):-infront(A,B),relational_4(B).
如果一个对象A在对象B前面,而B是关系型_4,那么A是关系型_3 或 A车在B车前面,B车的负载为三角形

relational_2(A,B):-relational_3(A),shape(A,B).
如果A是关系型_3且具有形状B,则A是关系型_2 B。 或 汽车A是另一辆汽车前面的一辆汽车,装有一个三角形,汽车A有一个未指定的形状

relational_1(A):-relational_2(A,rectangle).
如果一个对象A是关系型_2矩形,那么A是关系型_1 或 有一辆车是长方形的,它的前面有一辆车,它承受着三角形的载荷

relational(A):-has_car(A,B),relational_1(B).
如果一个对象A有一辆车B,B是关系型的,那么A是关系型的

有一列火车有一节车厢,车厢的形状是矩形的,前面有一节三角形的车厢

relational(A):-has_car(A,B),relational_1(B).