Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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
smile

Hors ligne

#3 Le 04/03/2006, à 23:40

wam

Re : [contourné] minimiser une fonction sous scilab

oh, non, je comptais sur toi! big_smile

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 smile

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 hmm

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 ... sad
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_smile

Big up CTH wink

et merci à ceux qui m'ont répondu! smile

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

#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 yikes)

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 big_smile) 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 hmm

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 big_smile)

Hors ligne

#17 Le 05/03/2006, à 18:39

Bobbybionic

Re : [contourné] minimiser une fonction sous scilab

smile


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

#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 wink

Hors ligne