Yapay Zeka konusunda çok yeniyim ve çoğunlukla teorik Bilgisayar Bilimi/AI alanında deneyimim var. Küçük bir proje olarak, birkaç yıl öncesine ait Google AI zorluğunun basitleştirilmiş bir sürümünde minimax algoritmasını uygulamaya çalışıyorum. Ne yazık ki, çok fazla deneme ve yalancı okuma sonrasında, henüz başarılı bir şekilde uygulayamadım.Minimax Implementation Planet Wars Python
Gezegen Savaşları, kendi gezegenleri olan iki oyuncu arasındaki bir oyundur. Her turda bir oyuncu kendi gezegenlerinden hangisinin gemilerinin yarısını nötr veya rakip bir gezegene göndermesine karar verebilir. Bu şekilde rakibin gezegenlerini devralmak mümkündür. Rakibin gezegeni kalmadığında kazanırsın.
henüz itibariyle bu yazdım:
max_depth = 4
def minmax(pw, depth):
max_player(pw, depth)
return [max_source,max_dest]
def min_player(pw, depth):
if depth > max_depth:
return evaluate_state(pw)
min_score = 10000
for my_planet in pw.my_planets(pw):
for not_my_planet in pw.not_my_planets(pw):
sim = simulate_move(pw)
simulated_pw.SimulateAttack(my_planet, not_my_planet)
score = max(sim, depth +1)
if score < min_score:
score = min_score
return min_score
def max_player(pw, depth):
if depth > max_depth:
return evaluate_state(pw)
max_score = -10000
global max_source
global max_dest
for my_planet in pw.my_planets(pw):
for not_my_planet in pw.not_my_planets(pw):
sim = simulate_move(pw)
sim.SimulateAttack(my_planet, not_my_planet)
score = min(sim, depth +1)
if score > max_score:
score = max_score
max_source = my_planet
max_dest = not_my_planet
return max_score
def do_turn(pw):
source = None
destination = None
# (1) Implement an algorithm to determine the source planet to send your ships from
source = minmax(pw, 4)[0]
# (2) Implement an algorithm to determine the destination planet to send your ships to
destination = minmax(pw, 4)[1]
# (3) Attack/Defend
# If the source and destination variables contain actual planets, then
# send half of the ships from source to destination.
if source is not None and destination is not None:
pw.issue_order(source, destination)
Ama başka bir bot karşı oynamak çalışırken terminal karşılığında bu veriyor:
Johannas-MacBook-Pro:PlanetWars johannakorte$ python play.py -1 MinMax2.py -2 BullyBot.py -s
Game[1]: Something went wrong, engine output dump:
-------------------------
Engine entering main game loop. Mode serial
Game state turn 0
Player 1 said: Traceback (most recent call last):
Player 1 said: File "src/python/MinMax2.py", line 74, in <module>
Player 1 said: main()
Player 1 said: File "src/python/MinMax2.py", line 69, in main
Player 1 said: do_turn(pw)
Player 1 said: File "src/python/MinMax2.py", line 52, in do_turn
Player 1 said: source = minmax(pw, 4)[0]
Player 1 said: File "src/python/MinMax2.py", line 14, in minmax
Player 1 said: max_player(pw, depth)
Player 1 said: File "src/python/MinMax2.py", line 36, in max_player
Player 1 said: for my_planet in pw.my_planets(pw):
Player 1 said: TypeError: my_planets() takes exactly 1 argument (2 given)
Player 1 timeout: you missed a turn! Consider to make your bot faster, or increase the maxTurnTime.
Game state turn 1
Game state turn 2
Couldn't write to stdin of player 1
Benim bot gibi görünen bir dönüş eksik Ya yeterince hızlı olmama ya da bir karar vermeyerek.
Herhangi bir girdi veya geribildirim için minnettarım! Teşekkürler!