François Bergeret escribió:
Cuarto camino al juego boulier.
Hola lee
JMP tiene una característica muy agradable, las funciones de deseabilidad, que también se pueden usar para resolver el problema de los bouliers.
- Creación de un conjunto de datos con 4 columnas nuevas, una por color, con datos aleatorios de una distribución normal: Random Normal () * 3
- Creando 5 nuevas variables y, una por línea, y1 a y5, con una fórmula para vincular los colores con el total de la línea (por ejemplo, y1 = 5black + 5blue ...)
- Creación de 100 000 líneas con datos aleatorios para los colores y resultados de y1 a y5.
- Ajuste de un modelo para y1 a y5, con colores como variables explicativas
- El énfasis en la plataforma del modelo Fit es la detección de efectos, luego se establece la conveniencia a un objetivo de 12 para cada y (deseabilidad = 1 cuando y = 12, yendo a 0 cuando y está lejos de 12)
- La tolerancia de convergencia en las opciones de Maximización está configurada en 1E-12 para obtener resultados numéricos exactos para el problema del boulier (solo unos pocos ms más)
- Maximizar la conveniencia da: negro = 5, azul = 1, marrón = 3, rojo = 1.5
Conjunto de datos disponible bajo demanda
François Bergeret (desde Francia)
Esta publicación de blog fue escrita por un blogger que ya no está en SAS
Mis amigos y compañeros de trabajo me conocen como el pequeño francófono. Viajo a Francia tan a menudo como puedo. Actualmente estoy trabajando en una maestría en la materia en North Carolina State University. Y acumulo todos los periódicos y revistas franceses que tengo en mis manos.
Le Figaro Es un diario que añade un suplemento. Revista Le Figaro a su edición del sábado. Allí encontrarás noticias de arte, columnistas y mi favorito: juegos.
Siempre me sorprende cómo los franceses hacen juegos simplemente por cosas que consideramos dramáticamente no divertidas. Por ejemplo, uno de los juegos en la revista se relaciona con una carta de Blaise Pascal a su hermano, donde tiene que (a) completar la carta con 16 palabras dadas; (b) corregir 16 errores de ortografía o lenguaje; y (c) encuentre 15 anomalías, anacronismos o imposibilidades históricas.
Uno de los juegos de números saltó hacia mí (juego de palabras destinado). Aquí está el juego que voy a resolver usando JMP, en su forma original.
El Encuentra el valor de una bola de cada color, sabiendo que el total de las bolas en una línea siempre es igual a 12]
Hay al menos tres formas de resolver esto: probablemente más, si pienso en estas cosas más tiempo del que me tomó comer Happy Meal ™ en Chez McDo's.
Método 1: Fuerza bruta
Un enfoque de fuerza bruta es recorrer todos los colores posibles ( rojo = x , marrón = y , negro = z. azul = w ) reconociendo que no pueden ser menos de cero ni más de 12. Aquí hay un script JMP que hace eso: Cuatro bucles For que ciclan cada valor de 0 a 12 en pasos de 0.5. Cuando llega a un resultado, escribe el resultado en el registro.
For( x = 1, x <= 12, x += 0.5,
For( y = 1, y <= 12, y += 0.5,
For( z = 1, z <= 12, z += 0.5,
For( w = 1, w <= 12, w += 0.5,
If( 2 * z + 2 * w == 12,
If( z + 2 * y + w == 12,
If( 3 * y + 2 * x == 12,
If( z + y + 4 * w == 12,
If( z + w + 4 * x == 12,
Show( x, y, z, w );
)
)
)
)
)
)
)
)
)
¿Los resultados? rojo = 1.5 , marrón = 3 , negro = 5. azul = 1
Método 2: Mínimos cuadrados
La siguiente forma es reconocer esto como un problema de mínimos cuadrados. El valor adjunto a las bolas son los coeficientes de un modelo lineal, con las propias bolas como datos. Entonces, puedo hacer una tabla de datos JMP que contiene las cinco filas e información sobre las cuatro bolas de colores. Esto es:
Y al usar la ventana del modelo de ajuste de JMP, puedo obtener estimaciones de mínimos cuadrados en las bolas. Estoy usando un modelo sin intercepción porque sé que el modelo lineal debe pasar por el origen.
Así ("¡Bam!", Me digo a mí mismo), obtengo los resultados y la respuesta al rompecabezas.
Método 3. Usando matematicas
Si tomó Álgebra II en los últimos 40 años, estudió estas cosas llamadas matrices. Resulta que son realmente útiles. Y si no reconoces el rompecabezas en su sentido de mínimos cuadrados, siempre hay una forma matemática de verlo. No se lo digas a nadie, pero en realidad son el mismo enfoque: la matemática que ves a continuación es lo que está sucediendo entre bambalinas en JMP.
Si expresa la configuración del rompecabezas utilizando matrices (cinco filas que representan las cinco filas del rompecabezas), puede hacer que la tabla se represente de esta manera (llámela UNA ).
A = [0 0 2 2
0 2 1 1
2 3 0 0
0 1 1 4
4 0 1 1]
y el hecho de que estas cinco condiciones suman 12, representadas como
C = [12
12
12
12
12]
con una matriz final segundo Representando las incógnitas: el valor de las bolas.
b = [x
y
z
w]
Para resolver esto, simplemente tenemos que empezar con
Ab = do
y obten segundo solo en el lado izquierdo de la ecuación. Típicamente, haríamos lo simple de multiplicar ambos lados por UNA -1 , Me gusta esto:
UNA -1 Ab = UNA -1 do
Pero no sabes que hay un problema. Como el rompecabezas tiene cuatro variables y cinco filas, su representación matricial no es cuadrada. Así que no podemos simplemente usar un inverso ordinario. Podemos multiplicar A por su transposición para obtener una matriz cuadrada, aunque esto todavía no es invertible. Afortunadamente, JMP tiene el Moore-Penrose generalizado inverso Función (que suena mejor en cursiva, ¿no te parece?). Usándolo, puedo escribir un simple script JMP para asignar las matrices y resolver el problema:
A = [ 0 0 2 2, 0 2 1 1, 2 3 0 0, 0 1 1 4, 4 0 1 1];
C = [12, 12, 12, 12, 12];
ginverse(A`*A)*A`*C;
dando el resultado (con error de redondeo, supongo en el delicado proceso de inversión)
[1.5, 3, 5.00000000000001, 0.999999999999994]
La misma respuesta. Y si los errores de redondeo te dan los heeby-jeebys, puedes usar la función Resolver de JMP.
A = [ 0 0 2 2, 0 2 1 1, 2 3 0 0, 0 1 1 4, 4 0 1 1];
C = [12, 12, 12, 12, 12];
solve((A`*A),A`*C);