A optimization problem with constraints
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
craftsman
el 24 de Jun. de 2015
Comentada: craftsman
el 25 de Jun. de 2015
Hi, I have a optimization problem. I used the function x = fmincon(fff,x0,A,b) to do optimize ; I have some constraints on x.
Moreover, I also want to make a constraint on an intermediate variable z inside the function fff. For example let z < 0. z is in an intermediate variable of fff and will change with x.
I think fmincon cannot make a constraint on the intermediate variable z , how can I do this? Use other function instead of fmincon?
0 comentarios
Respuesta aceptada
Walter Roberson
el 25 de Jun. de 2015
function minx = minimizex
x0 = 1; %some guess
A = []; b = [];, Aeq = []; beq = []; lb = []; ub = [];
minx = fmincon(@(x) x, X0, A, b, Aeq, beq, lb, ub, @lastz);
end
function [c, ceq] = lastz(X)
timesteps = [.....] as appropriate
boundaryconditions = [....] as appropriate
zposition = 2; %which of the outputs is z?
%"x is parameter to the ode"
[T, Z] = ode45( @(t,y) YourFunction(t, y, x), timesteps, boundaryconditions);
z = Z(end,zposition);
c = z;
ceq = [];
end
Más respuestas (1)
Sean de Wolski
el 24 de Jun. de 2015
You'll have to use a nonlinear constraint on x, i.e. it fails if z is outside of range.
4 comentarios
Matt J
el 24 de Jun. de 2015
Editada: Matt J
el 24 de Jun. de 2015
The function fff is an ode function. X is the parameter of the ode, z is the result of the ode
If z is the "result of the ode" that means z is a function of time t (or some other variable). Is that correct? If so, at what times t do you want z(t)<=0 to be satisfied? If z(t)<=0 over some infinite or continuous range of t, then fmincon cannot handle that. You might have to look at fseminf.
If instead you're happy to satisfy z(t(i))<=0 at some finite set of sample times t(i), then simply return z(t(i)) from your nonlcon function.
Ver también
Categorías
Más información sobre Solver-Based Nonlinear Optimization en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!