Entrevista a Xavier Ruiz de SmartMonkey
Patricia Carmona Entrevistas 10/01/2017
La optimización de procesos es clave en las empresas para no malgastar recursos y sacar el máximo beneficio. Una de las optimizaciones clave es la de rutas de distribución que facilita a las flotas los mejores recorridos. SmartMonkey es una aplicación que facilita el desarrollo de las mejores rutas para la distribución. Entrevistamos a Xavier Ruiz Royo, fundador de SmartMonkey, para conocer la aplicación y cómo se ha desarrollado.
1. ¿Qué es SmartMonkey?
SmartMonkey es una startup en la que ayudamos a tomar decisiones en tiempo real de manera optimizada. Actualmente estamos concentrados en el vertical de la logística, ayudando a las empresas a optimizar las rutas de entregas en tiempo real y puedan aprender de ello para mejorar cada día.
2. ¿Cómo surgió la idea?
El proyecto de SmartMonkey nació hace 2 años como una tecnología de procesamiento distribuido. Estuvimos más de 9 meses investigando las posibles aplicaciones de la tecnología que habíamos desarrollado y después de más de 50 entrevistas a personas de ámbitos muy distintos (genómica, tráfico, industrial, big data, ...) conseguimos encontrar una persona que nos dijo que la tecnología no sólo era increíble, sino que además la utilizaría. Los otros 49, sólo veían el potencial de la tecnología, pero no veían factible llegar a utilizarla en su día a día.
Encontramos esa persona una semana antes de cerrar el proyecto. Se trataba del jefe del departamento de investigación operativa de la UOC, Angel Juan, él nos presentó lo problemas de optimización como un candidato perfecto para nuestra tecnología. Gracias a nuestra tecnología podíamos conseguir soluciones óptimas a problemas muy complejos en tiempo real a un coste muy bajo. Después de publicar un paper científico en el que demostrabamos estas afirmaciones nos lanzamos a llevar esa tecnología a un servicio comercializable.
3. ¿En qué se basa la tecnología SmartMonkey para optimizar las rutas?
En un mix de procesamiento distribuido y heurísticas que permiten conseguir resultados óptimos en tiempo real.
4. ¿Está pensado para rutas fijas o pueden añadirse direcciones continuamente?
Cada problema tiene su algoritmo.
Para el problema de rutas fijas, tenemos un algoritmo de planificación en el que organiza más de mil lugares diferentes entre diferentes vehículos pudiendo añadir otras variables muy importantes como son las restricciones horarias de los clientes (Si un cliente abre de 10 a 14) y la capacidad del vehículo (La furgoneta no puede llevar más de 1.500Kg de carga) en pocos segundos.
Para el problema de ir añadiendo direcciones continuamente tenemos un algoritmo de dispatching que unido a una fuente de datos de los vehículos en tiempo real (GPS) asigna en tiempo real nuevas entregas o recogidas que puedan aparecer de manera automática y totalmente optimizada.
5. ¿Qué tiempo medio de aprendizaje tenéis calculado para optimizar la máximo una ruta?
La principal dificultad de este tipo de problemas es el coste del cálculo de la solución óptima. Asegurar que has conseguido la mejor solución sólo puede decirse si se han calculado todas las combinaciones. Para problemas pequeños, por ejemplo 10 entregas, es un número "asumible", sólo son 3.628.800 rutas posibles (10!), el problema aparece cuando el número de paradas aumenta. Para 15 paradas, el número de rutas posibles es 1.307.674.368.000 (15!). Intentar calcular la ruta óptima para un problema habitual de una empresa media con 1000 entregas (1000!) es totalmente imposible. Por esta razón, lo que hacemos es limitar el tiempo de ejecución y quedarnos con la mejor solución que hayamos encontrado en el tiempo que tenemos disponible. Como encontrar buenas soluciones en poco espacio de tiempo, es la gracia de nuestros algoritmos.
6. Cuéntanos el stack tecnológico de SmartMonkey: lenguaje de programación, base de datos e integraciones con otras plataformas.
Los algoritmos están desarrollados en Scala, para la API está todo en NodeJS y frontend AngularJS. BBDD MongoDB y Redis.
7. ¿Cómo fue la primera versión de SmartMonkey?
Funcional! Creo que es el calificativo más importante. En un fin de semana Jaume, mi socio y responsable de tecnología, consiguió hacer un prototipo que validase lo que queríamos hacer. Funcionó y con eso empezamos a hacer entrevistas. Empezamos a buscar alguien que quisiera utilizar aquella tecnología.
Para mi, el éxito estuvo en únicamente lo que íbamos necesitando. Recuerdo que Jaume me pedía nuevas funcionalidades, y le tenía que decir que no desarrollara nada. Por esa razón hemos conseguido limitar la cantidad de código inutilizado y seguir con el mismo código base que desde los inicios.
8. ¿Cuál ha sido el reto tecnológico más importante que os habéis encontrado hasta ahora?
Desarrollar y validar los algoritmos de optimización.
9. ¿Cuál ha sido el mayor error tecnológico que habéis cometido?
La verdad es que nos ha costado encontrar algún ejemplo, pero si tuviéramos que decir algo, seguir desarrollando sobre versiones de librerías que su vida está próxima a su fin. Por ejemplo: Node 0.XX. El migrar todo a una versión superior, nos supuso un poco de retraso, aunque no fue dramático. La verdad es que no somos amantes de las últimas novedades, preferimos cosas más estables que nos permitan dormir un poco más por la noche.
10. ¿Qué próximos hitos de desarrollo tenéis marcados?
¡Conseguir ampliar el equipo técnico! El mayor reto de nuestra empresa es conseguir formar un equipo altamente eficiente con conocimientos de machine learning, desarrollo de algoritmos de optimización y procesamiento distribuido. Buscamos un Full Stack con al menos 3 años de experiencia y con ganas de conseguir mejorar un sector en auge que necesita la ayuda de la inteligencia artificial para mejorar.
Muchas gracias por la entrevista Xavier y esperamos que tengáis mucho éxito.