Dans le cadre d'une mission, je devrai écrire un algorithme de programmation génétique qui fait la prédiction des niveaux de polluants atmosphériques. Comme je n'ai aucune expérience, quelqu'un peut-il m'indiquer des propositions de langages de programmation dans lesquels des programmes évolués seront écrits .
Clarification: je ne demande pas quel sera le langage, j'écrirai l'algorithme génétique lui-même (car je pourrai prendre la décision moi-même), je demande dans quel langage de programmation les programmes développés devraient être créés.
Mon instructeur a suggéré Lisp, mais je n'aime pas cette idée --- d'abord, je devrais travailler sur une sorte d'arbre de syntaxe abstraite, deuxièmement, faire des croisements de manière fiable sur la structure de l'arbre peut être un sacré bordel.
Je préfère utiliser quelque chose qui est dédié à la programmation génétique comme barre oblique / A . SlashA ne nécessite pas de travailler sur les AST - les programmes en bytecode ne sont qu'un tableau d'entiers qui peuvent être modifiés à tout moment car chaque tableau int représente un programme slash / A.
Remarque additionnelle:
- Je voudrais éviter de manipuler les AST!
- Ce problème est difficile (peut-être pas aussi difficile que de prévoir les valeurs des stocks). Cela est dû au fait que (très probablement) nous n'avons pas assez d'informations d'entrée (il y a des paramètres cachés). Créer un modèle qui a de meilleures performances que le modèle qui renvoie la moyenne est un peu difficile (les modèles moyens ont 35% de MAPE), la plupart des modèles ont MAPE d'environ 25%, mieux 20%.
- J'aimerais avoir un langage qui gère les jeux de données avec de nombreuses fonctionnalités en supposant que je ne suis pas sûr de ceux qui sont importants. (Slash / A a un inconvénient ici --- dans ce langage, les fonctionnalités d'entrée sont lues de manière séquentielle --- donc certaines fonctionnalités seront utilisées avec une plus grande probabilité).
- J'aimerais pouvoir programmer cela en Python, donc les bibliothèques python seraient géniales --- mais je peux faire des liaisons pour C / C ++ (pas de Java, pas de Matlab, etc.).
Je suis conscient qu'il s'agit d'une question d'enquête, donc si elle est trop tôt pour une telle question, veuillez la fermer, mais je pense qu'elle est suffisamment précise.
Si vous allez faire évoluer un programme, vous êtes de toute façon susceptible de manipuler un arbre de syntaxe; de cette façon, quel que soit le programme que vous développez sera automatiquement syntaxiquement correct.
Il y a deux choses à garder à l'esprit lors de la sélection d'une langue.
Je voterais contre le langage d'assemblage pour des raisons similaires, bien que les machines virtuelles comme la JVM et le CLR devraient vous fournir quelque chose d'un filet de sécurité.
Vous souhaiterez probablement utiliser une langue cible que vous connaissez déjà. Je ne connais pas moi-même Python, mais AFAIK il répond aux critères ci-dessus, il devrait donc être un bon choix pour votre langue cible.
la source