OK, afin que ma fonction de minimisation conserve quand même un caractère générique, je lui ai rajouté un paramètre qui est incrémenté à chaque fois qu'elle est invoquée. Ce paramètre est générique à tout type de minimisation, et comme il change à chaque fois, le cache est contourné, et la minimisation est bien réalisée. A+ Paul Eric Chatellier a écrit :
Le 24/09/2010 16:08, Eric Chatellier a écrit :
Le 24/09/2010 16:02, Paul MARCHAL a écrit :
Merci Eric pour cette explication. En fait, cela me pose un problème. Même si les paramètres de ma méthode sont inchangés, ma méthode invoque utilise des variables provenant du constructeur qui, elles, ont changé.
optimFsq = new Fcalculation(countCcur,countNcur,mortNat.getValue(age)); Fcur = Fmin.fmin(0.0,2.0,1.0e-10,optimFsq);
Vous faites un "new" à chaque fois, donc Isis considère le paramètre comme différent. Si une instance d'objet est différente, le résultat est différent. Normalement ca devrait fonctionner.
Du coup, il faut absolument que la méthode soit invoquée à chaque fois. Sinon, je me retrouve toujours avec les même valeurs! Est ce possible sans désactiver le cache (j'aimerais égaleemnt optimiser la vitesse des calculs)?
Donc le problème viendrait effectivement de fx = minclass.deriveF(x);
Il faudrait faire une évolution dans Isis pour dire de ne pas utiliser le cache dans ce cas là.
En attendant, une solution temporaire, est d'ajouter dans la signature de la méthode un paramètre non utilisé dont la valeur change tout le temps. Ainsi, l'appel ne sera jamais mis en cache.
-- Paul Marchal IFREMER DOP/DHMMN 150, Quai Gambetta BP 699 62321 Boulogne sur mer FRANCE Tel: (+33) 321 99 56 86 Fax: (+33) 321 99 56 01 Mail: paul.marchal@ifremer.fr