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

답변 (1개)

Matt J
Matt J 2016년 1월 8일
편집: Matt J 2016년 1월 8일

0 개 추천

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

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.

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Problem-Based Optimization Setup에 대해 자세히 알아보기

질문:

2016년 1월 8일

댓글:

2016년 1월 8일

Community Treasure Hunt

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

Start Hunting!

Translated by