Alternate way of defining given function using function handle for fmincon
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
Saurabh Madankar
il 18 Feb 2022
Commentato: Saurabh Madankar
il 18 Feb 2022
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-
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/898770/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/898775/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/898775/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/898785/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/898775/image.png)
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 Commenti
Risposta accettata
Matt J
il 18 Feb 2022
Modificato: Matt J
il 18 Feb 2022
Gather the
into a 4x4 matrix H and A,B,C into an unknown 4x3 matrix X. Then write the problem as,
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/898855/image.png)
%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
Più risposte (0)
Vedere anche
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!