A optimization problem with constraints
15 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
craftsman
le 24 Juin 2015
Commenté : craftsman
le 25 Juin 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 commentaires
Réponse acceptée
Walter Roberson
le 25 Juin 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
Plus de réponses (1)
Sean de Wolski
le 24 Juin 2015
You'll have to use a nonlinear constraint on x, i.e. it fails if z is outside of range.
4 commentaires
Matt J
le 24 Juin 2015
Modifié(e) : Matt J
le 24 Juin 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.
Voir également
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!