Это прекрасно работает:
%connection(Num,Ori,Dest,Distance,RoadNumber)
connection(1,cityA,cityB,20,235).
connection(2,cityB,cityC,23,235).
connection(3,cityB,cityD,30,272).
%road(num,speedlimit)
road(235,50).
road(272,90).
road(273,120).
dest(Z):-
A = mystartcity,
route(A,[Z],0,Path,Cost).
route(A,[A|Path1],Cost1, [A|Path1], Cost1).
route(A,[Y|Path1], Cost1,Path, Cost):-
connection(_,X,Y,Dist,N,E),
roadtype(N,Vmed,_),
CostXY is Dist/Vmed,
Cost2 is Cost1 + CostXY,
route(A,[X,Y|Path1],Cost2, Path, Cost).
Моя проблема в том, что я хочу избегать определенных дорог (например, если дорога недоступна из-за аварии), и я не могу понять, как.
Я думаю, что мне нужно что-то, что позволило бы мне изменить «состояние» дороги, чтобы она была доступна для недоступных, а когда она недоступна, функция маршрута должна избегать и выбирать другой путь.Но я не могу решить это, я пытаюсь.