• Aucun résultat trouvé

Résultat: un vecteur binaire VB Début

Générer aléatoirement une population initiale d’anticorps Ab. Diviser cette population en de deux sous-ensembles Abm

(population mémoire) et Abr (population réservoir).

Répéter

a)pour chaque élément de Ab calculer son affinité.

b)Sélectionner les meilleurs n anticorps et générer pour chaque anticorps sélectionné un nombre de clones pour créer une nouvelle population Ci.

c)Muter les éléments de la population de clones Ci produire une population mature Ci*.

d)Réappliquer la fonction d’affinité aux membres de la population mature Ci* et sélectionner le meilleur individu comme cellule candidate. Si son affinité est meilleure que celle de la cellule mémoire courante Abmi, alors la cellule candidate remplace l’ancienne cellule mémoire.

e)Remplacer les anticorps de Abr par les meilleurs

anticorps de Ci*.

f)Eliminer les mauvais anticorps de Abr et les remplacer par de nouveaux anticorps générés aléatoirement.

Jusqu’à G génération ; Fin

Maintenant, nous décrivons comment ClonSat résout le problème MAX-SAT. ClonSAT commence par une population initiale d'anticorps. Ces derniers encodent les solutions initiales. Généralement, pour résoudre un problème en utilisant les principes de la sélection

clonale, chaque solution possible est représentée par un anticorps et le problème est un antigène. Afin de pouvoir adapter l'AIS pour le problème posé, nous avons utilisé une représentation binaire pour encoder les solutions potentielles (anticorps). De ce fait, une interprétation possible est représentée par un vecteur binaire de taille n où n est le nombre de variables booléennes dans la formule en CNF. ClonSat peut utiliser des solutions initiales obtenues en utilisant un algorithme de recherche locale ou utiliser des solutions complètement aléatoires. Ensuite, ClonSat effectue d'une manière itérative les opérations suivantes:

Premièrement, il calcule l'affinité de chaque élément de la population. L‟affinité d‟un élément est la mesure de la fitness, dans notre cas l‟affinité est la somme de clauses satisfaites par l‟interprétation représentée par un anticorps. Dans la deuxième étape, on sélectionne N meilleurs anticorps en tenant compte de leurs affinités. Ensuite, les anticorps sélectionnés sont clonés afin de produire une population clone. Pour chaque anticorps sélectionné le nombre de clones produits est calculé par l'équation suivante [Layeb et al, 2010b]:

 

j i i i affinité affinité nbClones (6.1) Où affinitéi est l'affinité de l'iéme anticorps sélectionné et β est un paramètre indiquant la taille de la population clone.

La troisième opération utilisée est la mutation. Elle consiste à muter chaque clone pour produire la population mature. Le processus de mutation est le suivant:

a) Pour chaque clone clonei: Calculer l'affinité normalisée du clonei :

Affinité Affinité Affinité affinité affinitéN i i max min min    (6.2)

Où min affinité (max affinité) est l'affinité minimale (maximale) trouvée dans la population clone.

b) Calculer le nombre de mutations à appliquer au clonei:

nbMutationsi affinitéiMmin

1affinitéi

Mmax (6.3) Mmin (Mmax) est le nombre de mutations du meilleur (mauvais) clone respectivement.

c) Pour chaque mutation de nbMutationsi, ClonSat applique une mutation simple qui

consiste à flipper quelques bits pris aléatoirement.

Après l'étape de mutation, ClonSat évalué l'affinité de la population mature et sélectionne les meilleurs anticorps comme des cellules candidates. Si la cellule candidate est meilleure que la cellule mémoire elle devient la nouvelle cellule mémoire. Dans la dernière étape, ClonSat remplace tous les anticorps de la population des anticorps avec les meilleurs de la population des anticorps et la population mature. Enfin, il remplace les mauvais éléments de

la population des anticorps par de nouveaux anticorps générés aléatoirement. Le processus est réitéré jusqu'à la satisfaction des conditions finales.

Afin d‟augmenter la capacité d‟intensification du processus de recherche, une méthode de recherche locale a été intégrée. L‟algorithme ClonSat utilise la recherche locale pour améliorer une cellule mémoire quand il n y a pas d‟amélioration pendant un certain nombre de génération. Pour cela nous avons essayé ClonSat avec deux méthodes de recherche locale différentes. La première est une procédure FLIP similaire à celle utilisée dans la méthode QGASAT à l‟exception qu‟on travaille avec des bits au lieu des qubit. La deuxième méthode est basée sur une version basique de la bien connue méthode de recherche locale WalKSat.

