Optimize the Max Min over two sets for the given function

2 vues (au cours des 30 derniers jours)
Sultan
Sultan le 16 Déc 2018
Commenté : Sultan le 18 Jan 2019
Hello Guys,
I have two matricis and whose rows represents the extreme points and all the rows of are also the rows of i.e.,, and . I want to compute the square root of .
I want to solve the following problem.
Since is convex, and convexity is also preserved under minimization, so the function
is convex. Moreover, because every point can be represented as a convex combination of the set of extreme points of A,
which is attained at . Thus, we can compute the square root of
.
I hope the question is clear.
Thanks!
  5 commentaires
Sultan
Sultan le 21 Déc 2018
Modifié(e) : Sultan le 21 Déc 2018
Thanks Torsten, but In this case, you will always get:
min_B =
Inf
Inf
Inf
max_A =
Inf
Please try it.
Torsten
Torsten le 2 Jan 2019
Code edited.

Connectez-vous pour commenter.

Réponses (4)

Torsten
Torsten le 19 Déc 2018
Modifié(e) : Torsten le 19 Déc 2018
max: eps
s.c.
[norm(a_j - sum_{i=1}^{i=k} lambda_i*b_i,2)]^2 >= eps (j=1,...,m)
sum_{i=1}^{i=k} lambda_i = 1
lambda_i >=0
where the a_j are the row vectors of the matrix A and the b_j are the row vectors of the matrix B.
Use "fmincon" to solve for the lambda_i and eps.
Or use "fminimax".
Best wishes
Torsten.

Bruno Luong
Bruno Luong le 21 Déc 2018
Modifié(e) : Bruno Luong le 21 Déc 2018
Not sure why this bla-bla about convex that makes your statement confusing. There is no continuous variable in the quantity f2 = max min | a-b |^2. It is straightforward calculation:
A=[2, 3; 1, 4; 3,1];
B=[1,2; 2,4];
n = size(A,2);
AA = reshape(A,[],1,n);
BB = reshape(B,1,[],n);
d2 = sum((AA-BB).^2,3);
f2 = max(min(d2,[],2),[],1)
  8 commentaires
Rik
Rik le 23 Déc 2018
Comment by Sultan written in a flag:
Right. Please see the original question.
Bruno Luong
Bruno Luong le 23 Déc 2018
Modifié(e) : Bruno Luong le 23 Déc 2018
This answer is not longer valid since Sutan has editted and modified his question.

Connectez-vous pour commenter.


Bruno Luong
Bruno Luong le 23 Déc 2018
Modifié(e) : Bruno Luong le 15 Jan 2019
For ant row a_j, the inner equation
argmin_lambda || sum (lambda_i * b_i - a_j) ||^2
lambda >= 0
sum(lambda_i) = 1
can be solved using QUADPROG.
Then loop on j to find the max.
Example:
A = [1 2 4; 2 3 4; 1 2 3];
B = [1 2 4; 1 2 3];
[m,n] = size(A);
k = size(B,1);
H = B*B';
lb = zeros(1,k);
ub = inf(1,k);
f = nan(1,m);
lambda = nan(k,m);
Aeq = ones(1,k);
beq = 1;
C = -A*B';
for j=1:m
[x,fx] = quadprog(H, C(j,:), [], [], Aeq, beq, lb, ub);
lambda(:,j) = x;
f(j) = norm(B'*x - A(j,:)')^2; % == 2*fx + norm(A(j,:))^2
end
fmax = max(f)
  4 commentaires
Sultan
Sultan le 26 Déc 2018
Modifié(e) : Sultan le 26 Déc 2018
I am very sorry everyone, for changing the question. Please have a look of the following one.
I have only two matrices A=[1,2 4; 2, 3, 4; 1, 2,3] and B=[1,2 4; 1, 2,3] in my hands. I want to solve the following problem.
where ,
subject to
,
.
Please help me in providing the complete program.
Once it is computed, then I can use ''for loop'' for computing min for all rows of A and then max.
Thanks for sparing time.
Rik
Rik le 26 Déc 2018
Comment re-posted as question here.

Connectez-vous pour commenter.


Sultan
Sultan le 15 Jan 2019
Modifié(e) : Sultan le 16 Jan 2019
Is it correct code for the above problem? In place of λ, I have used x.
A = [1 2 4; 2 3 4; 1 2 3]; B = [1 2 4; 1 2 3];
%Given: A; B;
%A = load('matrixA');
%B = load('matrixB');
n = size(B,1);
C = B';
D = ones(1,n);
for i = 1:size(A,1)
cvx_begin
variable x(n)
minimize( norm(A(i,:)' - C*x, 2))
subject to
D * x == 1
0 <= x <= 1
cvx_end
optimalValue(i) = cvx_optval^2;
X(:,i) = x;
end
maximumValue = max(optimalValue);
We can also use lsqlin. Thanks everyone for helping me.
  6 commentaires
Bruno Luong
Bruno Luong le 16 Jan 2019
@Sultan: "I have optimal value 1.414213580747754"
I suspect that is the 2-norm value at the solution and not the square of the norm as defined in your question.
@Torten: Not pseudocode, but CVX:
Thanks
Sultan
Sultan le 18 Jan 2019
Bruno Luong you are right.
Thanks!

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