[Scilab-users] Least squares problem call to fmincon - HELP
Stéphane Mottelet
stephane.mottelet at utc.fr
Fri Jan 10 10:20:08 CET 2020
Le 09/01/2020 à 22:32, David Brant a écrit :
> How may i (if possible?) reconfigure the least-squares problem to be solved
> with a minimalist call to fmincon (from the fossee toolbox)?
>
> I tried everything, but must be (seriously?) overlooking something! Perhaps
> something like:
>
> function z=fun(p)
> z=DAT(:,2)-p(1)*exp(p(2)*DAT(:,1))-p(3)*ones(DAT(:,1))
> endfunction
>
> function dz=dfun(p)
> var=exp(p(2)*DAT(:,1))
> dz=[-var..
> -p(1)*DAT(:,1).*var..
> -ones(var)]
> endfunction
>
> //function [f,g,ind]=costf(p,ind)
> // f=fun(p); g=dfun(p)
> //endfunction
>
> function [f,g,ind]=costf(p,ind)
> f=norm(fun(p))^2;
> // g=2*dfun(p)'*fun(p);
> g=2*numderivative(fun,p)'*fun(p);
> endfunction
>
> DAT=[0 0;0 1;1 1;2 1.5;2 2];
> p0=[0 0 0];
> A=[]; b=[];
>
> [popt,fopt]=fmincon(costf,p0,A,b);
> disp(popt,'popt',fopt,'fopt');
> fmincon.sce <https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/mailinglists.scilab.org/file/t490392/fmincon.sce>
> Dave
By default, fmincon expects costf to return only the objective function.
Hence you should define it like this
function f=costf(p)
f = norm(fun(p))^2;
endfunction
There is a way to provide the exact gradient of f, as described here:
https://scilab.in/fossee-scilab-toolbox/optimization-toolbox/functions/fmincon
function g = grad(p)
g = 2*dfun(p)'*fun(p);
endfunction
options = list("GradObj",grad) xopt=
fmincon(f,x0,A,b,[],[],[],[],[],options)
S.
>
>
>
> --
> Sent from: https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/mailinglists.scilab.org/Scilab-users-Mailing-Lists-Archives-f2602246.html
> _______________________________________________
> users mailing list
> users at lists.scilab.org
> https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/lists.scilab.org/mailman/listinfo/users
--
Stéphane Mottelet
Ingénieur de recherche
EA 4297 Transformations Intégrées de la Matière Renouvelable
Département Génie des Procédés Industriels
Sorbonne Universités - Université de Technologie de Compiègne
CS 60319, 60203 Compiègne cedex
Tel : +33(0)344234688
http://www.utc.fr/~mottelet
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.scilab.org/pipermail/users/attachments/20200110/e32b31bc/attachment.htm>
More information about the users
mailing list