miércoles, 7 de octubre de 2009

Códigos de barras: logística y matemáticas

Ya que google hoy se ha propuesto recordar el código de barras, no vamos a dejarlo sólo en esta batalla. Ahí va una entrada sobre el tema, centrándonos en cómo las matemáticas ayudan a la logística, eso por no hablar de la automatización de la lectura del código. Espero que os guste...

Pongámonos en una situación imaginaria. Somos los encargados de la gestión de un almacén y tenemos que trabajar llevando nuestra mercancía a un supermercado del que somos proveedores. Para facilitar el manejo de los diferentes productos, tenemos que codificarlos, ¿cómo hacerlo?
Muy sencillo. Si tenemos 100 productos, podemos asignarles un número del 1 al 100 y listo. Cada producto un número. En principio parece todo correcto, ¿no?
Bien, ahora imagina que decides codificarlos así; es decir, con números del 1 al 100. El primer día por la mañana te piden 1000 unidades del producto “99”, que imaginemos que son cajas de leche. Pero resulta que al ir a teclear el pedido en la máquina te confundes y en vez de 99 marcas 98. El error acaba provocando que salga un camión lleno de zumos para el supermercado. Todo va bien hasta que los del super comprueban que no eran zumos sino leche lo que habían pedido, con tan mala suerte de que han tardado en mirarlo y el camión ya se ha ido. Esto nos lleva a tener que mandar otro camión para que recoja los zumos del supermercado y otro más para que lleve las cajas de leche tal y como el supermercado había pedido. ¡¡Menudo lío!! ¿No? ¿Cómo, yo señor de la logística en mi tierra el almacén, puedo usar una codificación y que no me pasen estas cosas? La respuesta está en las matemáticas.

Múltiplos de 11
Hay una curiosidad matemática que se cumple en todos los números múltiplos de 11. La suma de los dígitos en situación impar menos la suma de los de situación par (asignando posición par o impar empezando a contar por la izquierda) es igual a cero, 11 o múltiplo de 11.
Por ejemplo, 88 que es múltiplo de 11, si restamos 8-8=0. Veamos qué ocurre si usamos otro número múltiplo de 11, como por ejemplo 116105 (resultado de multiplicar 11 x 10555). Tendríamos que (1+6+0)-(1+1+5)=0. Vemos que se cumple.

Haz la prueba
Prueba por ti mismo tantas veces como quieras. Multiplica cualquier número por 11 y al resultado aplícale el método. Verás que en dicho número, si restas suma de impares menos la suma de pares, el resultado será 0, 11 o múltiplo de 11.

¿Y qué tiene que ver el 11 y sus múltiplos con los errores logísticos?
La pregunta que podemos tener en la cabeza es, ¿qué tiene que ver esto con los errores cometidos al teclear el código de un producto?
A lo cual podemos contestar con una reflexión. Imaginemos que yo me confundo en un dígito al teclear el código de un producto, en vez de poner 99, marco 98. Ya hemos visto la que se puede organizar por un fallo tan tonto, con los costes que pueden ir asociados a muchos de los errores que se pueden cometer.
Ahora, la siguiente pregunta es…¿qué pasará si el código con el que he marcado los productos, está formado por números que son todos 11 o múltiplos de 11? Y, además, la máquina en la que tecleo el código me comprueba de forma automática si es 11 o múltiplo de 11 gracias a la propiedad antes mencionada. Y si no cumplen la propiedad, la máquina no nos admite el pedido. ¿Qué ocurrirá entonces ante un error humano?
Imaginad que nos confundimos en un dígito igual que antes al meter el código. En tal caso dicho número erróneo ya no cumple con la propiedad que sí que cumplen el 11 y sus múltiplos, además de no existir como código de ningún producto. Así que la máquina no me admitirá dicho número y tendré que volver a teclearlo. El error no se produce.
En el pasado se daban esta clase de errores con frecuencia. Algunas empresas empezaron a usar este tipo de codificación para reducir estas meteduras de pata de forma significativa. Pero, ¿son los múltiplos de 11 la única solución para la reducción de errores en logística? No, de hecho esto pertenece ya al pasado. La respuesta la podemos encontrar en los algoritmos.

