J'ai un problème d'optimisation que j'essaie de résoudre en utilisant un algorithme génétique. Fondamentalement, il y a une liste de 10 variables réelles bornées (-1 <= x <= 1), et je dois maximiser une certaine fonction de cette liste. La difficulté est que seules jusqu'à 4 variables de la liste peuvent être != 0 (condition de sous-ensemble).
Mathématiquement parlant: Pour une fonction f: [-1, 1]^10 -> R min f(X) s.t. |{var in X avec var != 0}| <= 4
Quelques informations sur f: La fonction n'est PAS similaire à n'importe quel type de fonction objectif de type knapsack comme Sum x*poids ou quelque chose comme ça.
Ce que j'ai essayé jusqu'à présent:
Juste un algorithme génétique de base sur le génome [-1, 1]^10 avec un croisement en un point et une certaine mutation gaussienne sur les variables. J'ai essayé d'encoder la condition de sous-ensemble dans la fonction de fitness en utilisant simplement les 4 premières valeurs non nulles (nulles au sens de suffisamment proches de 0). Cette approche ne fonctionne pas très bien et l'algorithme reste bloqué sur les 4 premières variables et n'utilise jamais les valeurs au-delà de cela. J'ai vu une sorte d'AG pour le problème du 01-knapsack où cette approche a bien fonctionné, mais apparemment cela fonctionne juste avec des variables binaires.
Que me recommanderiez-vous d'essayer ensuite?