Convex Optimization in Python
<p>I recently got interested in soccer statistics. Right now I want to implement the famous Dixon-Coles Model in Python 3.5 (<a href="http://www.math.ku.dk/~rolf/teaching/thesis/DixonColes.pdf" rel="nofollow">paper-link</a>).</p>

<p>The basic problem is, that from the model described in the paper a Likelihood function with numerous parameters results, which needs to be maximized.</p>

<p>For example: The likelihood function for one <em>Bundesliga</em> season would result in 37 parameters. Of course I do the minimization of the corresponding negative log-likelihood function. I know that this <code>log</code> function is strictly <em>convex</em> so the optimization should not be too difficult. I also included the analytic gradient, but as the number of parameters exceeds ~10 the optimization methods from the <em>SciPy-Package</em> fail (<code>scipy.optimize.minimize()</code>).</p>

<p><strong>My question:</strong>
Which other optimization techniques are out there and are mostly suited for optimization problems involving ~40 independent parameters?</p>

<p>Some hints to other methods would be great!</p>

<p>You can make use of Metaheuristic algorithms which work both on convex and non-convex spaces. Probably the most famous one of them is <a href="https://en.wikipedia.org/wiki/Genetic_algorithm" rel="nofollow">Genetic algorithm</a>. It is also easy to implement and the concept is straightforward. The beautiful thing about Genetic algorithm is that you can adapt it to solve most of the optimization problems.</p>

python python-3.x optimization scipy convex