Salut, a tous,
Jai une fonction objectif dont je voudrais optimiser a partir d'un algorithm meta-heuristic tel que (AG, PSO....). Le problème est que je narrive pas a formuler la fonction objectif dans Matlab.
Quelqu'un est il disposer a m'aider ?
Version imprimable
Salut, a tous,
Jai une fonction objectif dont je voudrais optimiser a partir d'un algorithm meta-heuristic tel que (AG, PSO....). Le problème est que je narrive pas a formuler la fonction objectif dans Matlab.
Quelqu'un est il disposer a m'aider ?
Bonjour,
La fonction objectif est la grandeur que l'algo d'optimisation doit minimiser.
Comme pour n'importe quel algorithme déterministe, la fonction doit prendre un vecteur de paramètres et renvoyer un scalaire correspondant au coût de la solution correspondant à ce vecteur.
Cette fonction peut être une fonction Matlab "classique", codée dans un fichier annexe (e.g. maFonctionCout.m), ou anonyme (e.g. @(x)x.^2).
Certains optimiseurs intègrent par ailleurs l'option "UseVectorized" : dans ce cas, la fonction coût doit accepter une matrice comme argument d'entrée et renvoyer un vecteur de cout, dont chaque élément correspondant à une ligne de la matrice d'entrée. e.g. pour le PSO : https://fr.mathworks.com/help/gads/p...html#buez8bd-1
je rajouterais que l'utilisation de fonction anonyme est presque indispensable lors de l'appel de la fonction objectif, afin de pouvoir écrire une fonction objectif avec plus d'argument que ce que l'algo d'optimisation demande
exemple :
Code:
1
2
3
4
5
6
7
8 function main a = 42; xmin = fminsearch(@(x) myfun(x,a),2) function y = myfun(x,a) y = a*x^2; end end