2012-04-14 10 views
5

Desidero ottimizzare il caricamento dei blocchi di marmo nei camion. Non lo so, se posso usare la classe Solver Foundation per quello scopo. Prima, ho iniziato a scrivere codice, volevo chiederlo qui.Ottimizzazione della solver Foundation - Imballaggio del contenitore 1D

  • Il marmo può avere un peso compreso tra 1 e 24 tonnellate.
  • Un carrello può contenere un massimo di 24 tonnellate.
  • Può essere caricato come molti cubi di marmo, in quanto può richiedere fino a 24 toni, il che significa che non vi è alcun limite di volume.
  • Ci possono essere da 200 a 500 blocchi di marmo diversi a seconda del tempo.

OBIETTIVO - L'obiettivo è caricare blocchi di marmo nella spedizione minima di camion.

Come posso farlo senza scrivere un sacco di condizioni e cicli?

Posso utilizzare Microsoft Solver Foundation per questo scopo?

Ho letto la documentazione fornita da Microsoft, tuttavia, non sono riuscito a trovare uno scenario simile al mio.

M1+ M2 + M3 + .... Mn <=24 questo è per la spedizione di un camion.

Diciamo che ci sono 200 diversi pesi di marmo e pesi di marmo sono galleggianti.

Grazie

+0

Stai cercando di smettere di fare i compiti o ...? – mellamokb

+0

no, non esiste un compito o un compito di vita reale. Sto cercando di imparare per la mia auto conoscenza. Credo di poter usare questa conoscenza in futuro. Inoltre, non sono uno studente. Tutto quello che voglio è imparare a scrivere meglio! –

+1

Hai familiarità con gli algoritmi di imballaggio bin? Ecco dove vorrei iniziare per affrontare questo problema. Ci sono buone informazioni su WikiPedia: http://en.wikipedia.org/wiki/Bin_packing_problem – mellamokb

risposta

5

È possibile utilizzare Microsoft Risolutore Fondazione per risolvere questo problema. Un esempio di una tale soluzione può essere trovata here dove l'OML per il problema bin packing è la seguente:

Model[ 
    Parameters[Sets,Items,Bins], 
    Parameters[Integers,OrderWidth[Items],BinWidth[Bins]], 

    Decisions[Integers[0,1],x[Items,Bins]], 
    Decisions[Integers[0,1],y[Bins]], 

    Constraints[  
    Foreach[{i,Items},Sum[{j,Bins}, x[i,j]]==1 ], 
    Foreach[{j,Bins}, Sum[{i,Items}, OrderWidth[i]*x[i,j]] <= BinWidth[j]], 
    Foreach[{i,Items},{j,Bins}, y[j] >= x[i,j]] 
    ], 

    Goals[Minimize[UsedBins->Sum[{j,Bins},y[j]]]] 
] 

Sarebbe facile cambiare OrderWidth a MarbleWeight e BinWidth a TruckCapacity (o solo 24 nel tuo caso)

Problemi correlati