IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Intelligence artificielle Discussion :

algo negamax en vb


Sujet :

Intelligence artificielle

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2010
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 89
    Points : 95
    Points
    95
    Par défaut algo negamax en vb
    bonjour,

    je viens chercher de l aide sur un algo negamax pour un moteur d echecs,
    celuici tourne correctement en minimax, mais la nécessite de passer la vitesse supérieure m oblige a changer pour un alpha_beta ( ou negamax )

    je me tourne vers le negamax car moins lourd ...


    voici ce que j ai pondu en me referent a divers cite ( wiki fr / en / chessprogramming ...)

    precision :
    alpha de lancement = - 3 * valeur.val_roi
    beta de lancement = 3* valeur.val_roi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
      Public Function negamax(ByVal chessboard As bitboard, ByVal profondeur As Integer, ByVal alpha As Integer, ByVal beta As Integer) As Integer
     
     
                Dim eval As New evaluation
                Dim best As Integer = -(5 * valeur.val_roi)
                Dim value As Integer = 0
     
                If profondeur = 0 Then
                    eval.eval_all_score(chessboard)
                    Return eval.score
                End If
     
                Dim mvts As New mouvement.list_of_move
                mvts = chessboard.generate_move
                Dim nb_total As Integer = mvts.moves.Count - 1
                'pour chaque coup possible
                For i = 0 To nb_total
                    ' on ajoute le coup a l echiquier
                    chessboard.jouer(mvts.moves.Item(i))
     
                    ' on ajoute une node
                    add_nodes()
     
                    value = -negamax(chessboard, profondeur - 1, -beta, -alpha)
     
                    If (value > best) Then
                        best = value
                    End If
     
                    If (best > alpha) Then
                        alpha = best
                    End If
     
                    If (best >= beta) Then
                        '  MsgBox("exit for")
                        Exit For
                    End If
     
     
                    chessboard.dejouer(mvts.moves.Item(i))
                Next
     
                Return best
     
     
            End Function
    je n arrive a rien
    j ai tente une algo alpha beta avec un appel different si min ou max, et rien n y a fait



    il doit y avoir une coquille quelque part ...et ca ne doit pas venir de tous les pseudo codes utilisés mais de moi :s

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Février 2010
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 89
    Points : 95
    Points
    95
    Par défaut
    ola

    j ai avancé pas mal :

    ca a l air de fonctionner
    ca demande qq vérifications

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
        Public Function negamax(ByVal chessboard As bitboard, ByVal profondeur As Integer, ByVal alpha As Integer, ByVal beta As Integer) As Integer
     
                Dim eval As New evaluation
                Dim local_best_eval As Integer = -4 * valeur.val_roi
                Dim first_time As Boolean = True
                'si feuille : 0
                If profondeur = 0 Then
                    eval.eval_all_score(chessboard)
                    Return eval.score
                End If
     
                ' création de la liste de coups possible
                Dim mvts As New mouvement.list_of_move
                mvts = chessboard.generate_move
                Dim nb_total As Integer = mvts.moves.Count - 1
                'pour chaque coup possible
                For i = 0 To nb_total
                    ' on ajoute le coup a l echiquier
                    chessboard.jouer(mvts.moves.Item(i))
     
                    ' on ajoute une node
                    add_nodes()
     
                    If alpha < beta Then
                        local_best_eval = -negamax(chessboard, profondeur - 1, -beta, -alpha)
                        If (local_best_eval > alpha) Then
                            alpha = local_best_eval
                        End If
     
                    End If
                    ' on dejoue le coup
                    chessboard.dejouer(mvts.moves.Item(i))
                Next
     
                Return alpha
     
     
            End Function

Discussions similaires

  1. cherche algos Delphi pour : Huffman, R.S.A, D.E.S.
    Par X-Delphi dans le forum Débuter
    Réponses: 3
    Dernier message: 24/08/2002, 19h51
  2. Cherche l'algo crc 16 bits
    Par icepower dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 21/08/2002, 14h27
  3. Algo de calcul de FFT
    Par djlex03 dans le forum Traitement du signal
    Réponses: 15
    Dernier message: 02/08/2002, 18h45
  4. Algo de Hough et ou de Radon
    Par victorracine dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 29/07/2002, 12h09
  5. Recherche algo tree
    Par Anonymous dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 24/05/2002, 14h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo