solution for nonlinear optimization problem

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)

Matt J
Matt J on 8 Jan 2016
Edited: Matt J on 8 Jan 2016
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

Don't forget a positivity constraint on the variables. Else those logs will cause all heck to break loose.
Wow thanks Matt and John, fast answer I am new to Matlab and apologize for stupid questions:
But any idea how I can formulate the constraints?
The first one i would use scalar multiplication p`x~ >=number
but how about the second one? The second one contains the first one?
What does separable means?
Appreciate your thoughts
Andy
The first inequality is linear so you would use the A,b inputs of fmincon with
A=-pi(:).';
b= -somenumber
The nonlinear inequality would be implemented using the nonlcon input argument.

Sign in to comment.

Categories

Asked:

on 8 Jan 2016

Commented:

on 8 Jan 2016

Community Treasure Hunt

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

Start Hunting!