Sub EnTest()
Dim b!, w1!, w2!, t%, alpha!, y!
Dim g%, i%, j%, k%
Application.ScreenUpdating = False
w1 = 0.1
w2 = 0.1
alpha = Range("f3") 'coef apprentissage
b = 0 'valeur du biais
t = Range("j3") 'Nombre maximum d'iterations autorisés
Sheets("B").Select
j = 1
'boucle itération tant que j>0
Do While (j > 0)
j = 0
'boucle sur les données
For k = 0 To 7 'lignes d'apprentissage
g = Range("c3").Offset(k, 0) 'défini la classe
'vecteur apprentissage
y = (Range("a3").Offset(k, 0) * w1) + (Range("b3").Offset(k, 0) * w2) + b
If y > 0 Then y = 1 Else y = -1 'Fonction seuil, renvoie 1 si y > 0 sinon -1
'test pour mise à jour des poids
If y <> g Then
w1 = w1 + (Range("a3").Offset(k, 0) * alpha * g)
w2 = w2 + (Range("b3").Offset(k, 0) * alpha * g)
b = b + g * alpha
j = j + 1 'compte si mise a jour pour boucle do while
End If
Next
i = i + 1 'compte le nombre de cycle avec mise à jour
If i > t Then Exit Do 'permet de verifier la convergence
Loop
If i > t Then
MsgBox "Pas de convergence, augmentez le nombre en J3 " ' affichage
w1 = 0
w2 = 0
b = 0
End If
'affichage des résultats
Range("g3") = w1
Range("h3") = w2
Range("i3") = b
Range("K3") = i
Application.ScreenUpdating = True
End Sub