Pages : 1
#1 Le 04/03/2006, à 23:35
- wam
[contourné] minimiser une fonction sous scilab
Bon, je suis désolé de vous embêter avec mes problèmes qui n'ont rien à voir avec l'info (quoique), mais là je suis en galère avec scilab. Je me doute que ça va démanger le modos d'effacer ce sujet alors prière, ayez pitié de moi, vous ne pouvez pas savoir comme je suis à l'arrache...
Je pose mon problème, si ça se trouve, quelqu'un a la réponse dans le coin. En parallèle, je continue bien sûr à chercher sur le net. Il est possible que ça ne soit qu'un problème de syntaxe, ou que j'utilise la mauvaise fonction, de le soft que je découvre. Bref, mon problème:
Je dois minimiser une fonction pour laquelle on ne peut pas exprimer le gradient (du genre, f non dérivable)...
La fontion que j'ai trouvé pour minimiser est "optim". Je l'utilise selon la syntaxe de la doc:
deff('[f,g,ind]=cost(x,ind)','f= f(x), g=????');
[fopt,xopt]=optim(cost,x0)
mais elle demande de rentrer la formule du gradiant en entrée. Le problème, c'est donc que je n'ai pas de formule pour le gradient... . Il n'y aurait pas moyen que scilab trouve lui même ce gradient en regardant si la fonction diminue ou augmente entre 2 tentatives?
Merci d'avance
Pour résumer la question: Comment minimiser une fonction dont on ne connait pas le gradient sous scilab? Quelle fonction est-ce que vous utilisez?
Dernière modification par wam (Le 05/03/2006, à 18:16)
Hors ligne
#2 Le 04/03/2006, à 23:38
- Chompitiarve
Re : [contourné] minimiser une fonction sous scilab
bonsoir wam
Je ne sais pas
Hors ligne
#3 Le 04/03/2006, à 23:40
- wam
Re : [contourné] minimiser une fonction sous scilab
oh, non, je comptais sur toi!
Hors ligne
#4 Le 04/03/2006, à 23:42
- Bobbybionic
Re : [contourné] minimiser une fonction sous scilab
Bonsoir Wam
Reste paisible, cela ne me démange point, mais je ne suis point seul ici, alors doucement, chuuuut, restons discrets !
Je n'ai pas bien compris la question, scilab de nom uniquement je connais.
Si ce n'est qu'une formule de gradient que tu cherches cela doit pouvoir se faire.
Non à la vente liée. Non au monopole Windows.
Tous ensemble, refusons les logiciels préinstallés et tournons nous vers le libre.
http://bobbybionic.wordpress.com
Hors ligne
#5 Le 04/03/2006, à 23:44
- wam
Re : [contourné] minimiser une fonction sous scilab
oui, c'est pas très clair, je vais tenter de la refaire. Mon problème, c'est que je ne vois pas comment je pourrais exprimer un gradient de ça, la fonction qui est derrière S est super tordue, genre pas dérivable
bof, laissez tomber, j'arrive pas à m'expliquer
PS: pour ceux qui passeraient par là, la fonction que je cherche s'appelle fminsearch sous Matlab
Dernière modification par wam (Le 05/03/2006, à 00:50)
Hors ligne
#6 Le 05/03/2006, à 00:57
- hector
Re : [contourné] minimiser une fonction sous scilab
Salut wam comme on se retrouve
je n'ai pas tres bien compris ton problème mais je crois que tu fais erreur:
deff('[f,g,ind]=cost(x,ind)','f=0.5*norm(x-xref)^2,g=x-xref');
ça c'est dans la doc c'est pour definir une fonction . ici c'est pour définir une fonction de nom cost qui à tout x associe 2 valeurs f et g, définis par f=0.5*norm(x-xref)^2 et g= x-xref ça n'a donc rien a voir avec de l'optimisation .
ensuite si on veut minimiser cette fonction on fait [f,xopt]=optim(cost,x0) et il n'est pas question de gradient, c'est la méthode qui le calcule -si besoin est- tout seul à chaque itération.
édition: si ta fonction n'est pas différentiable:
je ne sais pas ce que ça vaut mais dans la doc d'optim, il y a l'option 'nd' qui devrait te convenir, non?
algo: Character string used to specify the algorithm to use. The possible values are 'qn' for quasi-Newton (default) or 'gc' for conjugate gradient or 'nd' for non-differentiable. Note that 'nd' does not accept bounds on x.
Dernière modification par hector (Le 05/03/2006, à 01:09)
Hors ligne
#7 Le 05/03/2006, à 01:02
- wam
Re : [contourné] minimiser une fonction sous scilab
ba, c'est là que j'ai un doute
[f,g,ind]=costf(x,ind)Here, costf is a function which returns f, value (real number) of cost function at x, and g, gradient vector of cost function at x. The variable ind is described below.
et plus bas
If ind=2 (resp. 3, 4), costf must provide f (resp. g, f and g).
en fait, si je vire g (qui vaut X-Xref dans l'exemple), qui, si on regarde bien, est plus ou moins la dérivée de 0.5 ||X-Xref||^2, le programme ne veux plus faire le calcul. Il semble que tout repose sur ce g.
Apparemment, ind=2 demande à costf de donner g, mais je ne comprends pas la syntaxe
si tu as une syntaxe où on ne définit que f, ke prends, j'ai essayé pas mal de trucs, mais ça passe pas
par exemple avec l'exemple de la doc
xref=[1;2;3];x0=[1;-1;1]
deff('[f,g,ind]=cost(x,ind)','f=0.5*norm(x-xref)^2,g=x-xref');
[f,xopt]=optim(cost,x0) //Simplest call
comment tu trouves le minimum de f sans donner g? ça devrait être possible
Dernière modification par wam (Le 05/03/2006, à 09:35)
Hors ligne
#8 Le 05/03/2006, à 02:01
- hector
Re : [contourné] minimiser une fonction sous scilab
1/ effectivement tu as raison, il faut rentrer le gradient. ce que je trouve bizarre , car il existe l'option 'nd' non-différentiable, dans ce cas comment calculer le gradient???
2/ tu cherches un équivalent scilab de fminsearch, c'est ça?
Désolé de ne pouvoir t'aider ...
Dernière modification par hector (Le 05/03/2006, à 02:59)
Hors ligne
#9 Le 05/03/2006, à 09:37
- wam
Re : [contourné] minimiser une fonction sous scilab
oui, c'est l'équivalent de fminsearch que je cherche.
En fait, le problème peut se résumer simplement en:
comment optimiser f(x1,...,x9) sous scilab?
c'est (entre autre) cet indice ind=3, qui pourrait demander à costf de donner le gradiant dont je ne comprends pas la syntaxe
Dernière modification par wam (Le 05/03/2006, à 09:39)
Hors ligne
#10 Le 05/03/2006, à 11:04
- hector
Re : [contourné] minimiser une fonction sous scilab
cette variable ind je n'arrive pas non plus à m'en sortir avec ...
As trouvé des toolbox scilab d'optimisation sur internet?
si c'est pas indiscret, pourquoi n'utilises tu pas matlab? tu ne l'as pas? tu ne dois pas t'en servir?
Hors ligne
#11 Le 05/03/2006, à 11:09
- wam
Re : [contourné] minimiser une fonction sous scilab
en, fait, je n'ai pas matlab, c'est un peu trop cher pour moi, mais ils l'ont à l'université.
toolbox scilab? j'ai effectivement vu qu'il y avait également des toolbox sous scilab.
Si ça ne marche pas, je retournerai à l'école pour utiliser matlab, mais je connais mieux scilab et j'ai pas trop envie de convertir tout mon code. Et j'aimerais bien savoir le faire, si ça n'est pas pour ce satané projet, ça peut me resservir plus tard.
Hors ligne
#12 Le 05/03/2006, à 18:15
- wam
Re : [contourné] minimiser une fonction sous scilab
Bon, ba pour ceux que ça intéresse, et je sais qu'il sont nombreux, pour minimiser la perte de temps, j'ai fini par utiliser matlab depuis chez moi, sur un ordi de mon école, en ssh -X
Heureusement qu'ils sont sous Linux!
Big up CTH
et merci à ceux qui m'ont répondu!
Dernière modification par wam (Le 05/03/2006, à 18:17)
Hors ligne
#13 Le 05/03/2006, à 18:17
- Bobbybionic
Re : [contourné] minimiser une fonction sous scilab
Il n'ont pas de licence étudiante pour MatLab ?
Non à la vente liée. Non au monopole Windows.
Tous ensemble, refusons les logiciels préinstallés et tournons nous vers le libre.
http://bobbybionic.wordpress.com
Hors ligne
#14 Le 05/03/2006, à 18:25
- wam
Re : [contourné] minimiser une fonction sous scilab
comment ça?
Hors ligne
#15 Le 05/03/2006, à 18:30
- Bobbybionic
Re : [contourné] minimiser une fonction sous scilab
Moi j'ai Mathématica gratuitement, alors que normalement il faut payer au moins tout ça (ça doit être dans les 20 000 francs )
Je ne sais pas comment ils se sont débrouillés (ils ont payés wolfram ? ou wolfram a fait un cadeau ?) mais ils nous ont fait circulé un CD gravé et nous ont fait nous inscrire sur le net avec un code spécial, un prof recevait nos demandes et les validait (il fallait être précis, classe, n° étudiant, pointure, couleur du nœud papillon, age du capitaine tout ça ) puis nous refilait le code pour débloquer la bête.
Mais ce n'est valable que pendant notre scolarité dans l'établissement.
Non à la vente liée. Non au monopole Windows.
Tous ensemble, refusons les logiciels préinstallés et tournons nous vers le libre.
http://bobbybionic.wordpress.com
Hors ligne
#16 Le 05/03/2006, à 18:39
- wam
Re : [contourné] minimiser une fonction sous scilab
ah, ok, cool. Je me suis pas trop renseigné, je sais pas si ils font ça en Suède aussi
Le ssh -X marche bien en tout cas, et comme ça, j'économise 2Go de fichiers d'installation(ce qui m'arrange puisque je n'ai plus que 300Mo de libre sur ce disque de 20Go )
Hors ligne
#17 Le 05/03/2006, à 18:39
- Bobbybionic
Re : [contourné] minimiser une fonction sous scilab
Non à la vente liée. Non au monopole Windows.
Tous ensemble, refusons les logiciels préinstallés et tournons nous vers le libre.
http://bobbybionic.wordpress.com
Hors ligne
#18 Le 05/03/2006, à 18:41
- wam
Re : [contourné] minimiser une fonction sous scilab
Hors ligne
#19 Le 11/03/2006, à 01:10
- Ticonderoga
Re : [contourné] minimiser une fonction sous scilab
va voir du coté de la toolbox fsqp ... c'est franchement cool ...
Hors ligne
#20 Le 11/03/2006, à 12:40
- wam
Re : [contourné] minimiser une fonction sous scilab
je vais regarder ça, merci, ce projet est terminé, mais ça pourrait me resservir
Hors ligne
Pages : 1