Discussion de l'article "Algorithmes d'optimisation de la population : Semis et Croissance des Jeunes Arbres, ou Saplings Sowing and Growing up en anglais (SSG)"

 

Un nouvel article Algorithmes d'optimisation de la population : Semis et Croissance des Jeunes Arbres, ou Saplings Sowing and Growing up en anglais (SSG) a été publié :

L'algorithme SSG (Saplings Sowing and Growing up) s'inspire de l'un des organismes les plus résistants de la planète, qui fait preuve d'une capacité de survie exceptionnelle dans des conditions très diverses.

L'algorithme est l'un des rares à ne pas faire l'objet d'une description claire de la part des auteurs (seules des dispositions et des idées générales sont fournies). Les opérateurs algorithmiques présentés par les auteurs ne sont pas non plus des instructions toutes faites pour la mise en œuvre algorithmique du programme. Il n'y a pas d'instructions claires concernant les arbres des enfants et des parents et leur interaction. Il n'y a aucune exigence quant à l'ordre dans lequel les opérateurs sont exécutés, et tout utilisateur peut modifier son ordre pour obtenir un meilleur semis.

Au sens large, le SSG n'est pas un algorithme d'optimisation, mais un ensemble général de règles conçu pour compléter d'autres algorithmes afin d'améliorer la qualité de l'optimisation. En d'autres termes, SSG est un complément pour tout algorithme de population évolutionnaire, ce qui me permet de faire preuve d'imagination et d'expérimenter une mise en œuvre spécifique de l'algorithme d'optimisation. J'ai appliqué certaines de mes réflexions et de mes expériences lors de l'écriture des algorithmes précédents et je les ai utilisées pour travailler avec SSG. Les résultats des expériences sont présentés ci-dessous à l'intention du lecteur.

Pour commencer à comprendre l'algorithme, nous devons considérer un arbre comme un agent d'optimisation. Un arbre est une solution à un problème d'optimisation, où chaque branche est un paramètre optimisé du problème. La figure 1 présente une illustration abstraite et artistique des arbres parents et enfants. Le tronc de l'arbre est un ensemble de paramètres à optimiser. Chaque branche est un paramètre optimisé distinct, la longueur de la branche étant limitée par la fourchette de valeurs autorisée pour le paramètre correspondant. La direction des branches n'a pas d'importance et n'est indiquée dans la figure que pour mettre en évidence leur différence.

arbres


Auteur : Andrey Dik

 

Quel est le meilleur algorithme pour trouver les extrema locaux ?

En gros, nous devons produire une liste de paramètres qui tombent le mieux dans les extrema locaux (sommets).

En prenant l'exemple d'un hérisson, montrez les coordonnées des extrémités de ses aiguilles.

 

Existe-t-il des algorithmes d'optimisation qui présentent les caractéristiques suivantes :

sélection d'une partie seulement des paramètres lorsque leur nombre est important ;

les paramètres sélectionnés sont optimisés uniquement à l'aide d'un algorithme génétique ou d'un algorithme pouvant être remplacé par la génétique ;

l'algorithme de sélection des paramètres actifs pour l'itération en cours n'a pas d'importance, il est possible de modifier les plages et l'étape de l'optimisation.

 
fxsaber #:

Quel est le meilleur algorithme pour trouver les extrema locaux ?

En gros, nous devons produire une liste de paramètres qui se situent le mieux dans les extrema locaux (sommets).

En prenant l'exemple d'un hérisson, montrez les coordonnées des extrémités de ses aiguilles.

Pour toute tâche de recherche globale, n'importe quel algorithme du haut du tableau fonctionnera le mieux. Vous pouvez choisir l'algorithme le plus approprié individuellement si vous savez, par exemple, que la fonction est lisse ou discrète, ou choisir l'algorithme le plus approprié en fonction du nombre de paramètres optimisés dans le problème.

En règle générale, ne définissez pas le problème de telle sorte qu'il soit nécessaire de trouver des extrema locaux, car dans la plupart des problèmes pratiques, le nombre d'extrema locaux est inconnu (si ce n'était pas le cas, il serait plus facile d'utiliser des méthodes analytiques), et le nombre d'extrema globaux est connu - un (s'il y a plusieurs globaux avec la même valeur, cela équivaut au fait qu'il y en a un seul). C'est pourquoi le problème est généralement posé de manière à ce que la fonction soit aussi monotone que possible, comme dans le cas de la minimisation de l'erreur.

Je ne connais pas d'algorithmes pour résoudre les problèmes de recherche de localité dans le cas général, et il est rarement utile d'écrire des algorithmes spécifiques pour un problème particulier. Dans ce cas, j'envisagerais la manière dont on pourrait représenter la FF pour résoudre le problème. Il peut y avoir différentes approches, comme l'utilisation de l'AO en complément du clustering. Une autre approche du problème consiste à diviser le FF en "couches" hypothétiques, du minimum global au maximum global (qui doit être trouvé à l'avance), puis à examiner chaque couche de manière séquentielle, c'est-à-dire que vous devez créer un gestionnaire de tâches par lots pour l'AO.

En bref, je vais vous décevoir - il n'existe pas d'algorithmes pour résoudre les problèmes de recherche d'extrema locaux sous forme générale. Il est plus facile de modifier le FF que de créer un algorithme spécial.

 
Aliaksandr Hryshyn algorithme génétique ou d'un algorithme pouvant être remplacé par la génétique ;

