Come posso avvicinarmi alla creazione di un algoritmo efficiente per massimizzare il valore con questi vincoli specifici?

3

Ho problemi a venire con un approccio che non è n ^ 2 per questo problema. Ecco una versione semplificata e semplificata che ho trovato:

Supponiamo che tu sia un'azienda che ha bisogno di 4 dipendenti per il lancio in una nuova città, un manager, due addetti alle vendite e un rappresentante dell'assistenza clienti, e tu magicamente sai quanto impatto avrà ogni candidato e quanto stipendio richiederanno per prendere il lavoro. La tua tabella di potenziali dipendenti è simile a questa:

Name           Position       Salary     Impact
Adam Smith     Manager        60,000     11
Allison Brown  Salesperson    40,000     9
Brad Stewart   Manager        55,000     9
...etc (thousands of records)

Quale approccio algoritmico può essere preso per trovare il massimo "impatto" pur continuando a riempire tutte le posizioni e rimanendo, ad esempio, a un budget di 200.000?

Grazie!

    
posta sway 10.04.2014 - 06:20
fonte

2 risposte

1

Userei Integer Linear Programming (che, in sostanza, è la programmazione dei vincoli, che è ciò che stai facendo) per risolvere questo tipo di problema, utilizzando CPLEX in collaborazione con Visual Studio. Come indicato nel tuo post, l'obiettivo del tuo programma sarà quello di massimizzare un obiettivo dato un insieme di vincoli (ad esempio, il budget totale deve essere inferiore a $ 200.000).

Per iniziare e se non hai precedentemente configurato CPLEX per lavorare con Visual Studio, consulta questa guida . Per un modello di problemi che devono massimizzare un obiettivo, controlla il seguente tutorial che contiene esempi di codice che puoi modificare secondo i tuoi criteri.

    
risposta data 05.04.2015 - 23:23
fonte
0

In definitiva avrai bisogno di scrivere una funzione "costo", e quindi usare una tecnica algebrica per trovare il massimo (i).

Se si desidera una risposta rapida e un po 'sporca, è possibile utilizzare un Algoritmo genetico per proporre, testare e migliorare in modo incrementale le risposte finché non si ottiene una buona risposta. Ma non sarebbe garantito essere il migliore . Tuttavia, potrebbe fornire una svolta relativamente rapida se si desidera modificare la formula e cercare nuovamente.

    
risposta data 10.04.2014 - 08:00
fonte

Leggi altre domande sui tag