Suelo escuchar que "solucionador" se utiliza para describir el software, lo que significa que se aplica a un aplicación de un algoritmo. Por ejemplo, esto parece aplicarse a la mayoría de los Preguntas de SciComp.SE etiquetadas como solver .
En general, el término parece reservarse para los problemas matemáticos con una "solución bien definida". Una solución única sería lo suficientemente "bien definida", como señala Sycorax en los comentarios. (El Gurobi parecen ser para problemas de esta clase; por si sirve de algo, Gurobi parece un suite o biblioteca de los solucionadores para mí).
Pero no creo que sea único necesario . Por ejemplo, tanto los problemas de optimización local como los globales pueden tener soluciones bien definidas pero no únicas (por ejemplo, la función $f[x]=\sin[\pi x]^2$ tiene un mínimo global $f[k]=0$ para $k\in\mathbb{Z}$ ).
No estoy de acuerdo con esta respuesta que parece hablar de "solucionadores de sistemas de ecuaciones" más que de "solucionadores de optimización". Por ejemplo, en los mínimos cuadrados lineales, el álgebra lineal problema está sobredeterminado, pero el optimización El problema es convexo con una solución única (en casos no degenerados). Obsérvese también que el Página "solver" de Wikipedia vinculado en esa respuesta enumera "Problemas de optimización lineal y no lineal, problemas del camino más corto, problemas del árbol de extensión mínima" entre sus ejemplos.
En respuesta al comentario, aclararé lo que quiero decir en el caso de la "regresión".
Dada una función $F:\mathbb{R}^n\to\mathbb{R}^m$ , a solución del sistema de ecuaciones especificado por $$F[x]=0$$ es un vector $x\in\mathbb{R}^n$ de manera que todos los $m$ componentes de $F[x]$ son cero. Dependiendo de la función $F$ puede no haber soluciones, una única solución, o muchas soluciones (normalmente infinitas), dependiendo de la dimensión del espacio nulo de $F$ . En el caso de que $F$ es lineal, es decir $F[x]=Ax-b$ para algunos $A\in\mathbb{R}^{m\times{n}},b\in\mathbb{R}^m$ entonces no puede existir ninguna solución a menos que $m\leq\mathrm{rank}[A]\leq n$ .
Por otro lado, para un determinado función objetivo $E_F:\mathbb{R}^n\to\mathbb{R}$ y conjunto factible $\Omega_F\subset\mathbb{R}^n$ que dependen de $F$ , a solución al problema de optimización especificado por $$\epsilon=\min_{x\in\Omega_F}E_F[x]$$ es un vector $x\in\Omega_F$ tal que $E_F[x]\leq E_F[y]$ para todos $y\in\Omega_F$ .
En la optimización por "mínimos cuadrados", la función $E_F$ es una suma de cuadrados. Los dos problemas de mínimos cuadrados más comunes son 1) $$E_F[x]=\|F[x]\|^2 \text{ , } \Omega_F=\mathbb{R}^n$$ donde $F$ corresponde a un sobredeterminado sistema de ecuaciones, y 2) $$E_F[x]=\|x\|^2 \text{ , } \Omega_F=\{y\in\mathbb{R}^n\ \mid F[y]=0\}$$ donde $F$ corresponde a un sub-determinado sistema de ecuaciones.
Las plataformas comunes de álgebra lineal, como Matlab, pueden combinar estos tres problemas matemáticos distintos "bajo el capó" en una función de conveniencia como linsolve() . Sin embargo, las bibliotecas de bajo nivel ("solver"), como LAPACK No lo hará.
Dos últimas aclaraciones:
-
Un "solucionador" corresponderá normalmente a una solución bien definida pero abstracta matemáticas problema. Por ejemplo, la "inferencia estadística" o la "predicción acertada" no son problemas de este tipo. En el lenguaje de Ciencia computacional , tú verificar un solucionador, usted validar un modelo.
- Las ideas de único/no único o exacto/aproximado no están del todo claras. Digamos que nos centramos sólo en el caso de los sistemas cuadrados de ecuaciones, lo que debería eliminar la mayoría de los puntos de controversia. En este campo, es habitual hablar de "solucionadores iterativos" (por ejemplo, ~600.000 visitas en Google Scholar ). Por lo tanto, el de facto La definición de "solucionador" debe incluir esta clase de algoritmos, que por definición son esencialmente inexactos.
0 votos
He entendido que "solucionador" es un optimizador para problemas con soluciones únicas, pero quizás estoy mal informado.
0 votos
En general, un solucionador para la optimización es similar a un motor para la conducción. Yo llamaría a Gurobi un solucionador, es como un motor. MATLAB es como una marca de coches, es el nombre del entorno general.
0 votos
Suelo oír que se utiliza "solucionador" para describir software lo que significa que se aplica a un aplicación de un algoritmo. En general, el término se reservará para los problemas matemáticos con una "solución bien definida". Una solución única es suficiente, como dice @Sycorax, y el Gurobi parece ser para los problemas de esta clase. Pero no creo que sea necesario que sean únicos, por ejemplo, tanto los problemas de optimización local como los globales pueden tener soluciones bien definidas pero no únicas.