/ / Algorytm ustawiania zdarzeń / pozycji w stosie - algorytm

Algorytm do układania zdarzeń / przedmiotów - algorytm

Mam zamiar zbudować pseudo wykres Gantta, z wyjątkiem jednego, gdzie zdarzenia mogą być w tej samej linii, o ile nie pokrywają się, coś takiego:

               M T W R F S U M T W R F S U M T W R F S U
Category 1:   |Event 1|     |Event 2| |------Event 3--|
|---------Event 4-----------| |-Event 5-|

Szukam algorytmu, który sprawnie spakuje te zdarzenia. Wiem, że mogę wykorzystać długość zdarzenia i datę rozpoczęcia, aby określić nakładanie, ale chciałbym mieć jakiś punkt wyjścia.

Dla ciekawskich, szukam obejścia ograniczeń widoku kalendarza Gantta w SharePoint 2007. Nasi użytkownicy lubią ten widok, ale nie chcą jednego zadania na linię.

Odpowiedzi:

5 dla odpowiedzi № 1

Moją pierwszą próbą byłoby posortowanie zadań wedługczas rozpoczęcia / data. Potem umieściłem je pojedynczo w pierwszej linii, w której ich czas rozpoczęcia nie był już zajęty. Nie jestem (wcale) pewien, że daje to optymalne wyniki (tj. Zawsze używa najmniejszej możliwej liczby linii), ale powinno być przynajmniej w połowie uzasadnione.

Im więcej o tym myślę, tym bardziej jamyślę, że może być optymalna. Problemy z optymalizacją są zwykle trudne, ponieważ liczba kombinacji wzrasta niezwykle szybko w porównaniu do liczby pozycji. W tym przypadku jednak tak naprawdę nie uzyskuje się takiej kombinacyjnej eksplozji, ponieważ nie można przestawiać przedmiotów - przynajmniej ja je przejmuję, zakładając, że ich czasy rozpoczęcia są ustawione fabrycznie, więc nie można ich zmienić.

Edycja: dla jasności: tutaj zakładam, że pytanie dotyczy tylko wyświetlanie harmonogram zdarzeń, dla których czasy początkowe i czasy trwania są już znane, więc optymalizacja oznacza po prostu wyświetlanie danych jako "zwięźle", jak to możliwe. Jestem " nie mówienie o próbie stworzenia harmonogramu(próbując ustalić, jakie zdarzenia zaplanować kiedy). W zależności od związanych z tym ograniczeń, jest to zwykle znacznie trudniejszy problem, który jest dość łatwy, o ile tylko twoje ograniczenia są zależnościami między zadaniami, ale gdy dodajesz takie rzeczy jak maksymalne wykorzystanie siły roboczej i ograniczone zasoby (np. mogą być wykonywane tylko przez osobę A, B lub C, zadanie Y przez B, C lub D, itd.), sytuacja staje się dużo trudniejsze bardzo szybko.