How can i solve this cost function?

12 vues (au cours des 30 derniers jours)
Volcano
Volcano le 29 Juin 2022
Commenté : Sam Chak le 29 Juin 2022
Hi,
I have a cost function which includes vectors and matrices:
v = [(1 / (0.47 * 0.94 * 1500)^2) (1 / (0.47 * 0.94 * 1700)^2) (1 / (0.47 * 0.94 * 2000)^2) (1 / (0.47 * 0.94 * 2200)^2)];
delta = diag(v);
nu = transpose([120 340]);
K = [((1.95 / (2*0.47)) .* [-1 1 -1 1]);...
1 1 1 1 ];
zeta = [2 0; 0 1];
%J = transpose(q) * delta * q + (transpose(K*q - nu)) * zeta * (K*q - nu) %Cost function
%q = transpose([X Y Z T]) %Output of cost function
I am trying to find q vector without any constraint. What kind of methods can be used to solve related equation?
Thanks,
  8 commentaires
Volcano
Volcano le 29 Juin 2022
@Sam Chak Yes, it is 2*2 matrix. Do you think there is a mistake in formulation?
Volcano
Volcano le 29 Juin 2022
@Sam Chak sorry, but what is LMI?
There should be optimal q vector which minimize J.

Connectez-vous pour commenter.

Réponse acceptée

Matt J
Matt J le 29 Juin 2022
v = [(1 / (0.47 * 0.94 * 1500)^2) (1 / (0.47 * 0.94 * 1700)^2) (1 / (0.47 * 0.94 * 2000)^2) (1 / (0.47 * 0.94 * 2200)^2)];
delta = diag(v);
nu = transpose([120 340]);
K = [((1.95 / (2*0.47)) .* [-1 1 -1 1]);...
1 1 1 1 ];
zeta = [2 0; 0 1];
q=optimvar('q',4,1);
J=transpose(q) * delta * q + (transpose(K*q - nu)) * zeta * (K*q - nu);
sol=solve(optimproblem('Objective',J));
Solving problem using quadprog. Minimum found that satisfies the constraints. Optimization completed because the objective function is non-decreasing in feasible directions, to within the value of the optimality tolerance, and constraints are satisfied to within the value of the constraint tolerance.
q=sol.q
q = 4×1
50.7877 74.3710 90.2892 124.5521

Plus de réponses (1)

Sam Chak
Sam Chak le 29 Juin 2022
I converted the matrix equation into a scalar equation. Since there is no constraint, fminunc() is used and the local minimum is found.
v = [(1 / (0.47 * 0.94 * 1500)^2) (1 / (0.47 * 0.94 * 1700)^2) (1 / (0.47 * 0.94 * 2000)^2) (1 / (0.47 * 0.94 * 2200)^2)];
delta = diag(v);
nu = transpose([120 340]);
K = [((1.95 / (2*0.47)) .* [-1 1 -1 1]); 1 1 1 1];
zeta = [2 0; 0 1];
% Cost function
J = @(q) v(1)*q(1).^2 + v(2)*q(2).^2 + v(3)*q(3).^2 + v(4)*q(4).^2 + zeta(1,1)*(K(1,1)*q(1) + K(1,2)*q(2) + K(1,3)*q(3) + K(1,4)*q(4) - nu(1)).^2 + zeta(2,2)*(K(2,1)*q(1) + K(2,2)*q(2) + K(2,3)*q(3) + K(2,4)*q(4) - nu(2)).^2;
% Initial guess of q solution
q0 = [1 1 1 1];
% Minimize unconstrained multivariable function
[q, fval] = fminunc(J, q0)
Local minimum found. Optimization completed because the size of the gradient is less than the value of the optimality tolerance.
q = 1×4
70.5372 99.4606 70.5396 99.4624
fval = 0.0457
  4 commentaires
Matt J
Matt J le 29 Juin 2022
Modifié(e) : Matt J le 29 Juin 2022
It doesn't seem possible that it is a local minimum, because it is a convex problem. Possibly, fminunc's finite difference approximations to the gradient, or maybe the optimoption defaults, led to incomplete convergence. quadprog doesn't rely on approximate gradients, so it wouldn't have that difficulty to overcome.
Sam Chak
Sam Chak le 29 Juin 2022
Thanks @Matt J for the explanations. I learned something new today.

Connectez-vous pour commenter.

Community Treasure Hunt

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

Start Hunting!

Translated by