Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    49

    [JAVA] SchedulazioneLavori con vincoli -Backtracking

    Salve ragazzi,
    all'università (sono all'Alma Mater) mi hanno assegnato un progetto sulla schedulazione di lavori in presenza di vincoli ed in cui si consiglia di utilizzare la tecnica del backtracking

    Cercando su questo forum ho trovato delle specifiche che si avvicinano molto al mio problema, sapete come aiutarmi?




    Un’attività è svolta mediante l’esecuzione, da parte di più persone, di alcuni lavori elementari di cui è nota la durata in unità di tempo (giorni, mesi etc.). L’esecuzione dei lavori può comportare l’esistenza di vincoli temporali: un lavoro, ad esempio, non può cominciare se non è finito un altro (o altri) e cosi via. Si vuole progettare e realizzare un’applicazione per controllare la correttezza di attività lavorative e per proporre una schedulazione dei lavori, se esiste, che sia rispettosa dei vincoli posti. In input si forniscono i dei lavori e i vincoli associati. L’output atteso è la schedulazione dei lavori. La specifica di un lavoro elementare consiste della coppia

    <id-lavoro, durata>

    Un vincolo, invece, è espresso mediante una tupla del tipo

    <I/F, id-lav1, P/D, I/F, id-lav2>

    cioè l’inizio(I) o la fine(F) di un lavoro id-lav1, deve avvenire prima(P)/dopo(D) dell’inizio(I)/fine(F) del lavoro id-lav2.
    Se tra alcuni lavori non sussistono dipendenze, allora i lavori vanno eseguiti prima possibile, ossia in parallelo.

    Quale semplice esempio, si consideri l’input:
    #lavori
    ( 0, 3 )
    ( 1, 4 )
    ( 2, 5 )
    ( 3, 3 )
    ( 4, 3 )

    #vincoli
    ( I, 1, D, F, 0 )
    ( I, 4, D, F, 2 )

    Possibile output:

    t 0 1 2 3 4
    0 * - * * -
    1 * - * * -
    2 * - * * -
    3 - * * - -
    4 - * * - -
    5 - * - - *
    6 - * - - *
    7 - - - - *

    In alternativa l’output può essere prodotto generando una successione di tuple che indicano l’istante di inizio, il lavoro e la sua durata: <tInizio, id-lav, durata>.

    Una possibile soluzione (inefficiente) può essere basata sulla tecnica backtracking. Come punti di scelta si utilizzano gli istanti temporali (nel caso peggiore la durata complessiva dell’attività è la somma delle durate dei lavori, conseguente ad una esecuzione totalmente sequenziale), come scelte i lavori che possono eseguire nell’stante considerato.






    se qualcuno puo'e vuole aiutarmi posso anche postare il codice da me scritto finora....l'approccio che sto usando e'questo:scrivere una classe astratta Backtracking che implementi il solo metodo risolvi() ,ereditare da essa una classe GestioneSchedulazioni che implementi i metodi astratti (secondo lo schema del "template method"),scrivere una classe Lavoro ed una Vincolo adatte a rappresentare tali oggetti come richiesto,infine una classe di Test(con il main) ed una per raccogliere in input i dati....ma il mio problema e'sostanzialmente nella classe GestioneLavori che stabilisce in che maniera assegnare i lavori a seconda degli istanti e dei vincoli.....vi prego se sapete aiutarmi rispondetemi perche'sono ad un punto che non so'piu'che fare!!

  2. #2
    Ho lo stesso progetto, ma sono messo peggio di te, sarà che è da un'anno che non programmo ma ancora non ho neanche immagito una possibile soluzione. Comunque nel caso in cui mi venisse l'illuminazione ti farò sapere.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    49
    Magari possiamo sentirci per msn così possiamo confrontarci le idee magari ci viene qualche illuminazione

  4. #4
    Si certo, il problema è che io idee per ora non ne ho
    Però forse posso darti del materiale utile (che forse già hai se sei dell'unical)

    questo è il mio msn

    dankanxx@hotmail.com

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    49
    xfetto ti aggiungo più tardi che adesso sono fuori

  6. #6
    ok a presto allora

  7. #7
    Ciao, ho iniato a scrivere un po di codice e a implementari i medoti di "contorno". Per quanto riguarda il cuore del programma cioè il metodo assegnabile volevo chiederti una cosa.
    Che struttura usi per la rappresentazione dei lavori assegnati ai relativi istanti di tempo?
    Io avevo pensato a una linkedlist di linkedlist

    ciao a presto

  8. #8
    ho anch'io questo progetto da svolgere. avete trovato una soluzione? io sono in panico totale...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.