openopt / copt

A Python library for mathematical optimization
http://openo.pt/copt
Other
135 stars 35 forks source link

views on mathematical optimization domain #110

Open linjing-lab opened 10 months ago

linjing-lab commented 10 months ago

I released optimtool with dependencies selected from numpy, sympy, and matplotlib in Python programming environment, and will be updated with newest hybrid optimization (or called optimization algorithms with proximity operators) in the future version. see some introduction and iteration template at tag of optimtool-2.4.4.

pip install optimtool --upgrade

so I got some views about copt, I thought tensorflow and pytorch have the most powerful operators to represent images and videos to a differentiable latent space, but copt use datasets preprocessed from raw resources that may not easy to obtain, or in another way, mathematical optimization serves as core process in any 2d tabular and 3d structure, not a independent module for random defined input, so if you export features (or input) after feature engineering to a arbitrary stored place, the difficult issue is the method for returning data with noted original data.

if copt could not be used as core component in tensorflow and pytorch training cycle, only a library for mathematical optimization, so how the most common dataset become the natural data inputed into black-box of copt, like images, videos, audios, chart. these data forms mainly exist in data-driven scenarios where input data are invisible form (or numerical uncertainty) after preprocessing loop.

In my insight, I design optimtool mainly to research the minimum value of a given objective function and its convergence within the meaning of a universal algorithm, so I didn't care about whether input data are natural form or only for benchmarks with many algorithms and random sets. parallel computing resources are quite valuable for representation learning, if they are only used for optimization learning of a set of huge scale random data, there must be a problem of numerical uncertainty and meaningless occupation.

optimtool's example:

import optimtool.unconstrain as ou
x1, x2, x3, x4 = sp.symbols("x1 x2 x3 x4") # Declare symbolic variables
f = (x1 - 1)**2 + (x2 - 1)**2 + (x3 - 1)**2 + (x1**2 + x2**2 + x3**2 + x4**2 - 0.25)**2
ou.gradient_descent.barzilar_borwein(f, [x1, x2, x3, x4], (1, 2, 3, 4)) # funcs, args, x_0