Esta entrada es, como diría Alberto, una 'rayada', pero también una pregunta, humildemente planteada, a alguien que de esto sabe muchísimo más que yo. JJ, permite que abuse un poquito de tí haciéndote una consulta. ¿Podemos utilizar algoritmos genéticos para mejorar procesos de prestación de servicios? ¿Debemos? Te cuento.
Estamos trabajando para una gran empresa, una multinacional de primer nivel, líder en su sector, con presencia en más de un centenar de países. La empresa posee multitud de centros operativos distribuidos por todo el mundo. Nuestro trabajo tiene diversas facetas, pero básicamente consiste en el rediseño de los procesos de un área crítica para el correcto funcionamiento de dichos centros. Ese área o unidad organizativa desarrolla su actividad a través de cinco grandes procesos - o macroprocesos, como algunos denominan. Estamos estudiando de forma simultánea tres de ellos, puesto que, en nuestra opinión, están tan estrechamente relacionados que prácticamente podrían considerarse un único macroproceso. En estos momentos tratamos de entender cómo se desarrollan esos procesos en la compañía.
No te extrañará lo más mínimo que te diga que nos estamos
encontrando con que hay diferencias, a veces de bastante calado, en el
desarrollo de los procesos de un centro a otro. Aunque hace años la
empresa realizó un tremendo esfuerzo por normalizar sus prácticas en
todo el mundo, con el paso de los años estos procesos han ido - sí, se
podría decir así - "evolucionando". Los diferentes centros, en este
caso, no tienen prácticamente ningún contacto entre sí, así que cada
uno ha ido encontrando soluciones distintas para adaptarse a las
presiones derivadas de: la introducción de nuevas tecnologías; la
creciente complejidad del servicio; la intensidad de la competencia o
la reducción de las plantillas, por citar sólo algunos factores.
Algunas de estas 'soluciones' son verdaderamente ingeniosas. Algunas
son fácilmente trasladables al resto de la organización - 'exportables'
-, otras no tanto.
Bien, en un momento dado me encontraba comparando una docena de
diagramas de flujo, todos ellos parecidos, todos ellos distintos, de un
mismo macroproceso. Probablemente por deformación académica, me vino
a la cabeza algo como esto: "es como si, a partir de un antepasado
común" - el proceso normalizado instituido hace una década - "hubieran
aparecido diferentes 'especies', emparentadas entre sí". Empecé a
pensar que cada una de esas "especies" o variantes de procesos
representaba, muy probablemente, la mejor solución que las personas que
trabajaban en dicho centro habían encontrado, por ensayo y error, para
dar respuesta a sus condicionantes particulares. Pero tal vez, como
ocurre en la naturaleza - que es muy chapucera - muchas de esas
variaciones podían entenderse como fruto del azar; dicho de otra
manera, que fueran el resultado de la influencia de otros factores que
nada tenían que ver con el desempeño del proceso. Muy bien podía ocurrir
que muchas de esas 'buenas soluciones' no fueran, de hecho, la 'mejor'
solución posible de acuerdo con los criterios de eficiencia
establecidos por la matriz. Y si eso es así, ¿Cómo podríamos llegar a
descubrir esa "mejor solución"... si es que existe?
He pensado que tal vez la respuesta podría surgir de aplicar al conjunto de variantes un algoritmo genético, un mecanismo por el cual cada una de ellas 'compitiera' con el resto de acuerdo con los criterios - 'ratios ideales' - definidos por la corporación central para los procesos del área. Las mejores 'soluciones' encontradas en una primera ronda podrían 'cruzarse ' entre sí, para generar nuevas variantes, que volverían a competir entre sí, etc. De esta forma, en teoría, aceleraríamos en un ordenador esta 'evolución' que se ha dado de forma natural, para llegar a... ¿el proceso ideal?
Sinceramente, no tengo muy claro cómo podríamos llevar este planteamiento a la práctica. Mis dudas surgen al intentar resolver la cuestión de "cruzar" a las variantes de procesos. ¿Cómo se podría hacer esto? Hay una serie de elementos del proceso que deben estar presentes siempre, bien sea por razón de la misión que desempeña dicho proceso, bien sea por condicionantes de otro tipo - por ejemplo, legal. Es decir, la variabilidad en el proceso no es infinita - si eliminamos determinados elementos, éste deja de ser funcional. Supongo que deberíamos empezar por identificar esos elementos "críticos". Después deberíamos pensar en un mecanismo aleatorio que permita eliminar e insertar las 'variantes' en los 'troncos' principales de los procesos. A partir de ahí realizaríamos las simulaciones, obtendríamos los resultados de desempeño para cada variante y seleccionaríamos las mejores... ¡qué jaleo!!
Uf no, sé... ¿Resultaría esto de utilidad a nuestro cliente? Tal vez... aunque probablemente estoy complicando las cosas como un sólo consultor puede hacerlo!!
Mario, deberian darte un premio a la innovación en consultoría... va a "flipar" el cliente cuando le hables de esto
Posted by: raul | 11/19/2005 at 09:49 PM
Te felicito Mario, me parece una reflexión muy interesante, que me he permitido de replantear en mi àmbito de trabajo que és el docente y la he trasladado a mis seguidores del blog.
http://phobos.xtec.es/fmas/blog//archive.php?m=11&d=08&y=2005&blogid=1
Posted by: Narref | 11/08/2005 at 10:58 AM
Lo dicho, muchas gracias otra vez, JJ :-)
Ok, voy a hablar del tema con mi cliente mañana mismo, así que pronto tendré noticias en un sentido u otro.
Por cierto, gracias por la referencia. Aunque no he podido descargar el artículo, me ha dado alguna pista interesante.
Seguimos en contacto por canal privado!
Posted by: Mario | 11/07/2005 at 09:09 PM
He encontrado un trabajo que trata del tema; no es muy reciente, posiblemente haya otros más actuales:
http://dx.doi.org/10.1016/S0305-0548(00)00038-1
Lo de la mutación, supongo que lo dices porque la mayor parte de las mutaciones podrían generar árboles inválidos; en realidad, no hace falta que sea así. Si se pueden usar operadores de mutación "heurísticos", que reflejen incluso el propio proceso "natural" de evolución de los procesos.
En todo caso, si quieres, dame un toque por email y seguimos esta conversación en privado.
Posted by: JJ | 11/07/2005 at 10:06 AM
Muchísimas gracias, JJ!
Sí, tenemos formas objetivas de medir cuál de esas formas sería la mejor. Los criterios se denominan en su conjunto "ratios ideales" y hacen referencia a eficiencias económicas y operativas del proceso.
Decir si una práctica es mejor que otra, puestas una al lado de la otra, se 'reduciría' correr simulaciones, basándonos en datos de capacidad de proceso, y comparar los resultados con los "ratios ideales".
Tengo mis dudas con respecto de hasta dónde podemos variar ("mutar") los procesos sin que dejen de ser eficaces. Me temo que esa variación tendría que ser generada manualmente.
Si finalmente la aplicación del algoritmo genético proporciona un conjunto de alternativas de proceso con una puntuación claramente superior al resto, podemos suponer razonablemente que esas alternativas son las mejores soluciones para la empresa, de acuerdo con los criterios definidos por la Central. Creo que sí podría funcionar, aunque me temo que el trabajo sería bastante arduo...
Posted by: Mario | 11/07/2005 at 08:21 AM
Algo he encontrado, pero es de una empresa, NuTechSolutions. Buscaré en la biblio de la universidad y te cuento.
Posted by: JJ | 11/05/2005 at 07:04 PM
A ver, después de leido, se me ocurre lo siguiente. Primero, no tengo muy claro si tenéis una forma objetiva de medir qué tipo de práctica es mejor. Ni siquiera sé si, puestas dos prácticas una al lado de otra, se puede decir si una es mejor que otra. No hace falta que haya un sólo número, ni que se pueda establecer un ranking, sino que haya formas unívocas de, una vez establecido un esquema de los procesos de un área, asignarle un número.
Supongamos que lo tenemos. Lo segundo que hace falta es establecer una forma de variar ese esquema. Habrá formas válidas, y formas no válidas. No importa demasiado, siempre que se puedan distinguir las unas de las otras, y todas puedan tener una puntuación de las anteriores.
Y lo tercero es, como has mencionado, una forma de combinar varios esquemas de procesos para dar uno y que, como en el caso anterior, se pueda establecer si es válido o no.
En tal caso, no es problema ejecutar el algoritmo evolutivo (que no genético, que es un tipo especial del mismo). Lo que ocurre es que, por lo que cuentas, no tengo muy claro si es exactamente lo que querríais. El algoritmo genético, finalmente, dará un esquema de procesos cuya puntuación sea muy alta, pero que quizás por razones pragmáticas sea totalmente irrealizable. Quizás tampoco queráis que se halle el mejor esquema de procesos posible; en tal caso, el algoritmo evolutivo puede ayudaros a encontrar buenos candidatos que quizás no podrían haber salido de otra forma.
En resumen, que no tengo muy claro cuál es el problema que queréis resolver ni cuáles son los ingredientes; en todo caso, buscaré un poco en la literatura, a ver qué encuentro, y te invito a que me envíes un email por si necesitas más aclaraciones.
Posted by: JJ | 11/05/2005 at 06:45 PM
Virgen Santa!! Eso me pasa por preguntar!
Posted by: Mario | 11/05/2005 at 10:16 AM
Bueeeno. Haré un comentario serio:
-Quizá convendría, antes de cruzar variables e introducir aleatoriedad, "desbrozar" cuáles de los macroprocesos están afectados por un sesgo heurístico. Es decir, determinar si un centro se está actuando de acuerdo a partir de una experiencia que ya no tiene sentido o no se adecúa al flujo de procesos actual.
-En "Ecología de la civilización técnica", Edgar Morin señala que los sistemas hipercomplejos se cambian más fácilmente ( y quizá sólo de esa manera) alterando los micro-procesos que no están sometidos a una inercia masiva de funcionamiento.
Posted by: Alberto | 11/04/2005 at 09:31 PM