/****************************/ /* plug-in architecture */ /* of HCLP interpreter */ /* -----plug-in module----- */ /* WSB comparator component */ /* (c) R. Bart‡k */ /* 1996 */ /****************************/ % this module implements a weighted-sum-predicate-better comparator for % general hierarchy solver (GHSmod.pr) % it is a plug-in module of plug-in architecture for HCLP % to get a complete comparator module, you need to define procedures % solve_constr, solve_constr_list (in FCSmod.pr) solve_level(Cs,PartAnsws,NewAnsws):- pre_solve_level(Cs,PartAnsws,[],NewAnsws,0,0,_). pre_solve_level(_,[],OldAnsws,OldAnsws,_,OldMax,OldMax):-!. pre_solve_level([(C,W)|Cs],PartAs,OldAs,NewAs,CurrMax,OldMax,NewMax):- differ_answs(C,PartAs,PartSatAs,_), NewWeight is CurrMax+W, pre_solve_level(Cs,PartSatAs,OldAs,PreAs,NewWeight,OldMax,PreMax), pre_solve_level(Cs,PartAs,PreAs,NewAs,CurrMax,PreMax,NewMax). pre_solve_level([],CurrAs,OldAs,NewAs,CurrMax,OldMax,CurrMax):- CurrMax=OldMax, append(CurrAs,OldAs,NewAs),!. pre_solve_level([],CurrAs,_,CurrAs,CurrMax,OldMax,CurrMax):- CurrMax>OldMax. pre_solve_level([],_,OldAnsws,OldAnsws,CurrMax,OldMax,OldMax):- CurrMax