Hola gente!
Estoy inmerso en un proyecto para una simulación de vida artificial evolutiva con la implementación de redes neuronales para la IA de los autómatas. Se trata de un proyecto bastante complejo del que no hablaré porque no viene al caso.
El proyecto lo hacemos en colaboración con un amigo que sabe bastante de programación, pero no domina mucho el tema matemático. Mi caso es opuesto, no sé casi nada de programación pero se me da bien el tema matemático, por lo que hacemos un buen equipo.
Como dato que no sé si es relevante, la simulación la estamos planteando en C++ pero estamos tanteando lenguajes de Linux que suponemos podrían ser mejores.
El tema es que estoy definiendo una serie de operaciones y funciones que los autómatas deben ejecutar. La complejidad computacional de la simulación respecto del número de autómatas tiene una componente exponencial debida a las interacciones entre autómatas. Y esto me obliga a ser muy prudente a la hora de elegir una función u otra. Esto me lleva al problema:
¿Existe alguna manera de cuantificar la complejidad para ejecutar una función determinada? Con ejecutar me refiero a encontrar uno o varios valores de la función para un punto de la variable en los reales y con una precisión dada (15 dígitos, por ejemplo)
Lo que me interesa de manera más concreta es poder comparar distintas funciones candidatas para quedarme con la más rápida. Pero también me interesa saber cuanto gano o pierdo con cada elección.
Para poner un ejemplo tonto, sé que debe de ser más simple que , ¿pero cuánto más simple? Este no es el caso, pero si fuera el candidato más aproximado para solucionar el problema y la lineal fuera una aproximación buena pero peor, ¿cuánto pierdo en rendimiento por elegir ?
Es un problema de optimización en donde yo ya sé el grado de aproximación que me dan las funciones pero no sé lo que gano en rendimiento por elegir una peor aproximación.
Perdón por si estoy pasando algo fundamental por alto pero soy un auténtico analfabeto en computación y mi amigo sabe lo suficiente de programación pero tampoco domina los temas de rendimiento y optimización. Así que aquí estoy buscando el consejo de los sabios.
Gracias y un saludo.
Estoy inmerso en un proyecto para una simulación de vida artificial evolutiva con la implementación de redes neuronales para la IA de los autómatas. Se trata de un proyecto bastante complejo del que no hablaré porque no viene al caso.
El proyecto lo hacemos en colaboración con un amigo que sabe bastante de programación, pero no domina mucho el tema matemático. Mi caso es opuesto, no sé casi nada de programación pero se me da bien el tema matemático, por lo que hacemos un buen equipo.
Como dato que no sé si es relevante, la simulación la estamos planteando en C++ pero estamos tanteando lenguajes de Linux que suponemos podrían ser mejores.
El tema es que estoy definiendo una serie de operaciones y funciones que los autómatas deben ejecutar. La complejidad computacional de la simulación respecto del número de autómatas tiene una componente exponencial debida a las interacciones entre autómatas. Y esto me obliga a ser muy prudente a la hora de elegir una función u otra. Esto me lleva al problema:
¿Existe alguna manera de cuantificar la complejidad para ejecutar una función determinada? Con ejecutar me refiero a encontrar uno o varios valores de la función para un punto de la variable en los reales y con una precisión dada (15 dígitos, por ejemplo)
Lo que me interesa de manera más concreta es poder comparar distintas funciones candidatas para quedarme con la más rápida. Pero también me interesa saber cuanto gano o pierdo con cada elección.
Para poner un ejemplo tonto, sé que debe de ser más simple que , ¿pero cuánto más simple? Este no es el caso, pero si fuera el candidato más aproximado para solucionar el problema y la lineal fuera una aproximación buena pero peor, ¿cuánto pierdo en rendimiento por elegir ?
Es un problema de optimización en donde yo ya sé el grado de aproximación que me dan las funciones pero no sé lo que gano en rendimiento por elegir una peor aproximación.
Perdón por si estoy pasando algo fundamental por alto pero soy un auténtico analfabeto en computación y mi amigo sabe lo suficiente de programación pero tampoco domina los temas de rendimiento y optimización. Así que aquí estoy buscando el consejo de los sabios.
Gracias y un saludo.
Comentario