[scilab-Users] constrained optimalisation with f(x,y) polynomals

michael.baudin at contrib.scilab.org michael.baudin at contrib.scilab.org
Tue Aug 7 10:17:49 CEST 2012


 Hi,

 There is no multivariate polynomial in Scilab, so you cannot
 create a 2-variable polynomial by adding to single-variable 
 polynomials.

 With neldermead, it is relatively simple to find the minimum
 of a 2-variable function, with nonlinear constraints.
 The script below prints the following output (in Scilab 5.3.3):

  xopt
 
     10.239741
     99.999999
 
  fopt
 
   - 870129.52
 
  copt
 
     1023.974

 This is not very accurate, but might be sufficient, depending
 on your goals.
 If you need a more accurate computation, you may use the fmincon
 toolbox :

 http://atoms.scilab.org/toolboxes/fmincon

 or ipopt:

 http://atoms.scilab.org/toolboxes/sci_ipopt

 But this might be more complicated, because these two tools
 are still in alpha stage.

 Best regards,

 Michaël

 PS

 // Optimize an additive 2D polynomial with neldermead.
 function [f, c, index]=my2dpolynomial(x, index)
     f = []
     c = []
     if ( index==2 | index==6 ) then
         p1 = 1. - 2*x(1) + 3*x(1)^2 + 0.4*x(1)^3
         p2 = 5. - 6*x(2) + 7*x(2)^2 + 0.8*x(2)^3
         f = -p1 - p2
     end
     if ( index==5 | index==6 ) then
         c1 = x(1) * x(2)
         c2 = 1024 - c1
         c = [c1 c2]
     end
 endfunction

 rand("seed" , 0);
 x0 = [1. 1.].';
 // Compute f(x0)
 fx0 = my2dpolynomial ( x0 , 2 )
 // Compute the constraints:
 [ fx0 , cx0, index ] = my2dpolynomial ( x0 , 6 )
 // Setup optimization
 nm = neldermead_new ();
 nm = neldermead_configure(nm,"-numberofvariables",2);
 nm = neldermead_configure(nm,"-function",my2dpolynomial);
 nm = neldermead_configure(nm,"-x0",x0);
 nm = neldermead_configure(nm,"-method","box");
 nm = neldermead_configure(nm,"-nbineqconst",2);
 nm = neldermead_configure(nm,"-simplex0method","randbounds");
 nm = neldermead_configure(nm,"-boundsmin",[0.0 0.0]);
 nm = neldermead_configure(nm,"-boundsmax",[100.0 100.0]);
 // Check that the cost function is correctly connected.
 [ nm , result ] = neldermead_function ( nm , x0 );
 //
 // Perform optimization
 nm = neldermead_search(nm);
 xopt = neldermead_get(nm,"-xopt");
 disp("xopt")
 disp(xopt)
 fopt = neldermead_get(nm,"-fopt")
 disp("fopt")
 disp(fopt)
 nm = neldermead_destroy(nm);
 disp("copt")
 disp(xopt(1)*xopt(2))


 On Mon, 6 Aug 2012 13:43:51 -0700 (PDT), ivran <hosti at telenet.be> 
 wrote:
> hi guys,
>
> I'm having a big problem using scilab and some basic math. I would 
> really
> appreciate some help with it 'cause i'm stuck - Consider the 
> following
> problem:
>
> 2 polynomials, each describing a coordinate on its own. Together they 
> form a
> 2D - f(x1,x2) surface which can have 2 - or more - maximums on a 
> certain
> spot.
>
> f(x1) = p1 =                                         2             3
>
> 4             5             6
>     55.044419 - 1.3570362x1 + 0.0162766x1 - 0.0001039x1 + 0.0000004x1 
> -
> 4.592D-10x1 + 1.854D-13x1
>
> f(x2) = p2 =                        2             3             4
> 5             6
>     560.98702 - 23.76471x2 + 0.2962816x2 - 0.0009662x2 + 0.0000013x2 
> -
> 8.576D-10x2 + 2.074D-13x2
>
> I have two problems here:
>
> 1) Does anyone know how to combine these 1D polynomials to a 2D 
> polynomial?
> f(x1, x2) = px1x2 = p1 + p2
> ...won't work. How can I solve this without overloading the '+' 
> method?
>
> 2) suppose I *could* combine these 2 functions:
> f(x1, x2) = ...x1 + ...x2 + ...x1^n + ..x2^n
> how can I find the maximum values of this function?, given the 
> following
> constraints:
> x1.x2 <= 1024
> x1.x2 >= 0
>
> I'm (a little) familiar with Lagrange and the scilab procedures 
> regarding
> this topic... but it would be very helpful if someone could post me a
> example of this (or something close related) 2D constrained 
> optimization
> problem.
>
> I'm really stuck at this... could you point me in the right 
> direction? ..tkx
> in advance!!
>
> Iwein
>
>
>
>
>
>
> --
> View this message in context:
> 
> http://mailinglists.scilab.org/constrained-optimalisation-with-f-x-y-polynomals-tp4024673.html
> Sent from the Scilab users - Mailing Lists Archives mailing list
> archive at Nabble.com.
>
> --
> To unsubscribe from this mailing-list, please send an empty mail to
> users-unsubscribe at lists.scilab.org
> To check the archives of this mailing list, see
> http://mailinglists.scilab.org/



More information about the users mailing list