programming learning language-agnostic

language agnostic - learning - Recomendaciones de software para el plan de asientos(¿existe tal bestia?)



learning programming (7)

http://www.perfecttableplan.com/

Creo que esto es de un tipo que generalmente publica en Joel On Software.

Nunca lo intenté sin embargo. Espero eso ayude.

Me voy a casar pronto y estoy ocupado con el plan de asientos, y me estoy encontrando con los problemas habituales de quién se sienta donde: X e Y deben sentarse juntos, pero A y B no se pueden sostener el uno al otro, etc.

Los números con los que estoy tratando no son enormes (por lo que la opción manual funcionará bien), pero siendo persuasión geek, me preguntaba si había algún software disponible para hacer esto por mí.

Al fallar una coincidencia exacta, ¿qué debo buscar (el espacio del problema, los libros, el código de referencia) para modificar para mis propósitos?


Espero que esta no sea una gran respuesta, pero podrías investigar el comportamiento de flocado

Si quitas el nerviosismo aleatorio en cada paso, la bandada finalmente establece dónde cada miembro ha encontrado su posición óptima en relación con el resto del grupo.


Esto suena como un problema de satisfacción de restricción. Probablemente debería verificar los sistemas de programación lógica que también están equipados con soluciones de restricciones. Por lo general, son como prólogos, pero en realidad son declarativos en cuanto a los problemas que son solucionados por sus solucionadores.

Esperemos que haya uno que tenga una interfaz sencilla de su idioma favorito, para ingresar y sacar datos.


Intenta modelar esto usando GLPK. La programación lineal entera es susceptible de introducir restricciones en problemas basados ​​en gráficos con múltiples resultados posibles.


Mi favorito personal es no asignar asientos: permita que las personas se sienten donde quieran.

Eso podría llevar a una discrepancia intencional [no], pero significa que no tienes que preocuparte por eso.


Soy el desarrollador de PerfectTablePlan. Publiqué aquí además de Joel''s Business of Software . ; 0)

Los problemas combinatorios, como la asignación de asientos, son bastante desagradables algorítmicamente. NP-duro de hecho. ¡La cantidad de asientos para 60 invitados en 60 asientos es de 60! (60 factorial) y eso es más que el número de átomos en el universo conocido.

PerfectTablePlan le permite especificar que A debe sentarse al lado de B, pero no cerca de C. Utiliza un algoritmo genético para asignar automáticamente los asientos. Esto funciona bastante bien en la práctica: por lo general, encontrará una solución decente para 100 invitados en unos pocos segundos. Es posible que tenga que hacer un café para más de 1000 invitados. En la práctica, también se requiere generalmente un ajuste fino para hacer frente a los caprichos de las costumbres locales y la política familiar (el tío Bob es un poco sordo, es mejor que lo acerquemos a la mesa superior).

Puede encontrar un poco más sobre el algoritmo genético aquí .

Ps / La asignación automática de asientos es solo una pequeña parte de crear un buen plan de asientos. Consulte el recorrido de PerfectTablePlan y la página de sugerencias para obtener más detalles.


Hace un tiempo, utilicé un programa que encajaría perfectamente ... era una aplicación Java, podías definir reglas y crear casos de prueba que satisfacían las reglas. La extensión de archivo era .als

fact GateRules { all g:Gate | one g.loc // Gates have 1 Location

Seguiré arruinando mi cerebro por el nombre del programa.

EDITAR: Fue Aleación Ahora que lo pienso, puede que no sea ideal; la noción de "asientos en una configuración fija" sería un poco difícil de modelar. Lo utilicé de manera diferente: definiendo reglas (una puerta del aeropuerto está en una ubicación, solo un avión está en una pista) y probando las condiciones previas y posteriores para las funciones (después de aterrizar un avión, ¿puedo incluso tener más de un avión en una ¿pista?).