Skip to content

La guerra es siempre el mayor error: Julio Molero

Este interesante hilo de Twitter muestra cómo un minúsculo error puede costar muchas vidas humanas

El 25 de febrero de 1991, durante la Guerra del Golfo, una batería de misiles Patriot estadounidenses en Dharan (Arabia Saudita) no logró interceptar un misil Scud iraquí. Murieron 28 soldados estadounidenses. La causa: un error de 0.000000095.

https://www.latimes.com/archives/la-xpm-1991-02-26-mn-1889-story.html

¿Qué ocurrió? ⬇️⬇️

Los Patriot eran (son) misiles tierra–aire de largo alcance y carácter defensivo.

Cuando el radar de la batería detectaba un ataque enemigo con misiles, los Patriot eran lanzados con el propósito de destruir el objetivo antes de que llegara a su objetivo.

El proceso era sencillo:

1) El radar detectaba un objeto extraño.

2) Sabiendo la velocidad de un Scud, el sistema predecía su posible ubicación posterior y comprobaba si el objeto había seguido dicha trayectoria.

3) Si la amenaza se confirmaba, se lanzaban los Patriot.

class=

Así ocurrió, por ejemplo, el 18 de enero de 1991 (https://elpais.com/diario/1991/01/21/internacional/664412415_850215.html).

Raytheon (https://www.raytheon.com/), la empresa fabricante, aseguraba, triunfante, que el sistema tenía un 80% de eficacia.

Sin embargo, y ya desde los primeros momentos de su uso (masivo durante la Guerra del Golfo), los expertos científicos dudaron de dicho porcentaje. En cualquier caso, no aseguraban ninguna cifra por encima del 50%. Casi un cara o cruz. Y una de las más desgraciadas cruces ocurrió el fatídico 25 de febrero.

Serían las 20:30 cuando comenzaron a sonar las sirenas y un arcoiris de fuego iluminó el cielo en la fría noche del desierto. Un Scud, lleno de muerte, viajó “plácidamente” a más de 1600 metros por segundo hasta un cuartel a las afueras de Dhahran.

class=

Debía haber sido interceptado, pero algo falló.

Los ordenadores de los Patriot habían de predecir la trayectoria del misil, punto a punto, en función de dos variables (reales): la velocidad (conocida) y el último momento de tiempo en que fue detectado en el radar.

class=

La velocidad de un Scud (conocida) es un número real.

El tiempo es una magnitud real, pero el sistema la calculaba mediante un reloj interno como una variable entera en décimas de segundo. Tanto mayor cuanto mayor era el entero que representaba el tiempo.

class=

Ahora bien, los ordenadores de los Patriot almacenaban los números reales representados en punto flotante con una mantisa de 24 bits. Esa era la máxima precisión.

A fin de cuentas, solo se podían almacenar unos cuantos dígitos que debían estar expresados en el sistema binario.

class=

El tiempo, que inicialmente se expresaba en unidades de décimas de segundo, debía ser transformado a segundos. Esta operación pasaba necesariamente por multiplicar internamente por 1/10.

Pero, pensemos un momento… ¿cómo se escribe 1/10 en el sistema binario?

class=

El número 1/10 es igual a:

1/2⁴+1/2⁵+1/2⁸+1/2⁹+1/2¹²+1/2¹³+ ….

En otras palabras, la representación binaria de 1/10 es:

0.000110011001001100110011001100…

¡Tras la coma, hay infinitas cifras!

class=

Como solo se podían almacenar unos cuantos dígitos, el ordenador sustituía el valor real por:

0.00011001100110011001100,

introduciendo un ERROR (binario) de:

0.0000000000000000000000011001100…

que aproximadamente corresponde a 0.000000095 segundos (en decimal). ¿Insignificante, verdad?

class=

O no tan insignificante…

Los ordenadores llevaban alrededor de 100 horas funcionando, es decir:

100×60×60×10=3600000 décimas de segundo.

Si en cada décima de segundo se introduce un error de 0.000000095 segundos, el error total es de:

0.000000095×3600000=0.342 segundos.

class=

Dado que un Scud viaja a 1676 m/s (aprox.), el desplazamiento adicional del misil en 0.342 s fue de 573.192 m… Suficiente para escapar de la validación de la posición.

El sistema asumió que era una falsa alarma y el Scud alcanzó su objetivo sin oposición alguna.

class=

Toda la situación se relata en un informe de la GAO (U.S. Government Accountability Office) de febrero de 1992 titulado Un problema de software condujo a un fallo del sistema en Dhahran, Arabia Saudita (https://www.gao.gov/assets/220/215614.pdf).

 

class=

Los expertos israelíes habían identificado el problema y habían informado al ejército estadounidense el 11 de febrero de 1991. Recomendaban reiniciar el sistema informático como solución temporal; sin embargo, ignoraron aquella “sugerencia” infantil.

class=

Por otra parte, Raythen había remitido el software actualizado al ejército y fue recibido en Riad el 24 de febrero, pero, de nuevo, los expertos técnicos no creyeron urgente la actualización y llegó a las 21 baterías de los Patriot justo el día después del ataque.

class=

El resultado fue dramático 28 fallecidos y más de 100 heridos. La Guerra del Golfo acabó tres días después con la rendición de Irak.

Sin embargo…

¿Se puede decir que fallaron los algoritmos? No. ¿Que fallaron los ordenadores? No. En este caso, el planteamiento ignoró un minúsculo error de 0.000000095.

Pero no nos olvidemos de una cosa: LA GUERRA ES SIEMPRE EL MAYOR ERROR.

class=