Momenteel heb ik het zodanig voor elkaar gekregen dat alpha-beta werkt zoals zou moeten. (M.a.w. ik krijg de correcte scores terug bij gebruik van een eenvoudige quotering van de posities)
Nu zou ik graag de volledige variant verkrijgen (tot maxdepth) en niet enkel de beste zet (depth=0) om meer inzicht te krijgen in de werking van quotering/zoeken.
Ik heb volgende code in python(bevat uiteraard veel meer maar ik geef enkel het essentiële) :
Code: Selecteer alles
01 def alphabeta(node, depth, maxdepth , alpha, beta, player, maxplayer):
02 global bestmove
03 if depth == maxdepth:
04 return node.value(player)
05 if player == maxplayer:
06 for child in node.legalMoves():
07
node.makeMove(child,player)
08
score = alphabeta( node, depth+1, maxdepth, alpha, beta, 3-player, maxplayer)
09
node.undoLastMove()
10
if score> alpha:
11
if depth==0:
12
bestmove = child
13
alpha = score
14
if beta <= alpha:
15
break
16 return alpha
17 else:
18 for child in node.legalMoves():
19
node.makeMove(child,player)
20
score = alphabeta( node, depth+1, maxdepth, alpha, beta, 3-player, maxplayer)
21
node.undoLastMove()
22
if score<beta:
23
beta = score
24
if beta <= alpha:
25
break
26 return beta
Noot:
- spelers worden gesymboliseerd door getallen 1 & 2 dus geeft 3-player de andere speler
- regel 11-12 slaat de beste zet op maar dus zonder de volledige variant