Sto cercando di sviluppare un'applicazione C# che generi un elenco di tutte le permutazioni possibili, entro un limite e un costo. Ad esempio, ho una lista di 80 posti di lavoro. Ogni lavoro ha un valore (1-5) (tipicamente 3) e ogni ingegnere ha un limite di quanto possono fare, in genere un valore di 20.C# ha ordinato l'algoritmo
Al momento ho iniziato producendo un elenco di tutti combinazioni possibili (n!/(k! * (nk)! dove n è il numero totale di lavori e k è 2) Il collegamento tra ogni lavoro deve essere ponderato con la distanza tra ogni lavoro
Da qui io vorrebbe scegliere un lavoro iniziale iniziale e produrre un elenco di tutte le possibili combinazioni di lavori (dal lavoro iniziale) fino al limite di 20 e quindi ordinato sulla somma del peso. Il percorso con il peso più basso vince e viene assegnato a l'ingegnere Il mio problema è che non so come affrontare questo - quale struttura dati sarebbe la migliore?
In genere ci sono circa 6-8 ingegneri (a seconda del carico di lavoro), avevo programmato di instradare ogni ingegnere uno alla volta - una volta che un percorso era stato assegnato a un altro ingegnere, quei lavori sarebbero stati rimossi dalla lista e un nuovo avvia il lavoro selezionato con una nuova serie di combinazioni generate. Sembra un approccio accettabile?
Qualsiasi assistenza sarebbe gradita.
questo suona fondamentalmente come un problema di matematica, invece di un problema C#. (sebbene entrambi siano molto vicini): –
Problema dello zaino ripetuto? – dtb
C'è una libreria C# per fare permutazioni, combinazioni, prodotti cartesiani e altre pratiche funzioni combinatorie qui: http://www.codeproject.com/KB/recipes/Combinatorics.aspx –