Optimization problems can be seen from several perspectives. All minimization or maximization, root finding and curve fitting are somehow fit in optimization. From other view, optimization are categorized as linear, non-linear, system of linear or non-linear equations and state-space problems. It is possible to transfer a typical problem from one category to another by defining some metrics. For example, a minimization problem can be transferred to curve fitting when there are training data. Or the root of any function can be defined as extremum point of its integral function.
But it is not always this simple. In theoretical mathematics, defining equivalent problem is possible, but based on observations, a method which is designed for some applications like minimization does not give satisfactory results for curve fitting and vice versa. Therefore, being familiar that which method can be helpful is not always very clear. Experience in optimization and being familiar with available tools is very important.
There are many tools and libraries in Python that can be used directly or indirectly for optimization. For example PyTorch which is a deep learning library can be used for optimization like curve fitting, even it is not designed for this application specifically.
Scipy has a some functions for optimization. They are discussed in another post here.
Another well-known library is Scikit-Learn which is specially designed for machine learning and pattern recognition. It has several good tools for regression which is discussed in another post here.
Last but not the least, PyTorch and neural networks can be used for many optimization problems which is discussed here.
Finally, we should take a look at evolutionary methods which are not completely available in previous libraries and it will be discussed here.
Be First to Comment