Algoritmos
Según el RAE un algoritmo es un “conjunto ordenado y finito de operaciones que permite hallar la solución de un problema”. Muchos códigos en la actualidad utilizan algoritmos con fines similares a los antes mencionados. Un ejemplo lo podemos ver también en la codificación de los productos, por ejemplo con la codificación actual de los códigos de barras. Los códigos numéricos que aparecen en los códigos de barras acaban con un dígito de control que es el resultado de un algoritmo matemático. El dígito de control es el que se encuentra en último lugar del código. Dicho dígito de control se calcula de la siguiente forma:
1) Se suman los dígitos de las posiciones impares (empezando por la izquierda para asignar la condición de impar, y sin contar el último número que es el de control)
2) Se suman los dígitos de las posiciones pares y el resultado se multiplica por 3.
3) Se suman los totales anteriores, es decir: suma impares + (3x suma pares)
4) Se resta el resultado de la decena siguiente, siempre que la suma no termine en 0, en cuyo caso se cogería como dígito de control el propio 0. O sea que si la suma de 3 pares + impares da 55 por ejemplo, se resta de 60 y el dígito sería 5. Si sale 50, el dígito sería 0.

Un ejemplo
Veamos lo que habría que hacer con el ejemplo de la fotografía:



Fuente de la imagen

1) 1+3+5+7+9+1=26
2) 3 x (2+4+6+8+0+2)=66
3) 26+66=92
4) 100-92=8

Como podemos ver nos sale que el dígito de control es el número 8, que es precisamente el número con el que acaba el código.

Haz la prueba
Prueba por ti mismo. Seguro que en casa tienes muchos productos codificados con este tipo de código. Puedes comprobar cómo todos cumplen con el algoritmo.

¿Todos?
Bueno, hay algunas excepciones. Por ejemplo, los productos que vienen de Estados Unidos usan un código diferente.
Algunas compañías han alterado el algoritmo para poder codificar nuevas variedades del producto sin tener que añadir más dígitos, con el consiguiente ahorro de costes.
Por ejemplo, algunos fabricantes de tabaco para algunos productos hacen: pares + (3 x impares). Para otros productos en cambio, siendo las mismas compañías, lo codifican del modo comentado en el ejemplo. Así pueden codificar nuevos tipos de tabaco sin tener que alargar el código.

¿Más ejemplos?
El empleo de algoritmos para reducir errores no sólo se emplea en logística. Sólo hay que recordar la última vez que metimos nuestro DNI en una página de internet y confundimos un dígito. ¿Qué fue lo que pasó? Seguramente que hubo que volver a escribirlo porque no se nos admite el DNI que hemos escrito, y esto es porque de forma automática están haciendo el algoritmo (el propio de dicha codificación para documentos de identidad) y ven que el número escrito por error no cumple.
Y así se evitan muchos errores que de otra forma serían frecuentes. Gran disminución del número de errores, gracias a unos sencillos cálculos. La bondad de las matemáticas supongo.

Humor científico: especial física y química
Humor científico: especial medicina

3 comentarios:

José Luis dijo...

http://www.abc.es/20091022/ciencia-tecnologia-paleontologia-evolucion/hombres-
primitivos-eran-rapidos-200910221210.html

José Luis dijo...

Vaya, lo siento me he equivocado y he pegado otra cosa en mi anterior comentario.
Quería preguntarte Héctor que si además de los algoritmos que utilizan los números de los códigos de barras, estos números sirven para identificar el país de origen del producto y para alguna cosa mas. Según me han comentado alguna vez es así.
Siento lo de mi anterior mensaje, aunque el enlace es una noticia bastante curiosa sobre los hombres primitivos.

Minipunk Arias dijo...

Impresionante, muy curioso.