[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