6 views (last 30 days)

Dear Friends,

I want to write this optimization problem in matlab.

Anybody here to help me write thi in Matlab please.

the only one decision variable is

Thiago Henrique Gomes Lobato
on 5 Jul 2020

First you don't need the variable w, your problem is to maximize corr(Q,S), which is a unconstrained problem in x. Second, by your problem definition, Q is a single value, and correlation between single values doesn't make much sense, so I believe what you mean by corr is that the values should be equal or Q is a vector and you forgot a summation index. Considering the second hypothesis an example of how to do it could be seen here:

% Random data

S = 1:100;

c = randn(100,4);1

% Function to minimize

f = @(x,S,c)-min(min((corrcoef(S', (x*c')/sum(x) )) )); % Negative so min = max. Two min's since corrcoef gives a matrix as output

% Minimizer

[x,fval] = fminsearch(@(x)f(x,S,c),[1,1,1,1])

You can use this code as basis to implement your problem.

Thiago Henrique Gomes Lobato
on 5 Jul 2020

Suppose the optimizer finds a value of -2 for a x entry. When it goes to the function the -2 becomes +2 because of the absolute. Which means that if you do

[x,fval] = fminsearch(@(x)f(x,S,c),[1,1,1,1])

x = abs(x);

You will still get the same cost function, i.e., the abs(x) is exact the same minimum.

Thiago Henrique Gomes Lobato
on 5 Jul 2020

You have this already. Note that you divide by sum(x). This is a linear operation, so it would be the same as:

(x/(sum(x)))*c'

which would give: sum(x) ==1. In other words, if you normalize x by it's sum you'll get the same result as the not normalized one.

Opportunities for recent engineering grads.

Apply Today
## 0 Comments

Sign in to comment.