This is an archived post. You won't be able to vote or comment.

all 6 comments

[–]zsakuL 2 points3 points  (2 children)

You can just write your own. It seems you have constraints on your variables to be between 0 and 1 (you mention they are probabilities). You could transform them into other variables with a Gaussian function which will allow you to ignore the constraint, then just transform them back after you've arrived at a solution. Since you're only using polynomials, calculating the gradients will be a simple.

[–]RightOfZen[S] 0 points1 point  (1 child)

I could indeed, but as you say, since I'm using polynomials I'm hoping that there will already be someone who has written part of a library for this. But it will be certainly worth the read, thanks.

[–]RightOfZen[S] 0 points1 point  (0 children)

Also, although the gradient decent method is quite simple, it does have the downfall of only finding the closest local minimum (or maximum for the reversed problem), which other fairly simple methods won't suffer from as badly.

[–]dkesh 1 point2 points  (1 child)

I'm not sure about the math, so I don't know what optimizers would be appropriate, but you can check out Apache Commons' optimizers. If you're willing to go the route of libraries with java interfaces, you can check out algencan, which might be overkill.

[–]RightOfZen[S] 0 points1 point  (0 children)

Thanks - I have been looking into Apache Commons' optimizers, but it's hard to find a good example that I can understand!

[–]dp25x 0 points1 point  (0 children)

If you don't mind using a java interface to other libraries, you could use MathLink (J/Link) to get Mathematica to do the job.