Connect4Heuristic

Connect4Heuristic

Heuristik-Implementierung für Connect4-Varianten.

Mathematische Intuition der evaluate()-Methode

Die Bewertungsfunktion berechnet einen Gesamtscore S:

S = S_terminal + S_center + S_windows + S_extras

S_terminal: Sofort-Bewertung bei Spielende → ±win/loss/draw.

S_center: Für jede besetzte Zelle: dist = |col − centerCol| bias = (centerCol − dist + 1) × centerWeight → Zentrale Spalten erhalten höheren Positionswert.

S_windows: Gleitfenster der Länge 4 in allen Richtungen:

  • 4 eigene → +fourInRow (faktisch Sieg, aber als Safety-Net)
  • 3 eigene + 1 leer → +threeInLine
  • 2 eigene + 2 leer → +twoInLine
  • 3 Gegner + 1 leer → +opponentThreeInLine (negativ!)
  • 2 Gegner + 2 leer → +opponentTwoInLine (negativ!)

S_extras (v2/v3):

  • connectivityBonus: Belohnung für angrenzende eigene Steine
  • heightPenalty: Bestrafung für zu hohe Steine (instabile Positionen)
  • pressureWeight: Drohungsdifferenz × Gewicht
  • setupBonus: Bonus für 2er-Fenster mit 2 Leerstellen (Vorbereitung)

Constructor

new Connect4Heuristic(config)

Source:
Parameters:
Name Type Description
config Object

Konfiguration inkl. variant und optionalem profile.

Members

profile :string

Description:
  • Profilname

Source:

Profilname

Type:
  • string

Methods

evaluate(gameState, player) → {number}

Description:
  • Hauptbewertung — delegiert an varianten-spezifische Methode.

Source:
Parameters:
Name Type Description
gameState GameState

Aktueller Spielzustand.

player number

Perspektive (PLAYER1 oder PLAYER2).

Returns:

Numerischer Score. Positiv = gut für player.

Type
number

evaluateLines(gameState, player) → {number}

Description:
  • Öffentliche Methode für Linienbewertung (kompatibel mit Adapter).

Source:
Parameters:
Name Type Description
gameState GameState
player number
Returns:
Type
number

getDefaultWeights() → {Object}

Source:
Returns:

Default-Gewichte (Baseline-Profil)

Type
Object