6.8.2 Implémentation, résultats et discussion

La méthode ClonSat est implémentée en java et testée sur un micro-ordinateur de 3 GHZ et 1 GB de mémoire. Nous avons testé cette méthode sur un nombre de tests satisfiables et non satisfiables de la base des tests AIM. ClonSat est expérimenté avec les deux méthodes de recherche locale Flip et WalkSat. Des comparaisons avec d‟autres algorithmes sont également faites. Dans toutes les expériences, nous avons utilisé les paramètres montrés sur le tableau 6.4. Bien qu‟il faille plus d‟expériences et de comparaisons, les résultats trouvés montrent la faisabilité des systèmes immunitaires artificiels pour traiter le problème MAX-SAT. En effet, dans la plus part des cas, les résultats de ClonSat avec la méthode de recherche Flip sont presque similaires au programme classique GSAT. D‟autre part, ClonSat est nettement meilleur que le programme QSAT (table 6.5). Ce dernier est un algorithme évolutionnaire quantique avec une simple procédure de recherche locale. L‟ajout de la méthode WalkSat a permis de traiter les instances les plus dures et d‟accélérer la convergence de l‟algorithme vers les solutions optimales. De même, ce travail constitue une plateforme extensible pour d‟autres problèmes de satisfiabilité booléenne.

6.9 La complexité des approches développées

La complexité des approches développées est dépendante de plusieurs facteurs. La complexité pour résoudre une formule qui possède n variables et m clauses est :

6.9.1 La complexité des approches QHILLSAT, QGASAT, et QGADPLL

Les étapes les plus gourmandes en temps CPU dans ces méthodes sont les suivantes:

 La complexité pour de construire un individu est de l‟ordre de n

 La complexité pour créer une population de taille p est : n* p

 La complexité de l'évaluation de la fonction objectif est de l‟ordre: n*m

 La complexité de la mutation, le croisement, la mesure et de l‟interférence est de l‟ordre de n

 On suppose que la complexité de la recherche locale est : C_sls. Généralement, la

complexité des méthodes de recherche locale utilisées QGASAT et QHILLSAT est inférieure à O(n*it), ou it est le nombre d‟itérations de la procédure de recherche locale.

 En conséquence, la complexité des approches développées pour un nombre de génération G est approximativement égale à:

Complex n* p + G*p*( 4*n*m + C_sls ) (6.4)

6.9.1 La complexité de l’approche ClonSAT

Les étapes qui consomment considérablement le temps CPU dans ClonSat sont :

 La complexité pour de construire un anticorps est de l‟ordre de n

 La complexité pour créer une population d‟anticorps de taille p est : n* p

 La complexité de l'évaluation de la fonction d‟affinité affinité est de l‟ordre: n*m

 la Complexité pour générer un nombre de clones est Nb_clones

 la Complexité pour muter tous les clones dans une seule génération est:

C_mut(affinitéNaffinitéMmin

1affinité

Mmax)*Nbclones (6.5) où Affinité est l‟affinité normalisée (algorithme 6.4)

 La complexité totale pour l'évaluation de la fonction d‟affinité de tous les clones dans une seule génération est de l‟ordre: n*m* Nb_clones.

 On suppose que la complexité de la recherche locale FLIP ou WalkSAT est : C_sls.

En conséquence, la complexité de la méthode ClonSat pour un nombre de génération G est

approximativement égale à :

Table 6.1. Résultats pour les tests satisfiables.

Benchmark #var #clause GASAT QHILLSAT GSAT WSAT QGASAT EXACTE

