Estás tratando de resolver una clase de problemas llamados problemas de optimización global [1]. La escalada es un algoritmo codicioso, por lo que es vulnerable a los máximos locales y se adapta mejor a la optimización local.
El ascenso aleatorio al subir una colina [2] es una variante cercana que podrías probar. Involucra múltiples carreras de escalada, cada una comenzando desde una condición inicial aleatoria, y toma el mejor resultado en todas las carreras. (¡Gracias a Marc Pujol por señalar esto en los comentarios!)
También hay muchas heurísticas aparte de la escalada para abordar problemas de optimización global [3, 4]. Aquí hay algunos conocidos que pueden ser interesantes:
- ¿Qué se puede lograr de los algoritmos de aprendizaje? ¿Conducirá a un individuo a ser un mejor programador?
- ¿Qué algoritmos debo saber para poder resolver la pregunta de Aprendizaje automático / Ciencia de datos de CodeSprint 5 en HackerRank?
- Cómo hacer un algoritmo de filtrado basado en contenido de Python
- Cómo analizar la complejidad temporal del algoritmo MST de prims
- ¿Por qué la complejidad temporal no devuelve el tiempo de ejecución exacto de un algoritmo?
- Recocido simulado [5] – Reemplazar iterativamente la solución actual por una cercana, eligiendo el reemplazo al azar pero ponderado hacia mejores soluciones. A medida que pasa el tiempo, disminuya la aleatoriedad en el reemplazo.
- Algoritmos genéticos [6]: comience con una población de soluciones y reemplácelas iterativamente con una nueva población creada aplicando un cruce genético y una mutación a la población actual, y filtrando estas poblaciones de acuerdo con una función de aptitud .
- Optimización de colonias de hormigas [7]
- Búsqueda tabú [8]
[1] http://en.wikipedia.org/wiki/Glo…
[2] http://en.wikipedia.org/wiki/Hil…
[3] http://en.wikipedia.org/wiki/Glo…
[4] http://en.wikipedia.org/wiki/Met…
[5] http://en.wikipedia.org/wiki/Sim…
[6] http://en.wikipedia.org/wiki/Gen…
[7] http://en.wikipedia.org/wiki/Ant…
[8] http://en.wikipedia.org/wiki/Tab…