Python module for multiple variable global optimization [closed] - python

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 2 years ago.
Improve this question
I have been looking for a python module that implements the common techniques of global optimization (finding the global minimum of a function in N dimensions) without success.
If you heard about a simulated annealing or genetic algorithm implementation in python, please share.

Scipy's optimize module has a dual_annealing function that might fit your needs. Also, you should check out the PyEvolve module for doing a genetic algorithm.

I'm not an expert, but have you looked at:
Scipy's optimize: http://docs.scipy.org/doc/scipy/reference/optimize.html#global
NLOpt: http://ab-initio.mit.edu/wiki/index.php/NLopt_Introduction
OpenOpt: http://openopt.org/Foreword

One of the most common is scipy.optimize.
For genetic algorithms, there's pygene.
Also, the aima-python project has implementations of algorithms described in Russell and Norvig's "Artificial Intelligence: A Modern Approach".

I've been working on a detailed comparison of many python global optimizers (I assume you are interested in derivative-free optimization where there are plenty of local minima).
hyperopt
optuna
pysot
scipy.optimize
pymoo
many more (see list of some I left out)
To summarize, I'd recommend scipy.optimize and if you're in dimension less than say ten, the SHGO algorithm therein is really solid. You might want to read up on it if you have a passing interest in homology. It is better than some previous ones, such as basin-hopping, because it cleverly tries to avoid redundant local searches.
The full list and comparisons are in the report

Simulated Annealing:
frigidum is a python package for simulated annealing.

Related

Are there any predefined functions that implement the Gauss and the Jacobi algorithms in Python? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 1 year ago.
Improve this question
I am looking for predefined functions that implement in Python the Gauss and the Jacobi methods for solving linear equations. Are there any or I must write them myself?
I don't think so. At least not in python cores predefined functions. There are some functions in NumPy to calculate the eigenvalue using LAPACK. But I doubt anyone uses Gaussian and Jacobian methods these days. They are not particularly general and there are some cases in which the algorithm breaks down.
On the other hand, there are various implementations on the internet that you can use if you want.
Here are some examples:
Link 1: Gausian Implementation
Link 2: Jacobian Implementation No.1
Link 3: Jacobian Implementation No.2

PuLP and OR-Tools Alternatives [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 4 years ago.
Improve this question
I currently have a MIP model formulated in Gurobi's python API, but recently I've been looking into tools such as PuLP and OR-Tools that allow me to build a model and feed it to multiple different optimizers. One feature of Gurobi used extensively in my model is the ability to have constraints that use functions such as and, or, min, max, and abs. However it seems as if PuLP and OR-Tools do not support these. Are there any alternatives that do support these? Or would I have to reformulate my model if I want to use something like this?
For or-tools, we only provide the minimal API for the linear solver.
If your problem is more structured (scheduling, routing, CP-like constraints), you can have a look at the CP-SAT interface:
https://developers.google.com/optimization/
https://github.com/google/or-tools/blob/master/ortools/sat/doc/index.md
Python examples are here:
https://github.com/google/or-tools/tree/master/examples/python
You might also want to have a look at Pyomo. It supports a variety of modeling tools and can call different solvers.

Hyper-parameter Optimization with keras models: GridSearchCV or talos? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 4 years ago.
Improve this question
I want to tune hyper-parameters on keras models and I was exploring the alternatives I had at hand. The first and most obvious one was to use scikit-learn wrappers as shown here (https://keras.io/scikit-learn-api/) thereby being able to use all the faboulous things in the scikit-learn worflow but I also came across this package here (https://github.com/autonomio/talos) that seems very promising and most likely offers a speed boost.
if anyone used them both, could someone point me towards the better solution (flexibility, speed, features)? The sklearn workflow with pipeline and custom estimators provides a world of flexibility but talos seems more directly geared towards keras specifically therefore it must yield some advantages (I guess they would not have made a new standalone package otherwise) which I am not able to see (some benefits are highlighted here https://github.com/autonomio/talos/blob/master/docs/roadmap.rst but such thigns seem to be adequately covered within the scikit-learn framework)
any insights?
Personal opinions:
train/valid/test split is a better choice than cross validation for deep learning. (The cost of k training is too high)
random search is a good way to start exploring the hyper-parameters, so it's not really hard to code this yourself but yes talos or hyperas (which is quite famous) could be helpfull.

Calculate inverse of a function--Library [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 6 years ago.
Improve this question
Is there any library available to have inverse of a function? To be more specific, given a function y=f(x) and domain, is there any library which can output x=f(y)? Sadly I cannot use matlab/mathematics in my application, looking for C/Python library..
I am a bit late, but for future readers of the post, I just published a python package that does this precisely. https://pypi.python.org/pypi/pynverse
There is a detailed description of how to use it and how it does it in the description!
As has already been mentioned, not all functions are invertible. In some cases imposing additional constraints helps: think about the inverse of sin(x).
Once you are sure your function has a unique inverse, solve the equation f(x) = y. The solution gives you the inverse, y(x).
In python, look for nonlinear solvers from scipy.optimize.

Api to analyse complex graph [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 4 years ago.
Improve this question
I am looking for an API (preferably in python) that could be used to analyze complex networks. Basically I want to find things like:
Average shortest path,
Degree distribution
Giant Component
local clustering coefficient, global clustering coefficient etc..
Thanks
I would suggest Networkx and PyGraphViz. I've used them for a similar (but not as complex) graphing project in python and I love it.
The boost graph library has Python bindings.
I've used igraph on Linux. It started to grind on 64k nodes but that graph was becoming unwieldy any way.
Not sure about performance next to PyGraphViz but now you have a plenty of options.

Categories

Resources