Find constraints on polynomial coefficients optimization
    7 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    AdarG
 el 11 de Jul. de 2019
  
    
    
    
    
    Comentada: AdarG
 el 13 de Jul. de 2019
            I am trying to find the optimal coefficients of the polynomial of the form:
theta=a1*t^2 +a2*t+a3  (i.e., to find a1,a2,a3) for some cost function.
I'm using patternsearch and I need to formulate the nonlinear/linear constraints on a1,a2,a3. 
The problem is that I have constraints on theta (say [lb,ub]) and the range of t (say [0,T]), but not on the coefficients themselves. 
So far, I've managed to formulate these constraints:
lb<a3<ub;
lb<a1*T^2+a2*T+a3<ub;
I can't figure out the 3rd constraint on the extrimum on t=-a2/(2*a1). I care only if is in the rectancle [0,T],[lb,ub].
Any idea?
6 comentarios
  Walter Roberson
      
      
 el 11 de Jul. de 2019
				Those are not real constraints on the variables, only on theta.
Respuesta aceptada
  Bruno Luong
      
      
 el 12 de Jul. de 2019
        
      Editada: Bruno Luong
      
      
 el 12 de Jul. de 2019
  
      Why can't you implement
ts := max(min(-a2/(2*a1),T),0);
Then add the 6 constraints into your minimization pb:
two non-linear (and not differentiable):
lb <= theta(ts) <= ub
four non equality linear contstraints;
lb <= theta(0) <= ub
lb <= theta(T) <= ub
5 comentarios
Más respuestas (2)
  Matt J
      
      
 el 11 de Jul. de 2019
        
      Editada: Matt J
      
      
 el 11 de Jul. de 2019
  
      What's to figure out? You've already articulated that the (nonlinear) constraints on the extremum are,
0<=-a2/(2*a1)<=T
The only thing I might recommend is that  converting them to linear constraints,
0<=-a2<=2*T*a1
a1>=0
might make things easier for patternsearch.
6 comentarios
  Matt J
      
      
 el 11 de Jul. de 2019
        
      Editada: Matt J
      
      
 el 11 de Jul. de 2019
  
      x = fseminf(fun,[a1,a2,a3], 2,  @(a,s) seminfcon(a,s,T,lb,ub));
function [c,ceq,K_ub,K_lb,s]= seminfcon(a,s,T,lb,ub)
    % No finite nonlinear inequality and equality constraints
    c = [];
    ceq = [];
    % Sample set
    if isnan(s(1))
        % Initial sampling interval
        s = [0.01 0; 0.01 0];
    end
    t1 = 0:s(1):T;
    t2 = 0:s(2):T;
    % Evaluate the semi-infinite constraint
    K_ub = polyval(a,t1)-ub;
    K_lb = lb - polyval(a,t2);
end
0 comentarios
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!