How to insert values into parameter and not function

3 vues (au cours des 30 derniers jours)
Nicolas Ochmann
Nicolas Ochmann le 18 Août 2017
Commenté : Nicolas Ochmann le 18 Août 2017
Hi everybody,
I hope somebody can help me out: I want to create a constraint function for fmincon with an input x which comprises of six symbolic variables x1 - x6. The variable 'parameter' depends on x which is why I want to insert their values into 'parameter'. The only way I found out is to create a function as shown below:
function [c, ceq] = constraints(x)
load ('File.mat','parameter');
parameter_function = matlabFunction(parameter);
c(1) = abs(parameter_function(x)); %Constraint
ceq = [];
end
This, however, takes a lot of time to run the code and I am quite sure because of the function creation. For this reason I would like to ask if anybody knows a way to insert the x values into 'parameter' without needing to create the function.
Thanks in advance!
Nicolas
  6 commentaires
Stephen23
Stephen23 le 18 Août 2017
@Nicolas Ochmann: function handles can be passed as arguments, so there is no reason why you cannot generate that function and pass it as a parameter (see the links I gave).
Nicolas Ochmann
Nicolas Ochmann le 18 Août 2017
Perfect, thank you very much!!

Connectez-vous pour commenter.

Réponse acceptée

Matt J
Matt J le 18 Août 2017
Modifié(e) : Matt J le 18 Août 2017
load ('File.mat','parameter');
parameter_function = matlabFunction(parameter);
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub, @(x) deal(parameter_function(x)^2 , [] ) )
  2 commentaires
Matt J
Matt J le 18 Août 2017
You could also modify your constraints() function as below and call fmincon as follows:
load ('File.mat','parameter');
parameter_function = matlabFunction(parameter);
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub, @(x) constraints(x,parameter_function))
function [c, ceq] = constraints(x,phandle)
c=phandle(x).^2;
ceq=[];
Nicolas Ochmann
Nicolas Ochmann le 18 Août 2017
Thank you!!!!

Connectez-vous pour commenter.

Plus de réponses (0)

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by