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,321
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.
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:
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]

© The Math Forum 1994-2015. All Rights Reserved.