.


:




:

































 

 

 

 


14.4, CLP(FD)




% DONALD+GERALD=ROBERT CLP(FD)

solve [D, ,H,A, L,D], [G, E,R,A,L,D], [R, 0, , E, R, ]):-

Vars =,0,N,A,L,G,E,R,B,T], % ,

domain [ Vars, 0, 9), all_dif ferent I Vars), 1000C0*D + 10000*0 + 100D00*G + 10000*E + 100000*R + 10000*0 + labeling £ [], Vars).
% %

- -

1000*N + 100*A + 10*L + D + 1000*R + 100*A + 10*L + D # = 1000*B + 1D0*E + 10*R + T,

14.5 CLP(FD) . , ( , ) : , . CLP(FD),



II. Prolog


14,5. CLP(FO)

% CLP(FD)

solution Ys);- % Ys - Y

Ys = [_,_,_,_, _ _,_,_], * 8

domain (Ys, 1, ), % 1..8

all dif ferent! Ys), % - ,

%

safe! Ys), % ,

%

labeling! [J, Ys). I Ys

safe ) ■

safe! [Y | Ys]):-

no attack (Y, Ys, 1), 4 1 - Y

% Ys

safet Ys).

% no_attack(Y, Ys, D):

% , Y,

h Ys;

I D -

no_attack(Y, [],_).

no_attack(Yl, [Y2 | Ys], D):-D #\= Y1-Y2, D #\=Y2-Yl, Dl is D+l, no_attack(Yl, Ys, Dl).

, CLP(FD) , . CLP(FD): minimize! Goal, X) maximize; Goal, X)

Goal, () X. , Goal - indomain , , .

?- in 1..20, V # = X*(20-), maximize (indomain (X), V), X = 1 0, V = 100

(. . 14.1) :

?.- StartTimes = [, , , Td,Tf ], % Tf - domain< StartTimes, 0, 20), #>= 0,

+ 2#=<, %

+ 2#=<, %

+ 3 #=< Td, % b d

+ 5#=<Tf, % Tf

Td + 4 #=< Tf,

minimize! labeling([ ], StartTiraes], Tf).

StartTimes = [0,2,2,5,9]

.


14.







:


: 2015-10-01; !; : 560 |


:

:

, .
==> ...

1730 - | 1550 -


© 2015-2024 lektsii.org - -

: 0.011 .