Quali sono i concetti chiave negli algoritmi CPM / Gantt Chart?

1

avere un po 'di problemi per iniziare con questo problema, e non ci sono molte soluzioni googling.

Non posso usare MS Project per visualizzare diagrammi di Gantt, quindi voglio usare VBA per disegnare un bel diagramma di Gantt in Excel da un database Access di attività, tempo per completare l'attività, attività precedenti, ecc. So VBA, ma sto avendo problemi a concettualizzare questo problema. In altre parole, sono contento del disegno, della connessione di accesso, ecc ... solo avere problemi a capire come ottenere la data di inizio di ogni attività, dato ad ogni compito, potrebbe teoricamente influenzare ogni altra attività. Esempiomoltosempliceallegatodelproblema...robaCPMstandard,incuihounesempiodiAcomeprecedenteaicompitiBeD.Sepensoaquestointerminidi"percorsi", c'è un percorso ABC e un percorso ADE ... Se il mio codice calcola il punto di inizio A basato su ABC, allora non sarà sufficiente il tempo per il completamento di ADE andando in diretta, quindi A dovrebbe essere basato su ADE ...

Sembra semplice ma con 20 compiti con vari precedenti lungo la strada, diventa complicato ... cioè posso scorrere e trovare una serie di percorsi unici, e posso trovare il percorso "più lungo" ma che non necessariamente dammi la data di inizio minima valida per ogni attività, in quanto potrebbero esserci altre attività dipendenti che si diramano e richiedono più tempo, quindi il percorso originale deve iniziare prima, quindi tutte le attività all'interno di quel percorso sono "spostate", quindi qualsiasi calcolo su percorsi correlati dovrebbe poi essere spostato ...

Mi sento in dovere di scrivere di più su ciò che ho provato a dimostrare che ho almeno fatto uno sforzo, ma temo che possa sembrare giberiano! Ad ogni modo: il mio primo tentativo aveva una funzione ricorsiva che passava attraverso ogni attività, e quindi partendo da A sarebbe andata "ho i compiti successivi" se lo facesse, allora la funzione si chiamerebbe di nuovo per B, poi C, restituisci quello per B, restituiscilo per A ... E passerebbe in rassegna ciascuna delle attività successive se ne trova più di una, e scegli la data "minima" ... cioè restituisci E per D, poi D per A e scegli D su B (D < B)

Ma non potevo semplicemente seguire lo stesso approccio per ogni attività, come se avessi iniziato a B, poi ho trovato attività successive, non avrei ottenuto la "stessa B" come sopra ... perché quella B era dipendente su D ed E (a causa di A).

Quindi, sto pensando bene o devo includere un "look back" e un "look forward". Ma questo mi ha dato un po 'di mal di testa. O ho davvero bisogno di memorizzare le mie date per ogni attività mentre vado, quindi potrei memorizzare una data per A, B, C ... e quindi calcolare il percorso ADE, il che significherebbe che dovrei cambiare A, B, e C di nuovo ... ma una volta che avrò un gran numero di compiti, sembrerebbe che tornerei indietro e ricalcolare tutto ancora e ancora ...

Sono sulla buona strada? Sembra che io stia tendendo verso una sorta di "forza bruta" in cui sto solo ripetendo gli stessi calcoli più e più volte finché tutto non si "calma" e trova la data minima di inizio ... Sento che c'è un modo "intelligente" di farlo che mi manca?

    
posta Simon 17.03.2017 - 02:39
fonte

1 risposta

1

I termini che ti mancano sono " Percorso critico " e anche "Disponibilità delle risorse". Devi determinare il set di operazioni che tutti i devono essere eseguiti in sequenza è il più lungo, nel tempo, tutto il resto può essere adattato attorno a soggetto alle risorse disponibili - se hai solo uno sviluppatore, allora lui / lui è la risorsa critica e il tempo minimo sarà semplicemente il totale di tutte le volte.

Ci sono un certo numero di soluzioni, la maggior parte basate su path walking, e la loro lettura è altamente accademica, ma la maggior parte in realtà funziona a ritroso nel tempo in ogni punto esaminando i prerequisiti per la consegna finale.

La cosa "intelligente" da fare è comprare, o trovare una soluzione gratuita e usarla, Excel non è un buon strumento per questo, ad es. dai un'occhiata a TaskJuggler e utilizza le tue abilità nel fornire un'interfaccia allo strumento da Access, (se ti impegni a utilizzarlo).

Tieni presente che i progetti sono eventi dal vivo, quando si verificano ritardi o vengono scoperte nuove dipendenze, l'analisi deve essere rifatta e le priorità corrette, le risorse aggiuntive ottenute e / o la data di fine prevista eliminata.

    
risposta data 17.03.2017 - 08:01
fonte

Leggi altre domande sui tag