<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p><br>
    </p>
    <div class="moz-cite-prefix">Le 09/01/2020 à 22:32, David Brant a
      écrit :<br>
    </div>
    <blockquote type="cite"
      cite="mid:1578605551155-0.post@n3.nabble.com">
      <pre class="moz-quote-pre" wrap="">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 <a class="moz-txt-link-rfc2396E" href="https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/mailinglists.scilab.org/file/t490392/fmincon.sce"><https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/mailinglists.scilab.org/file/t490392/fmincon.sce></a>  
Dave</pre>
    </blockquote>
    <p>By default, fmincon expects costf to return only the objective
      function. Hence you should define it like this</p>
    <pre class="moz-quote-pre" wrap="">function f=costf(p)
    f = norm(fun(p))^2;
endfunction</pre>
    <p>There is a way to provide the exact gradient of f, as described
      here:
<a class="moz-txt-link-freetext" href="https://scilab.in/fossee-scilab-toolbox/optimization-toolbox/functions/fmincon">https://scilab.in/fossee-scilab-toolbox/optimization-toolbox/functions/fmincon</a></p>
    <pre class="moz-quote-pre" wrap="">function g = grad(p)
   g = 2*dfun(p)'*fun(p);
endfunction</pre>
    <pre class="scilabcode"><span class="default">options = list("GradObj",grad)
xopt</span><span class="default"> = </span><span class="functionid">fmincon</span><span class="default">(</span><span class="default">f</span><span class="default">,</span><span class="default">x0</span><span class="default">,</span><span class="default">A</span><span class="default">,</span><span class="default">b</span><span class="default">,</span><span class="default">[]</span><span class="default">,</span><span class="default">[]</span><span class="default">,</span><span class="default">[]</span><span class="default">,[]</span><span class="default"></span><span class="default">,</span><span class="default">[]</span><span class="default">,</span><span class="default">options</span><span class="default">)</span></pre>
    <p>S.<br>
    </p>
    <blockquote type="cite"
      cite="mid:1578605551155-0.post@n3.nabble.com">
      <pre class="moz-quote-pre" wrap="">



--
Sent from: <a class="moz-txt-link-freetext" href="https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/mailinglists.scilab.org/Scilab-users-Mailing-Lists-Archives-f2602246.html">https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/mailinglists.scilab.org/Scilab-users-Mailing-Lists-Archives-f2602246.html</a>
_______________________________________________
users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:users@lists.scilab.org">users@lists.scilab.org</a>
<a class="moz-txt-link-freetext" href="https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/lists.scilab.org/mailman/listinfo/users">https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/lists.scilab.org/mailman/listinfo/users</a>
</pre>
    </blockquote>
    <pre class="moz-signature" cols="72">-- 
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
<a class="moz-txt-link-freetext" href="http://www.utc.fr/~mottelet">http://www.utc.fr/~mottelet</a>
</pre>
  </body>
</html>