aim-50-1_6-yes1-1 50 80 79 79 79 79 79 80 aim-50-1_6-yes1-2 50 80 79 79 79 79 79 80 aim-50-1_6-yes1-3 50 80 78 79 79 79 79 80 aim-50-1_6-yes1-4 50 80 79 79 79 79 79 80 aim-50-2_0-yes1-1 50 100 99 99 99 99 99 100 aim-50-2_0-yes1-2 50 100 99 99 100 100 100 100 aim-50-2_0-yes1-3 50 100 99 99 99 99 99 100 aim-50-2_0-yes1-4 50 100 98 99 100 100 100 100 aim-50-3_4-yes1-1 50 170 168 170 168 170 170 170 aim-50-3_4-yes1-2 50 170 167 170 168 170 170 170 aim-50-3_4-yes1-3 50 170 167 170 168 170 170 170 aim-50-3_4-yes1-4 50 170 168 170 167 170 170 170 aim-50-6_0-yes1-1 50 300 288 298 287 300 300 300 aim-50-6_0-yes1-2 50 300 288 300 289 300 300 300 aim-50-6_0-yes1-3 50 300 287 300 288 300 300 300 aim-50-6_0-yes1-4 50 300 285 300 286 300 300 300 aim-100-1_6-yes1-1 100 160 158 159 159 159 159 160 aim-100-1_6-yes1-2 100 160 158 159 159 159 159 160 aim-100-1_6-yes1-3 100 160 157 159 159 159 159 160 aim-100-1_6-yes1-4 100 160 157 159 159 159 159 160 aim-100-2_0-yes1-1 100 200 196 199 199 199 199 200 aim-100-2_0-yes1-2 100 200 194 199 199 199 199 200 aim-100-2_0-yes1-3 100 200 195 199 199 199 199 200 aim-100-2_0-yes1-4 100 200 195 199 199 199 199 200 aim-100-3_4-yes1-1 100 340 323 335 336 340 339 340 aim-100-3_4-yes1-2 100 340 325 335 336 340 340 340 aim-100-3_4-yes1-3 100 340 328 336 336 340 340 340 aim-100-3_4-yes1-4 100 340 325 334 335 340 340 340 aim-100-6_0-yes1-1 100 600 583 600 600 600 600 600 aim-100-6_0-yes1-2 100 600 572 600 600 600 600 600 aim-100-6_0-yes1-3 100 600 575 600 600 600 600 600 aim-100-6_0-yes1-4 100 600 574 600 600 600 600 600 aim-200-2_0-yes1-1 200 400 383 399 399 399 399 400 aim-200-2_0-yes1-2 200 400 381 398 399 399 399 400 aim-200-2_0-yes1-3 200 400 387 399 399 399 399 400 aim-200-2_0-yes1-4 200 400 384 399 399 399 399 400 aim-200-6_0-yes1-1 200 1200 1114 1200 1146 1200 1200 1200 aim-200-6_0-yes1-2 200 1200 1112 1200 1200 1200 1200 1200 aim-200-6_0-yes1-3 200 1200 1112 1200 1165 1200 1200 1200 aim-200-6_0-yes1-4 200 1200 1129 1200 1200 1200 1200 1200

Table 6.2. Résultats pour les tests non-satisfiables.

Benchmark #var #clause GASAT QHILLSAT GSAT WSAT QGASAT EXACTE

aim-50-1_6-no-1 50 80 79 79 79 79 79 79 aim-50-1_6-no-2 50 80 79 79 79 79 79 79 aim-50-1_6-no-3 50 80 79 79 79 79 79 79 aim-50-1_6-no-4 50 80 79 79 79 79 79 79 aim-50-2_0-no-1 50 100 99 99 99 99 99 99 aim-50-2_0-no-2 50 100 99 99 99 99 99 99 aim-50-2_0-no-3 50 100 99 99 99 99 99 99 aim-50-2_0-no-4 50 100 99 99 99 99 99 99 aim-100-1_6-no-1 100 160 159 159 159 159 159 159 aim-100-1_6-no-2 100 160 158 159 159 159 159 159 aim-100-1_6-no-3 100 160 159 159 159 159 159 159 aim-100-1_6-no-4 100 160 157 159 159 159 159 159 aim-100-2_0-no-1 100 200 199 199 199 199 199 199 aim-100-2_0-no-2 100 200 198 199 199 199 199 199 aim-100-2_0-no-3 100 200 196 199 199 199 199 199 aim-100-2_0-no-4 100 200 197 199 199 199 199 199 aim-200-2_0-no-1 200 400 384 399 399 399 399 399 aim-200-2_0-no-2 200 400 383 399 399 399 399 399 aim-200-2_0-no-3 200 400 383 399 399 399 399 399 aim-200-2_0-no-4 200 400 385 399 399 399 399 399