Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
Scheduling con JAVA
Nuovo argomento   Rispondi    Indice del forum -> Programmazione
Precedente :: Successivo  
Autore Messaggio
furiaceca
Comune mortale
Comune mortale


Registrato: 21/07/10 17:17
Messaggi: 3

MessaggioInviato: 25 Mag 2012 17:13    Oggetto: Scheduling con JAVA Rispondi citando

Ciao a tutti, avrei bisogno di un aiuto: devo creare un programma Java che pianifichi l'attività di una scuola di volo. Ovvero ho delle risorse quali Aerei, istruttori e alunni e devo pianificare le attività in base alla disponibilità di aerei e istruttori, incastrando i vari orari delle varie lezioni in modo da ottimizzare l'intera giornata. Come posso improntare l'algoritmo?
Grazie
Ciao a tutti
Top
Profilo Invia messaggio privato
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 11:16
Messaggi: 10679
Residenza: Tokelau

MessaggioInviato: 28 Mag 2012 10:05    Oggetto: Rispondi citando

l'approccio più semplice (nel senso di difficoltà di programmazione) è il 'bruteforce', ovvero provi a calcolare tutti i possibili incastri (eventualmente tenendo copia del migliore trovato fino a quel punto) fino a che non trovi un incastro che soddisfi al 100% i requisiti, e a quel punto o ti fermi o lo memorizzi e vai avanti cercando tutti gli altri possibili risultati, mentre se non trovi uno che soddisfi al 100% visualizzi il migliore che avevi memorizzato...
Top
Profilo Invia messaggio privato HomePage
furiaceca
Comune mortale
Comune mortale


Registrato: 21/07/10 17:17
Messaggi: 3

MessaggioInviato: 04 Lug 2012 12:55    Oggetto: Rispondi citando

Ciao sto provando a trovare la soluzione corretta. Ho già creato il db da dove caricare le varie tabelle che sono : lezioni, allievi, istruttori, aerei, aule, corsi, allieviLezioni (che indica le lezioni che ogni allievo deve seguire) e istruttoriLezioni (che indice le lezioni che un istruttore deve insegnare).
I vincoli sono i seguenti:
- ogni allievo segue un solo corso
- ogni allievo deve seguire tutte le lezioni
- ogni lezione sarà di tipo aereo o aula, nel primo caso verrà seguita da un allievo per volta(il quale utilizzerà l'aereo), nel secondo caso verrà seguita da tutti gli allievi contemporaneamente.
- ogni lezione fa parte di un solo corso
- ogni istruttore può insegnare in un solo corso
- ogni istruttore può insegnare più lezioni, indipendentemente dal fatto che essa sia in aula o in aereo

La tabella delle lezioni comprende un tipo che indica se aereo o aula, e la durata di ogni lezione.
Questo è importante perchè devo sistemare tutte le lezioni per tutti gli allievi, incastrandole in base alla loro durata. Se la lezione è di tipo aereo dovrò programmare tante lezioni quanti sono gli allievi, se è di tipo aula ne programmerò una sola che sarà seguita da tutti gli allievi in contemportanea.

Io ho caricato le tabelle dal db in vari ArrayList con la seguente istruzione:
List<ArrayList> lezioni = db.eseguiQuery("SELECT * FROM Lezioni");
ovviamente così per tutte le tabelle.
Ho già creato una classe Database.java che mi permette di connettermi e disconnettermi dal db, aggiungere query, aggiornarle ecc...
Ho creato inoltre, per il calcolo della disponibilità delle risorse, 3 classi:
Calendario.java con all'interno un ArrayList comprendente i vari giorni della settimana.
Giorno.java con all'interno un ArrayList comprendente tutte le fasce orarie di ciascun giorno e inoltre comprende i metodi per verificare che un'aula e/o un aereo e/o un istruttore e/o un allievo sia già stati scelti.
Ora.java con all'interno i metodi get e set per restituirmi, data, tipo(aereo/aula), id dell'aereo o aula, id istruttore e id allievo, ovvero tutti i dati per quella lezione che si sta selezionando.
Se vuoi te li posto queste classi.

Ora il mio problema è creare quest'algoritmo per inserirli all'interno del calendario, cioè scorrere tutte le lezioni, inserirle man mano in base alla loro durata e creare quindi l'orario definitivo della settimana. Spero mi puoi aiutare e spero di essere stato chiaro! Grazie in anticipo.
Top
Profilo Invia messaggio privato
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 11:16
Messaggi: 10679
Residenza: Tokelau

MessaggioInviato: 03 Ago 2012 17:00    Oggetto: Rispondi

puoi provare inserendo le lezioni una per volta, finché riesci ad inserirle. Quando trovi una che non riesci, torni indietro rimuovendo l'ultima che hai messo e riprovando, e così via indietro fino a che quella che non riuscivi ad inserire finalmente entra. Poi riparti con tutte quelle che non hai ancora inserito e procedi...

potrebbe essere un modo Rolling Eyes
Top
Profilo Invia messaggio privato HomePage
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Programmazione Tutti i fusi orari sono GMT + 1 ora
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi