solution for nonlinear optimization problem
Show older comments
Hi,
I hope here is one matlab wizard who can help me with following non linear optimization problem. I have a vector of couple of thousands entries (probability vector) p~ and a vector x~ with real values (same number)
I would like to solve following optimization problem and solving for p
min sum log(p~i*x~i)*log((p~i*x~i)/(pi*x~i))
p 1 o 3000
subject to (expectation and variance constraint)
sum pi*x~i >= some number
sum pi(x~i-(sum (pi*x~i))^2) >=some number
I think you need to rewrite the problem with Lagrange duality because otherwise you have too many variables.
Thank you
Andreas
Answers (1)
Looks like FMINCON should be able to handle it. I don't see an immediate need to rewrite the problem in dual space. 3000 variables isn't absurdly large and your objective function has a highly separable form. My gut says it would converge pretty fast in the space of x(i).
3 Comments
John D'Errico
on 8 Jan 2016
Don't forget a positivity constraint on the variables. Else those logs will cause all heck to break loose.
Andreas Stach
on 8 Jan 2016
Matt J
on 8 Jan 2016
The first inequality is linear so you would use the A,b inputs of fmincon with
A=-pi(:).';
b= -somenumber
Categories
Find more on Problem-Based Optimization Setup in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!