How to insert values into parameter and not function

2 次查看(过去 30 天)
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 个评论
Stephen23
Stephen23 2017-8-18
@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).

请先登录,再进行评论。

采纳的回答

Matt J
Matt J 2017-8-18
编辑:Matt J 2017-8-18
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 个评论
Matt J
Matt J 2017-8-18
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=[];

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Symbolic Math Toolbox 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by