Drexel dragonThe Math ForumDonate to the Math Forum



Search All of the Math Forum:

Views expressed in these public forums are not endorsed by Drexel University or The Math Forum.


Math Forum » Discussions » Software » comp.soft-sys.matlab

Topic: convex optimization problem
Replies: 6   Last Post: Aug 27, 2012 9:48 AM

Advanced Search

Back to Topic List Back to Topic List Jump to Tree View Jump to Tree View   Messages: [ Previous | Next ]
Alan Weiss

Posts: 1,241
Registered: 11/27/08
Re: convex optimization problem
Posted: Aug 27, 2012 8:33 AM
  Click to see the message monospaced in plain text Plain Text   Click to reply to this topic Reply

On 8/24/2012 5:14 PM, kumar vishwajeet wrote:
> Alan_Weiss <aweiss@mathworks.com> wrote in message
> <k17tbp$k7a$1@newscl01ah.mathworks.com>...

>> On 8/24/2012 4:25 AM, kumar vishwajeet wrote:
>> > Hi,
>> > I have an objective function of the following type:
>> > J = x log(x/k) + cx Subject to : f1(x) = alpha and f2(x) = beta
>> > where alpha, beta, k and c are constants and x is a vector to be >

>> solved for. So, it is a convex function. Which is the best >
>> optimization routine in MATLAB to solve such problems. I'm currently

>> > using fmincon and it is slower than snail.
>> >
>> > Thanks.

>> This is a convex problem only with restrictions on the functions f1
>> and f2. I mean, there can be multiple local minima, depending on the
>> functions f1 and f2.
>>
>> But as far as your question goes, the only solver in the toolbox to
>> handle this type of problem is fmincon. If you are dissatisfied with
>> its speed, you might want to try some of the suggestions in
>> http://www.mathworks.com/help/toolbox/optim/ug/br44iv5-1.html#br44pif
>> You might also want to try various algorithms, such as sqp.
>>
>> Good luck,
>>
>> Alan Weiss
>> MATLAB mathematical toolbox documentation

>
>
> I'm sorry. The actual cost function is :
> J = summmation(i = 1:N) (x_i log(x_i/k_i) + c_i*x_i Subject to : x_i

> >= 0 and summation(i=1:N) (x_i) = 1
>
> where x_i and c_i are scalars.
> Is it a good idea to change the constraint "x_i >= 0" to "x_i >= eps",
> where eps is epsilon. I knew that x log x is not defined at x = 0. So
> I intentionally made x log x = 0 for x = 0. This is valid for maximum
> entropy problems.

When using the sqp or interior-point algorithms there is no need to set
x(i)>=eps; these algorithms obey bounds at all iterations, and your
extension of the definition to the boundary is fine.
http://www.mathworks.com/help/toolbox/optim/ug/brhkghv-11.html#br9p_ry
You might find that your problem runs faster if you provide gradients
and, for the interior point algorithm, even a Hessian. If you have
Symbolic Math Toolbox you can do this automatically:
http://www.mathworks.com/help/toolbox/optim/ug/brn4nh7.html#brv_i_1
But for your problem, it is easy enough to calculate the gradients by hand.

Good luck,

Alan Weiss
MATLAB mathematical toolbox documentation



Point your RSS reader here for a feed of the latest messages in this topic.

[Privacy Policy] [Terms of Use]

© Drexel University 1994-2014. All Rights Reserved.
The Math Forum is a research and educational enterprise of the Drexel University School of Education.