приоритеты/зависимости задач/деятельности

Я ищу некоторую библиотеку/фрагмент кода на основе .net для реализации планирования задач/активностей, таких как планирование проектов Microsoft, в следующих случаях...

  1. Готово к началу
  2. Готово, чтобы закончить
  3. От начала до конца
  4. Начать, чтобы начать

пожалуйста, обратитесь, чтобы понять, в каком контексте я говорю... О связывании задач @ http://office.microsoft.com/en-us/project-help/link-задачи-в-вашем-проекте-HA010364282.aspx?CTT=1


person Muhammad Adnan    schedule 09.07.2010    source источник


Ответы (2)


Вы говорите о CPM - методе критического пути.

Оценка каждого типа условия (Finish to Start, ....) представляет собой простой Select-Case.

Вам нужны eval ранние даты, а затем более поздние даты. Это определяет критический путь.

Если ваш алгоритм включает ASAP - ALAP для некоторых задач, вы можете оценить дополнительный проход запланированных дат.

Я использую рекурсивный алгоритм для каждого прохода (ранние даты, последние даты...). Это обнаруживает цикл условий и показывает их (Task1 -> Task2 -> Task1).

Самая сложная задача для CPM — управление календарем. Не то, чтобы функция

Date1 = Calendar.Eval_DateFinish(Start, Duration)

Становится функцией на основе интервалов календаря ресурсов.

Вот моя функция для Ealy Dates.

Private Sub cpm_fmte(ByVal n As Int32)
    Dim a = Actividades(n), fi, f As FechaCpm, ncit As Integer = 0
    fi.value = Integer.MinValue
    Dim cal As Calend = a.Cal, dur As Integer = a.dur
    sw(n) = 255 : RaBucle.Add(a) 'Marco la actividad para detectar bucle condicionantes  

    For Each c In a.Predecesoras   '/* calcular predecesoras */                                
        If c._Act >= nHitos Then
           If c._Act < nTResumen Then Continue For
           Select Case sw(c._Act)
               Case 0 : cpm_fmte(c._Act)
               Case 255 : ShowBucle(c._Act) : Throw New Exception("Cpm_ftme: Error - Bucle Condicionantes")
              'case Else - 1 - Ya calculada anteriormente
           End Select
        End If

        Dim Pred = Actividades(c._Act)
        Select Case c.Tipo
            Case "D"c : f.value = Pred.ffmte.value + c.Demora
            Case "I"c : f.value = Pred.fimte.value + c.Demora : ncit += 1
            Case "T"c : f = cal.Calc_Fi(Pred.ffmte + c.Demora, dur) : ncit += 1
            Case Else : Throw New Exception(String.Format("Error condic.: {0} {1} {2} {3} {4}", _
                              a.Id, c.Tipo, Pred.Id, c.Demora))
        End Select
        If f > fi Then fi = f
    Next
    RaBucle.Count -= 1

    If fi.value = Integer.MinValue Then fi = Proyecto.Actprj.FechaPrj
    If dur > 0 Then fi = cal.Fecha_Jla_Av(fi)
    a.fimte.value = fi.value : a.ffmte = cal.Calc_Ff(fi, dur)
    a.Fip = a.fimte : a.Ffp = a.ffmte
    If a.ffmte.value > Fmax.value Then mfmax.value = a.ffmte.value
    If a.fimte.value < Fmin.value Then mFmin.value = a.fimte.value

    sw(n) = 1 'Actividad calculada
End Sub

Примечания. Тогда я испанец:

  • Fmte -> Ранние даты (Fechas más Tempranas), Fmta -> Последние даты, Fp - Запланировано.
  • Fi -> Дата начала (Fecha Inicio), FF -> Дата окончания (Fecha Fín)
  • Actividades — Задания
  • "D"c -> (Финиш - старт), "Después",
  • "I"c -> (Старт - Старт) "Инициан..."
  • "T"c -> (Финиш - Финиш) "Терминан..."
  • Никогда не использовал условие Старт-Финиш.

Я использую тип (структуру) FechaCpm, который оценивается как тип Int32 (FechaCpm.Value) и интерпретируется как минутный интервал времени.

Вы можете получить больше кода для CPM на SourceForge, но я никогда не нахожу никакого кода в сети. Вы можете увидеть «Открыть WorkBench» — Java или «Планировщик» — C++.

Мой код основан на CPM, большинство программ Planification основаны на ресурсах, поддерживающих CPM. Я использую только один ресурс (Человеческий ресурс), тогда Календарь является свойством Задачи.

person x77    schedule 20.07.2010

Вы можете написать службу Windows, если хотите планировать приложения, задачи, действия.

person Serkan Hekimoglu    schedule 09.07.2010
comment
я не говорю о выполнении задач с определенным интервалом или что-то в этом роде... я просто говорю о типе приложения планирования проекта, где задачи могут быть запланированы на основе их продолжительности + зависимостей... - person Muhammad Adnan; 09.07.2010