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
| Private Function GenR(G As VBgeneration) As VBgeneration
Dim Total
Dim i
Dim j
Dim c As VBchromozom
Dim Generation As VBgeneration
Dim N, A
N = 5
A = 3
For i = 0 To N - 1
G.chromozom(i).vf = fitnes(G.chromozom(i), G.taille)
Total = Total + G.gn(i).vf
Next
For i = 0 To N - 1
G.chromozom(i).vp = G.chromozom(i).vf / Total
Next
For i = 0 To N - 2
For j = i + 1 To N - 1
If G.chromozom(i).vp > G.chromozom(j).vp Then
c = G.chromozom(i)
G.chromozom(i) = G.chromozom(j)
G.chromozom(j) = c
End If
Next
Next
Generation.chromozom(0) = croisement_toPoints(G.chromozom(0), G.chromozom(1), 8, 1, 6, 3, 2)
Generation.chromozom(1) = croisement_toPoints(G.chromozom(2), G.chromozom(0), 8, 1, 6, 3, 2)
Generation.chromozom(2) = croisement_toPoints(G.chromozom(1), G.chromozom(2), 8, 1, 6, 3, 2)
Generation.chromozom(3) = Generation.G.gn(3)
Generation.chromozom(4) = Generation.G.chromozom(4)
GenR = Generation
End Function |
Partager