Optimisation d'une fonction par recuit simulé
Bonjour,
Mon problème est le suivant:
Je souhaite optimiser la fonction de rosenbrock (f(x,y)=100 (x²-y)²+(1-x)²) à partir de la méthode du recuit simulé (simulated annealing). J'ai pour consigne de reprendre un bon code sur le net plutôt que de faire mon propre code (en effet, à ce stade du cours nous n'avons que peu de connaissance en matlab).
Après de longues recherches sur le net, j'ai trouvé un code qui semble tenir la route (voir ci dessous). Mais je ne vois vraiment pas comment l'adapter pour l'optimisation de la fonction qui m'intéresse.
Quelqu'un a t-il quelques connaissances en la matière ?
merci de votre aide
Code de simulé recuit trouvé:
http://www.mathworks.com/matlabcentr...ling-algorithm
Optimisation d'une fonction par recuit simulé
Dans l'idée, un algo de ce genre là est-il exploitable pour rosenbrock ?
Et si oui, que faire de ce paramètre température, qui est tout de même la base du simulated annealing ?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
Initialization(Current_solution,Temperature)
Calculation of the Current_Cost
LOOP
New_State
Calculation of the new_Cost
IF D(Current_cost - New_Cost) £ 0 THEN
Current_State= New_State
ELSE
IF Exp( (Current_cost-New_cost)/ Temperature) > Random (0,1)
THEN
-- Accept
Current_State = New_State
ELSE
-- Reject
Decrease the temperature
EXIT When STOP_CRITERION
END LOOP |