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 件のコメント

John D'Errico
John D'Errico 2016 年 1 月 8 日
Don't forget a positivity constraint on the variables. Else those logs will cause all heck to break loose.
Andreas Stach
Andreas Stach 2016 年 1 月 8 日
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
Matt J
Matt J 2016 年 1 月 8 日
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 ExchangeProblem-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