3. l'algorithme de sélection des paramètres actifs pour l'itération en cours n'est pas pertinent, il est permis de modifier les plages et l'étape d'optimisation

1. L'AO ne se préoccupe pas du nombre et de la nature des paramètres qui lui sont soumis pour l'optimisation, de sorte que vous pouvez lui soumettre tous les paramètres et pas tous.

2. Vous pouvez appliquer n'importe quel algorithme individuellement, conjointement, séquentiellement et de manière combinée. J'ai essayé d'uniformiser les algorithmes dans les articles.

3. tous les algorithmes présentés peuvent être ajustés directement pendant le processus d'optimisation, en principe. Il suffit de corriger l'initialisation pour que la population accumulée ne soit pas réinitialisée. Il est possible, par exemple, de réduire le pas des paramètres optimisés proportionnellement aux époques passées (ou de l'augmenter).

 
Andrey Dik #:

En bref, je vais vous décevoir - il n'existe pas d'algorithmes pour résoudre les problèmes de recherche d'extrema locaux sous forme générale. Il est plus facile de modifier le FF que de créer un algorithme spécial.

Je vous remercie. Je trouve indirectement des extrema locaux par l'interruption forcée de l'optimisation lorsqu'un grand nombre de cœurs sont impliqués. En gros, il y a 20 agents dans Tester, j'interromps l'optimisation après 2000 passes.

 
fxsaber #:

Je vous remercie. Je trouve indirectement des solutions locales par l'interruption forcée de l'optimisation lorsqu'un grand nombre de cœurs sont impliqués. En gros, il y a 20 agents dans le Tester, j'interromps l'optimisation après 2000 passes.

C'est absolument anti-scientifique ! ))))) C'est pourtant astucieux.

Je pensais qu'il y a des algorithmes de "regroupement" accru, lorsque la population tend à se diviser en groupes par lieux, tels que IWO, COA, ABC, BFO, les populations de ces algorithmes peuvent être analysées pour des regroupements d'agents (une unité de recherche logique dans AO est appelée un agent) en mesurant la distance euclidienne entre les agents, c'est-à-dire en recherchant des groupes d'agents avec une distance minimale entre eux.

Vous pouvez également essayer, dans des algorithmes de retour en arrière (lorsqu'un agent effectue des tentatives de recherche répétées dans différentes directions à partir de la même position) tels que COA et HS ou MA, de définir un compteur de tentatives, d'effectuer des tranches d'états de la population sur plusieurs itérations et les agents ayant effectué le plus grand nombre de tentatives constitueront des extrema locaux. MA et BFO disposent d'un tel compteur en interne.

En d'autres termes, j'ai dit qu'il n'existait pas de méthode exacte pour rechercher des solutions locales (la recherche d'une solution globale peut être considérée comme "exacte" à cet égard), mais qu'il était possible d'effectuer une recherche approximative comme je l'ai décrit ci-dessus. Pour obtenir une solution exacte, vous devez connaître les différentes informations sur FF.


ZЫ. Une question intéressante pour tous ceux qui s'intéressent à ce sujet : quelle est la différence entre les extrema locaux et les extrema globaux (sans tenir compte de leur différence de valeurs FF) ?

ZZY Après avoir répondu à la première question, de nombreuses questions disparaissent d'elles-mêmes.

 
Andrey Dik #:

environ, vous pouvez effectuer des recherches comme décrit ci-dessus.

Malheureusement, je suis incompétent dans ce domaine et je suis donc intéressé par une solution approximative mais prête à l'emploi.

ZЫ Une question intéressante pour tous ceux qui s'intéressent à ce sujet : quelle est la différence entre les extrema locaux et les extrema globaux (sans tenir compte de leur différence en termes de valeurs FF) ?

Si nous considérons le résultat de l'optimisation comme un ensemble de passes, des indices de passes locales seront visibles après l'application du regroupement à l'espace des passes calculées en entrée. Dans chaque groupe, nous obtenons une optimisation "étroite".

 
fxsaber #:

Quel est le meilleur algorithme pour trouver les extrema locaux ?

En gros, nous devons produire une liste de paramètres qui se situent le mieux dans les extrema locaux (sommets).

En utilisant l'exemple d'un hérisson, montrez les coordonnées des extrémités de ses aiguilles.

Vous devez donc trouver toutes les aiguilles du hérisson, ou une, n'importe laquelle, mais exactement une aiguille ?
 
mytarmailS #:
Faut-il trouver toutes les aiguilles du hérisson ou une seule, n'importe laquelle, mais exactement la bonne ?

Quelques antennes.

 
fxsaber #:

Malheureusement, je ne suis pas du tout compétent et je suis donc intéressé par une solution approximative mais prête à l'emploi.

Si nous considérons le résultat de l'optimisation comme un ensemble de passes, des indices de passes locales seront visibles après l'application de la classification à l'espace des passes comptées en entrée. Dans chaque groupe, nous obtenons une optimisation "étroite".

Le regroupement (qui peut être un regroupement de Kohonen) par la distance euclidienne montrera le regroupement des paramètres d'option à proximité des paramètres locaux.