我需要最小化Prolog中的謂詞。目前我正在使用GNU Prolog Java。 我有這個事實 有限域求解器fd_minimize/2
army(Territory,X).
上面說的是給定的領土得到了X軍隊。現在我想找到給定玩家擁有的最少軍隊數量。所以我寫:
place_army(Player, Territory):-
fd_maximize(army(Territory, X), X),
owner(Player, Territory).
的解釋說:
java.lang.IllegalArgumentException異常:我們的目標不是當前活動
了一下,我發現這個問題後:http://www.gprolog.org/manual/gprolog.html#htoc313 我假設問題是解釋器的Java實現沒有FD求解器。任何提示/解決方法?
感謝您的回覆。 gnu prolog java實現不提供Keysort方法,我是Prolog的noob,所以我寫了這段代碼: 'place_army(Player,Territory): - findall(X,army(_,X),值), 排序(值,[軍隊| _]), 軍隊(領土,軍隊), 所有者(玩家,地區),!。 – Otacon 2012-04-26 19:05:23
@Otacon:軍隊/等同於另外兩次嘗試。不管怎樣,對於noob來說都不錯! – false 2012-04-26 21:45:49
Thx很多爲您的提示:D(並且非常感謝「noobob」的不壞):D 我決定切換到SWI-PROLOG。它有點重,但它有我需要的一切爲我的小發展:D 但是,仍然,非常感謝您的支持! – Otacon 2012-04-26 21:51:50