Ho un problema che può essere ridotto a un problema di assegnazione. (In una domanda precedente ho scoperto come farlo.)
Ciò significa che abbiamo un insieme di agenti e un insieme T di attività, nonché una funzione di costo c ( i , j ) . Dobbiamo trovare un incarico in modo che il costo totale sia minimo.
L' algoritmo ungherese può trovare una soluzione ottimale in almeno . Il che suona bene per me.
Il mio nuovo problema è: esiste un determinato numero di giorni. Devo risolvere il problema di assegnazione per ogni giorno in modo che ogni attività venga eseguita ogni giorno e nessun agente svolge la stessa attività due volte .
Cosa ho provato: potremmo eseguire l'algoritmo ungherese separatamente per ogni giorno e limitare il numero di possibili combinazioni in base al risultato del giorno precedente. Ma questo ci metterebbe nei guai in alcuni dei giorni successivi, dove molto probabilmente sarà impossibile trovare una soluzione fattibile.
Un'altra idea è quella di integrare in qualche modo la ricerca locale per cambiare le decisioni prese in un giorno precedente. Ma penso che non possiamo fare affidamento su questo.
Le istanze problematiche che dovrò affrontare saranno da qualche parte nei dintorni . La matrice di costo C ( i , j ) avrà molti stessi valori (ad esempio, principalmente 1 o infinito, solo circa 2 o 3). Quindi durante l'algoritmo ungherese c'è molto spazio per creare diverse soluzioni ottimali per un solo giorno.
Sarei felice di ascoltare alcune idee o consigliare come trovare una buona soluzione al problema. Grazie in anticipo.