Bonjour,
Je voulais faire un algo de steepest descent , hill climbing pour minimiser une fonction. Histoire d'en avoir fait un dans ma vie. Mais ne réussisant pas j'ai simplifie mon cas au maximum, j'ai donc pris une brave fonction colline et j'essaie de trouver le sommet :
Il s'agit d'un code MATLAB.
Code MATLAB : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 % Function x=0:0.1:20; f=10-(x-10).*(x-10); plot(x,f); j=0;k=0; % Generate a number in between [0,20] s = 0 + (20-0).*rand(1) for i=1:20 s0=s; sR=s+0.1; sL=s-0.1; f0 = (10-(s0-10).*(s0-10)); fR = (10-(sR-10).*(sR-10)); fL = (10-(sL-10).*(sL-10)); % Test if (fR > f0) s = sR; else s = sL; end end s
Niveau code ça n'a rien de méchant, c'est même super basique, néanmois je comprends pas pourquoi ça ne fonctionne pas bien. Je pense que mon algo dans la "SI" n'est pas bon.
Merci de me porter assistance sur ce très simple cas mais qui est un bon début.
Partager