Duplicar entidades de planificación en la solución

Soy nuevo en Optaplanner e intento resolver un problema bastante simple (por ahora, agregaré más restricciones eventualmente). Mi modelo es el siguiente: tengo tareas ( MarkerNesting), que deben ejecutarse una a la vez en un VirtualMachine; el objetivo es asignar una lista de MarkerNestings a VirtualMachines, utilizando todas las máquinas (podemos considerar que tenemos más tareas que máquinas como primera aproximación). Como resultado, espero que cada tarea tenga una fecha de inicio y una fecha de finalización (como variables ocultas, aún no implementadas).

Creo que debo usar una variable encadenada, VirtualMachinesiendo el ancla (encadenado a través del patrón de tiempo), ¿estoy en lo cierto?

Así que escribí un programa inspirado en algunos ejemplos (tsp y coach y shuttle) con 4 máquinas y 4 tareas, y espero que cada máquina tenga una tarea cuando se resuelva. Sin embargo, cuando lo ejecuto, obtengo algunos resultados extraños: no se utilizan todas las máquinas, pero lo peor es que tengo MarkerNestinginstancias duplicadas (ejemplo de salida):

[VM 1/56861999]~~~>[Nesting(155/2143571436)/[Marker m4/60s]]~~~>[Nesting(816/767511741)/[Marker m2/300s]]~~~>[Nesting(816/418304857)/[Marker m2/300s]]~~~>[Nesting(980/1292472219)/[Marker m1/300s]]~~~>[Nesting(980/1926764753)/[Marker m1/300s]]
[VM 2/1376400422]~~~>[Nesting(155/1815546035)/[Marker m4/60s]]
[VM 3/1619356001]
[VM 4/802771878]~~~>[Nesting(111/548795052)/[Marker m3/180s]]

Las instancias son diferentes (para leer el registro:) [Nesting(id/hashcode)], pero tienen la misma identificación, por lo que al final son la misma entidad. Si entiendo bien, Optaplanner clona la solución cada vez que encuentra la mejor, pero no sé por qué combina instancias como esa.

¿Hay algo mal en mi código? ¿Es un comportamiento normal?

¡Gracias de antemano!

Respuesta 1

Soy relativamente nuevo en Java y tuve un examen el año pasado que me atascó. La tarea me pidió que diferenciara qué opciones se ejecutan en tiempo de compilación / tiempo de ejecución. Tipo de fundición. Atascamiento tardío. ...

Estoy desarrollando un juego del ahorcado para la universidad. Y debe estar sobre sockets, con servidor y clientes. El juego funciona bien por ahora. Pero cuando lo juegan dos personas, tratando de adivinar la misma palabra, yo ...

Estoy tratando de convertir el código scala anterior al código java 1.8. En scala, estaba usando un mapa para almacenar todas las referencias de funciones de clases respectivas. Como se muestra aquí en la clase Driver.scala ...

En EWS, el EmailMessage tiene un remitente (emailMessage.getSender ()) y puede tener archivos adjuntos (emailMessage.getAttachments ()). Estos archivos adjuntos pueden ser FileAttachment (para archivos) o ItemAttachment (para ...