Logtalk 2.20.0 files.
git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@1114 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
=================================================================
|
||||
Logtalk - Object oriented extension to Prolog
|
||||
Release 2.19.1
|
||||
Release 2.20.0
|
||||
|
||||
Copyright (c) 1998-2004 Paulo Moura. All Rights Reserved.
|
||||
=================================================================
|
||||
|
@@ -1,6 +1,6 @@
|
||||
=================================================================
|
||||
Logtalk - Object oriented extension to Prolog
|
||||
Release 2.19.1
|
||||
Release 2.20.0
|
||||
|
||||
Copyright (c) 1998-2004 Paulo Moura. All Rights Reserved.
|
||||
=================================================================
|
||||
|
@@ -3,9 +3,16 @@
|
||||
instantiates(heuristic_state_space)).
|
||||
|
||||
|
||||
:- uses(list).
|
||||
:- uses(numberlist).
|
||||
:- uses(set).
|
||||
:- info([
|
||||
version is 1.1,
|
||||
author is 'Paulo Moura',
|
||||
date is 2004/8/15,
|
||||
comment is 'Bridge puzzle.']).
|
||||
|
||||
|
||||
:- uses(list, [append/3]).
|
||||
:- uses(numberlist, [min/2, max/2]).
|
||||
:- uses(set, [insert/3, insert_all/3, select/3]).
|
||||
|
||||
|
||||
initial_state(start, ([], right, [1,3,6,8,12])).
|
||||
@@ -15,32 +22,32 @@
|
||||
|
||||
|
||||
next_state((Left1, left, Right1), (Left2, right, Right2), Slower) :- % two persons
|
||||
list::append(List, [Person1| Persons], Left1),
|
||||
set::select(Person2, Persons, Others),
|
||||
list::append(List, Others, Left2),
|
||||
set::insert_all([Person1, Person2], Right1, Right2),
|
||||
append(List, [Person1| Persons], Left1),
|
||||
select(Person2, Persons, Others),
|
||||
append(List, Others, Left2),
|
||||
insert_all([Person1, Person2], Right1, Right2),
|
||||
(Person1 > Person2 ->
|
||||
Slower = Person1
|
||||
;
|
||||
Slower = Person2).
|
||||
|
||||
next_state((Left1, right, Right1), (Left2, left, Right2), Slower) :- % two persons
|
||||
list::append(List, [Person1| Persons], Right1),
|
||||
set::select(Person2, Persons, Others),
|
||||
list::append(List, Others, Right2),
|
||||
set::insert_all([Person1, Person2], Left1, Left2),
|
||||
append(List, [Person1| Persons], Right1),
|
||||
select(Person2, Persons, Others),
|
||||
append(List, Others, Right2),
|
||||
insert_all([Person1, Person2], Left1, Left2),
|
||||
(Person1 > Person2 ->
|
||||
Slower = Person1
|
||||
;
|
||||
Slower = Person2).
|
||||
|
||||
next_state((Left1, left, Right1), (Left2, right, Right2), Person) :- % one person
|
||||
set::select(Person, Left1, Left2),
|
||||
set::insert(Right1, Person, Right2).
|
||||
select(Person, Left1, Left2),
|
||||
insert(Right1, Person, Right2).
|
||||
|
||||
next_state((Left1, right, Right1), (Left2, left, Right2), Person) :- % one person
|
||||
set::select(Person, Right1, Right2),
|
||||
set::insert(Left1, Person, Left2).
|
||||
select(Person, Right1, Right2),
|
||||
insert(Left1, Person, Left2).
|
||||
|
||||
|
||||
heuristic((Left, Lamp, Right), Heuristic) :-
|
||||
|
@@ -4,13 +4,13 @@
|
||||
|
||||
|
||||
:- info([
|
||||
version is 1.0,
|
||||
version is 1.1,
|
||||
author is 'Paulo Moura',
|
||||
date is 1998/3/23,
|
||||
date is 2004/8/15,
|
||||
comment is 'Eight puzzle heuristic state space search problem.']).
|
||||
|
||||
|
||||
:- uses(list).
|
||||
:- uses(list, [member/2]).
|
||||
|
||||
|
||||
initial_state(four_steps, [2/2,1/3,3/2,2/3,3/3,3/1,2/1,1/1,1/2]).
|
||||
@@ -24,10 +24,10 @@
|
||||
|
||||
|
||||
print_state([S0,S1,S2,S3,S4,S5,S6,S7,S8]) :-
|
||||
list::member(Y, [3, 2, 1]),
|
||||
member(Y, [3, 2, 1]),
|
||||
nl,
|
||||
list::member(X, [1, 2, 3]),
|
||||
list::member(Tile-X/Y, [' '-S0,1-S1,2-S2,3-S3,4-S4,5-S5,6-S6,7-S7,8-S8]),
|
||||
member(X, [1, 2, 3]),
|
||||
member(Tile-X/Y, [' '-S0,1-S1,2-S2,3-S3,4-S4,5-S5,6-S6,7-S7,8-S8]),
|
||||
write(Tile),
|
||||
fail.
|
||||
|
||||
|
@@ -4,21 +4,22 @@
|
||||
|
||||
|
||||
:- info([
|
||||
version is 1.0,
|
||||
version is 1.1,
|
||||
author is 'Paulo Moura',
|
||||
date is 1998/3/23,
|
||||
date is 2004/8/15,
|
||||
comment is 'Hill climbing heuristic state space search strategy.',
|
||||
parnames is ['Threshold']]).
|
||||
|
||||
|
||||
:- uses(list).
|
||||
:- uses(list,
|
||||
[member/2, reverse/2, sort/2]).
|
||||
|
||||
:- private(hill/7).
|
||||
|
||||
|
||||
search(Space, State, Threshold, Solution, Cost) :-
|
||||
hill(Space, State, Threshold, [], Path, 0, Cost),
|
||||
list::reverse(Path, Solution).
|
||||
reverse(Path, Solution).
|
||||
|
||||
|
||||
hill(Space, State, _, Path, [State| Path], Cost, Cost) :-
|
||||
@@ -28,12 +29,12 @@
|
||||
findall(
|
||||
(Estimate, Cost, Next),
|
||||
(Space::next_state(State, Next, Cost),
|
||||
\+ list::member(Next, [State| Path]),
|
||||
\+ member(Next, [State| Path]),
|
||||
Space::heuristic(Next, Guess),
|
||||
Estimate is Guess + Cost),
|
||||
States),
|
||||
list::sort(States, SortedStates),
|
||||
list::member((_, Cost2, Next2), SortedStates),
|
||||
sort(States, SortedStates),
|
||||
member((_, Cost2, Next2), SortedStates),
|
||||
SoFar2 is SoFar + Cost2,
|
||||
SoFar2 =< Threshold,
|
||||
hill(Space, Next2, Threshold, [State| Path], Solution, SoFar2, Total).
|
||||
|
@@ -10,7 +10,7 @@
|
||||
comment is 'Missionaries and cannibals heuristic state space search problem.']).
|
||||
|
||||
|
||||
:- uses(loop).
|
||||
:- uses(loop, [forto/3]).
|
||||
|
||||
|
||||
initial_state(start, ((3,3), left, (0,0))).
|
||||
@@ -20,14 +20,14 @@
|
||||
|
||||
|
||||
print_state(((Me,Ce), B, (Md,Cd))) :-
|
||||
loop::forto(1, Me, write('M')),
|
||||
loop::forto(1, Ce, write('C')),
|
||||
forto(1, Me, write('M')),
|
||||
forto(1, Ce, write('C')),
|
||||
(B = left ->
|
||||
write('.<__>..........')
|
||||
;
|
||||
write('..........<__>.')),
|
||||
loop::forto(1, Md, write('M')),
|
||||
loop::forto(1, Cd, write('C')),
|
||||
forto(1, Md, write('M')),
|
||||
forto(1, Cd, write('C')),
|
||||
nl.
|
||||
|
||||
|
||||
|
@@ -4,18 +4,18 @@
|
||||
|
||||
|
||||
:- info([
|
||||
version is 1.0,
|
||||
version is 1.1,
|
||||
author is 'Paulo Moura',
|
||||
date is 1998/3/23,
|
||||
date is 2004/8/15,
|
||||
comment is 'Performance monitor for state space searches.']).
|
||||
|
||||
|
||||
:- uses(event_registry).
|
||||
:- uses(before_event_registry).
|
||||
:- uses(after_event_registry).
|
||||
:- uses(list).
|
||||
:- uses(numberlist).
|
||||
:- uses(time).
|
||||
:- uses(list, [length/2]).
|
||||
:- uses(numberlist, [min/2, max/2, sum/2]).
|
||||
:- uses(time, [cpu_time/1]).
|
||||
|
||||
|
||||
:- private(transitions/3).
|
||||
@@ -71,7 +71,7 @@
|
||||
|
||||
transitions(Number) :-
|
||||
findall(N, ::transitions(_, _, N), List),
|
||||
numberlist::sum(List, Number).
|
||||
sum(List, Number).
|
||||
|
||||
|
||||
time(Time) :-
|
||||
@@ -85,12 +85,12 @@
|
||||
Length,
|
||||
(::transitions(State1, _, _),
|
||||
findall(State2, ::transitions(State1, State2, _), States2),
|
||||
list::length(States2, Length)),
|
||||
length(States2, Length)),
|
||||
Lengths),
|
||||
list::min(Lengths, Minimum),
|
||||
list::max(Lengths, Maximum),
|
||||
numberlist::sum(Lengths, Sum),
|
||||
list::length(Lengths, Length),
|
||||
min(Lengths, Minimum),
|
||||
max(Lengths, Maximum),
|
||||
sum(Lengths, Sum),
|
||||
length(Lengths, Length),
|
||||
Average is Sum / Length.
|
||||
|
||||
|
||||
@@ -114,13 +114,13 @@
|
||||
|
||||
before(_, solve(_, _, _), _) :-
|
||||
!,
|
||||
time::cpu_time(Time),
|
||||
cpu_time(Time),
|
||||
::retractall(start_time(_)),
|
||||
::asserta(start_time(Time)).
|
||||
|
||||
before(_, solve(_, _, _, _), _) :-
|
||||
!,
|
||||
time::cpu_time(Time),
|
||||
cpu_time(Time),
|
||||
::retractall(start_time(_)),
|
||||
::asserta(start_time(Time)).
|
||||
|
||||
@@ -145,19 +145,19 @@
|
||||
|
||||
after(_, solve(_, _, Solution), _) :-
|
||||
!,
|
||||
time::cpu_time(Time),
|
||||
cpu_time(Time),
|
||||
::retractall(end_time(_)),
|
||||
::asserta(end_time(Time)),
|
||||
list::length(Solution, Length),
|
||||
length(Solution, Length),
|
||||
::retractall(solution_length(_)),
|
||||
::asserta(solution_length(Length)).
|
||||
|
||||
after(_, solve(_, _, Solution, _), _) :-
|
||||
!,
|
||||
time::cpu_time(Time),
|
||||
cpu_time(Time),
|
||||
::retractall(end_time(_)),
|
||||
::asserta(end_time(Time)),
|
||||
list::length(Solution, Length),
|
||||
length(Solution, Length),
|
||||
::retractall(solution_length(_)),
|
||||
::asserta(solution_length(Length)).
|
||||
|
||||
|
Reference in New Issue
Block a user