View Full Version : Reti Neurali. La migliore per il mio problema!
Ho un problema e vorrei risolverlo con le reti neurali.
Il problema è il seguente.
Ho un elaboratore a cui dare in pasto dei lavori (Job)
Ogni lavoro ha un costo di tempo.Inoltre il lavoro deve essere processato nel minor tempo possibile.
L'elaboratore deve elaborare il maggior numero di lavoro nel minor tempo possibile.
Quindi devo creare uno scheduler. Esistono vari algoritmi, ma vorrei farlo con una rete neurale.
Tra le molte reti neurali, qual'è quella più adatta a risolvere il mio problema?
MMhhh.
Puoi spiegare meglio il problema?
Fin'ora ho capito che hai un lavoro fatto da tanti job.
Ogni job ha un tempo (costo).
E basta? Tutto qui?
Cosa vuoi dalla rete neurale? (o da qualunque soluzione si riesca ad ottenere)
Che ti dica qual e' il prossimo lavoro da eseguire?
Detta cosi' la riposta potrebbe essere: Eseguili tutti insieme, cosi' minimizzi il tempo.
MMhhh.
Puoi spiegare meglio il problema?
Fin'ora ho capito che hai un lavoro fatto da tanti job.
Ogni job ha un tempo (costo).
E basta? Tutto qui?
Cosa vuoi dalla rete neurale? (o da qualunque soluzione si riesca ad ottenere)
Che ti dica qual e' il prossimo lavoro da eseguire?
Detta cosi' la riposta potrebbe essere: Eseguili tutti insieme, cosi' minimizzi il tempo.
Spiego meglio.
Ho tanti lavori da far fare. Ogni lavoro ha un costo (in tempo). I lavori li può fare soltanto uno. Quindi deve scegliere quali lavori fare per prima per massimizzare la produzione.
Credo cmq di aver trovato la soluzione. Il mio problema è molto simile al Knapsack Problem risolvibile con un algoritmo genetico.
Qualcuno ha già un listato del Knapsack Problem?
Spiego meglio.
Ho tanti lavori da far fare. Ogni lavoro ha un costo (in tempo). I lavori li può fare soltanto uno. Quindi deve scegliere quali lavori fare per prima per massimizzare la produzione.
Credo cmq di aver trovato la soluzione. Il mio problema è molto simile al Knapsack Problem risolvibile con un algoritmo genetico.
Qualcuno ha già un listato del Knapsack Problem?
Il Knapsack comunque ha una soluzione ottimale deterministica, senza algoritmi genetici o IA.
Non l'ho mai risolto in programmazione, ma solo in teoria, in ottimizzazione e ricerca operativa.
Il Knapsack comunque ha una soluzione ottimale deterministica, senza algoritmi genetici o IA.
Non l'ho mai risolto in programmazione, ma solo in teoria, in ottimizzazione e ricerca operativa.
Ho trovato questo http://blogs.ugidotnet.org/WetBlog/archive/2007/07/24/86542.aspx
adesso lo studio e lo adatto al mio problema. :D
Ps. Per me la scelta dell'algoritmo genetico è obbligatoria. I miei input sono soggetti a errori molto alti ;)
Ho trovato questo http://blogs.ugidotnet.org/WetBlog/archive/2007/07/24/86542.aspx
adesso lo studio e lo adatto al mio problema. :D
Ps. Per me la scelta dell'algoritmo genetico è obbligatoria. I miei input sono soggetti a errori molto alti ;)
Purtroppo le slide non le trovero' mai piu'.
Non ricordo assolutamente nulla, ricordo solo che avevamo sempre le carote, le mele, le banane, etc. ciascuna con costi e benefici.
Avevamo tot lire (Allora quelle c'erano), e dovevamo massimizzare i benefici, stando dentro le lire che avevamo. Sembra tutte le volte di andare dal verduriere, altro che ricerca operativa.
Mi ricordo che c'era un algoritmo deterministico. In teoria' gli errori non dovrebbero imporare molto e dovrebbe funzionare lo stesso.
Non mi torna...ogni lavoro ha un costo fisso, ma che vuol dire che ogni lavoro deve essere processato nel minor tempo possibile ?
Spiegati con un esempio. Hai inoltre delle precedenze e delle deadline sui lavori ?
Non mi torna...ogni lavoro ha un costo fisso, ma che vuol dire che ogni lavoro deve essere processato nel minor tempo possibile ?
Spiegati con un esempio. Hai inoltre delle precedenze e delle deadline sui lavori ?
Vuol dire che il lavoro non deve attendere troppo per essere processato.
Le precedenze sono solo l'ordine d'arrivo.
Non so come spiegarlo meglio. Immagina come se fosse una pizzeria. Arrivano i clienti, ti chiedo di fare un certo numero di pizze e ti danno un'orario di preferenza. Il compito del pizzaiolo, è quello di gestire nel miglior modo le situazioni. Ogni infornata ha un tempo per essere completata è può contenere solo un certo numero di pizze.
Es.
Ho 3 clienti
cliente 1: ha 3 pizze per le 8:00
cliente 2: ha 2 pizze per le 8:00
cliente 3: ha 6 pizze per le 8:00
Il forno ha una campienza massima di 6 pizze per volta.
Cosa fare?
Se metto prima cliente 1 e 2, avranno le pizze in orario. Soltanto 1 avrà un leggero ritardo
Se metto il cliente 3, avrò il forno pieno, ma in questo caso, un cliente avrà le pizze in orario, due invece in ritardo.
Naturalmente la scelta migliore è la prima, in ottica futura, perchè ho soddfisfatto due clienti invece di uno.
Credo quindi che il problema dello zaino, può essere modificato per risolvere questo.
Badrepent
04-04-2008, 01:22
Ho trovato questo http://blogs.ugidotnet.org/WetBlog/archive/2007/07/24/86542.aspx
adesso lo studio e lo adatto al mio problema. :D
Ps. Per me la scelta dell'algoritmo genetico è obbligatoria. I miei input sono soggetti a errori molto alti ;)
Sono contento che il mio post possa essere di aiuto, in effetti devo dire che il tuo problema con le specifiche che hai elencato
si identifica bene con il knapsack problem.
Ci sono cmq diversi modi per affrontarne la risoluzioni, oltre a quella che ho mostrato basata sugli algoritmi genetici, puoi adottare un approccio risolutivo
classico basato sull' utilizzo di tecniche di programmazione dinamica :)
L'esempio non torna, ed e' anche sbagliato. Potrei mettere le pizze di 1 e di 2 insieme nel forno.
Puoi dirci veramente a cosa ti serve? Cosi' magari riusciamo anche a tirare fuori un modello dati.
Per il knapsack problem ti serve una variabile limite, e tu ne hai messe 2 per ora, il tempo e il volume del forno
Se hai delle deadline ci sono sicuramente algoritmi di schedulazione per sistemi realtime già pronti ;)
Vuol dire che il lavoro non deve attendere troppo per essere processato.
Le precedenze sono solo l'ordine d'arrivo.
Non so come spiegarlo meglio. Immagina come se fosse una pizzeria. Arrivano i clienti, ti chiedo di fare un certo numero di pizze e ti danno un'orario di preferenza. Il compito del pizzaiolo, è quello di gestire nel miglior modo le situazioni. Ogni infornata ha un tempo per essere completata è può contenere solo un certo numero di pizze.
Es.
Ho 3 clienti
cliente 1: ha 3 pizze per le 8:00
cliente 2: ha 2 pizze per le 8:00
cliente 3: ha 6 pizze per le 8:00
Il forno ha una campienza massima di 6 pizze per volta.
Cosa fare?
Se metto prima cliente 1 e 2, avranno le pizze in orario. Soltanto 1 avrà un leggero ritardo
Se metto il cliente 3, avrò il forno pieno, ma in questo caso, un cliente avrà le pizze in orario, due invece in ritardo.
Naturalmente la scelta migliore è la prima, in ottica futura, perchè ho soddfisfatto due clienti invece di uno.
Credo quindi che il problema dello zaino, può essere modificato per risolvere questo.
Oddio, io in questo caso farei tutto con un semplice ordinamento :stordita: X orario e X data hai sempre la soluzione migliore... ma io sono uno che trova soluzioni veloci , quindi non conto :D
Ma che mole di dati hai? Nel senso che sarebbe fattibile analizzare TUTTE le possibili combinazioni in un tempo ragionevole? Altrimenti potresti buttarci giù un algoritmo genetico che minimizzi sia il tempo di attesa totale dei clienti sia il numero di clienti che eventualmente sforino dal tempo desiderato di attesa (in modo da creare meno clienti scontenti a parità di ritardo totale). Però lavorarci tanto è giustificato solo se non è possibile valutare in maniera analitica tutte le possibili combinazioni numero clienti/numero pizze/tempo desiderato di attesa. Poi dovresti anche dirci quante sono eventualmente le variabili del problema che vorresti minimizzare nel tuo caso reale.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.