Prolog alpha-beta unexpected results

 
Napisz nowy temat   Odpowiedz do tematu    Forum Lubuskie Centrum Walki KRAV MAGA Strona Główna :: Forum Ogólne
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
xandercage43



Dołączył: 24 Paź 2020
Posty: 1

PostWysłany: Sob Paź 24, 2020 6:53 am    Temat postu: Prolog alpha-beta unexpected results Odpowiedz z cytatem

I have modified a generic alpha-beta from a book to be depth limited. When printing out the best position search results it sometimes works and sometimes I get a nuisance result such a the number 8.

This is a very generic alpha-beta from "prolog for artificial intelligence". I'm trying to narrow down to whether the issue is with the alpha-beta or somewhere else in my code.

Can someone please tell me if this depth limited alpha-beta seems ok?

Here is the code:

Kod:
alphabeta(Pos, Alpha, Beta, GoodPos, Val, Depth):-
   Depth > 0,
   moves(Pos, PosList), !,
   boundedbest(PosList, Alpha, Beta, GoodPos, Val, Depth);
   get_pos_value(Pos,Val).                              % static value of position

boundedbest([Pos | PosList], Alpha, Beta, GoodPos, GoodVal, Depth):-
   NewDepth is Depth - 1,
   alphabeta(Pos, Alpha, Beta,_,Val, NewDepth),
   goodenough(PosList, Alpha, Beta, Pos, Val, GoodPos, GoodVal, Depth).

goodenough([],_,_,Pos, Val, Pos, Val,_):- !.                % no other candidate

goodenough(_,Alpha,Beta, Pos, Val, Pos, Val,_) :-
   min_to_move(Pos), Val > Beta, !;                 % Maximizer attainded upper bound
   max_to_move(Pos), Val < Alpha,!.                 % Minimizer attained lower bound

goodenough(PosList, Alpha, Beta, Pos, Val, GoodPos, GoodVal, Depth):-
   newbounds(Alpha, Beta, Pos, Val, NewAlpha, NewBeta), % refine bounds
   boundedbest(PosList, NewAlpha, NewBeta, Pos1, Val1, Depth),
   betterof(Pos,Val, Pos1, Val1, GoodPos, GoodVal).

newbounds(Alpha, Beta, Pos, Val, Val, Beta):-
   min_to_move(Pos), Val > Alpha, !.                    % Maximizer increased lower bound

newbounds(Alpha, Beta, Pos, Val, Alpha, Val):-
   max_to_move(Pos), Val < Beta, !.                 % Minimizer decreased upper bound

newbounds(Alpha, Beta, _, _ , Alpha, Beta).             % otherwise bounds unchanged

betterof(Pos, Val,Pos1, Val1, Pos, Val):-               % Pos better than Pos1
   min_to_move(Pos), Val > Val1,!;
   max_to_move(Pos), Val < Val1,!.

betterof(_,_,Pos1,Val1,Pos1,Val1).                      % Otherwise Pos1 better
p


_______________
Pursuing the best artificial intelligence training in Chennai.
Powrót do góry
Ogląda profil użytkownika Wyślij prywatną wiadomość
Wyświetl posty z ostatnich:   
Napisz nowy temat   Odpowiedz do tematu    Forum Lubuskie Centrum Walki KRAV MAGA Strona Główna :: Forum Ogólne Wszystkie czasy w strefie GMT
Strona 1 z 1

 
Skocz do:  
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach




Powered by phpBB © 2001, 2002 phpBB Group
Charcoal2 Theme © Zarron Media