Alternate way of defining given function using function handle for fmincon

2 次查看(过去 30 天)
I have an objective function which is of the form J = where C is a matrix of arbitrary constants which I have to determine along with 8 other arbitrary constants in the matrices A and B which appear in constraints and are known scalar matrices. I defined this objective function in MATLAB after evaluating the 4 product terms as follows-
fun =@(x) (x(9)+x(10)+x(11))^2+(x(9)+x(10)-x(11))^2+(x(9)-x(10)+x(12))^2+(x(9)-x(10)-x(12))^2;
where x(9) to x(12) are the 4 arbitrary constants in the matrix C and x(1) to x(8) are the 8 arbitrary constatnts in the matrices A and B. Then after setting
x0 = zeros(1,12);
and writing the constraints in terms of x(1) to x(8), I got all the 12 arbitrary constants x(1) to x(12) using fmincon. Now what I want is to write this objective function without evaluating each term. Is there any way to do the same?
  2 个评论
Saurabh Madankar
Saurabh Madankar 2022-2-18
编辑:Saurabh Madankar 2022-2-18
One other way I could define this function is
fun =@(x) ([x(9) x(10) x(11) x(12)]*h(1))^2 + ([x(9) x(10) x(11) x(12)]*h(2))^2 + ...
([x(9) x(10) x(11) x(12)]*h(3))^2 + ([x(9) x(10) x(11) x(12)]*h(4))^2;
Is there any other way of writing the following row vector?
[x(9) x(10) x(11) x(12)]
Saurabh Madankar
Saurabh Madankar 2022-2-18
I further reduced this as
fun =@(x) ([x(9:12)]*h(1))^2 + ([x(9:12)]*h(2))^2 + ([x(9:12)]*h(3))^2 + ([x(9:12)]*h(4))^2;
Now only thing thats remaining is instead of writing these four terms, how can I write this as summation of a single term?

请先登录,再进行评论。

采纳的回答

Matt J
Matt J 2022-2-18
编辑:Matt J 2022-2-18
Gather the into a 4x4 matrix H and A,B,C into an unknown 4x3 matrix X. Then write the problem as,
%X=[A,B,C]
%H=[h1,h2,h3,h4]
fun=@(X) norm(X(:,3).'*H).^2;
X0=zeros(4,3);
fmincon(fun,X0,Aineq,bineq,Aeq,beq,lb,ub,@nonlcon,opts)
function [c,ceq]=nonlcon(X)
A=X(:,1); B=X(:,2); C=X(:,3); %unpack
c=_____
ceq=_____
end

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Solver Outputs and Iterative Display 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by