MyNixOS website logo
Description

An Implementation of the Critical Path Method.

An R implementation of the Critical Path Method (CPM). CPM is a method used to estimate the minimum project duration and determine the amount of scheduling flexibility on the logical network paths within the schedule model. The flexibility is in terms of early start, early finish, late start, late finish, total float and free float. Beside, it permits to quantify the complexity of network diagram through the analysis of topological indicators. Finally, it permits to change the activities duration to perform what-if scenario analysis. The package was built based on following references: To make topological sorting and other graph operation, we use Csardi, G. & Nepusz, T. (2005) <https://www.researchgate.net/publication/221995787_The_Igraph_Software_Package_for_Complex_Network_Research>; For schedule concept, the reference was Project Management Institute (2017) <https://www.pmi.org/pmbok-guide-standards/foundational/pmbok>; For standards terms, we use Project Management Institute (2017) <https://www.pmi.org/pmbok-guide-standards/lexicon>; For algorithms on Critical Path Method development, we use Vanhoucke, M. (2013) <doi:10.1007/978-3-642-40438-2> and Vanhoucke, M. (2014) <doi:10.1007/978-3-319-04331-9>; And, finally, for topological definitions, we use Vanhoucke, M. (2009) <doi:10.1007/978-1-4419-1014-1>.

criticalpath Package

criticalpath package is an R implementation of the Critical Path Method (CPM) in R with R6 library. CPM is a method used to estimate the minimum project duration and determine the amount of scheduling flexibility on the logical network paths within the schedule model. The flexibility is in terms of early start, early finish, late start, late finish, total float and free float. Beside, it permits to quantify the complexity of network diagram through the analysis of topological indicators. Finally, it permits to change the activities duration to perform what-if scenario analysis.

With this package, you can calculate the following CPM parameters:

  • Schedule duration
  • Early start and finish date of each activity
  • Late start and finish date of each activity
  • Critical activities
  • Critical path
  • Total float and free float
  • Gantt Matrix
  • What-if scenario analysis
  • Topological indicators

The aim of this package is to apply critical path method, for Project Manager and Researches make “What if?” scenario analysis or experiments with CPM parameters.

Installation

You can install the released version of criticalpath from CRAN with:

#install.packages("criticalpath")

Example

To create a schedule:

library(criticalpath)

sch <- sch_new() %>% 
  sch_title("Project 1: Cost Information System") %>% 
  sch_reference("VANHOUCKE, Mario.
Integrated project management and control:
  first comes the theory, then the practice.
  Gent: Springer, 2014, p. 6") %>% 
  sch_add_activities(
    id        = 1:17,
    name      = paste("a", as.character(1:17), sep=""),
    duration  = c(1L,2L,2L,4L,3L,3L,3L,2L,1L,1L,2L,1L,1L,1L,1L,2L,1L)
  ) %>% 
  sch_add_relations(
    from = c(1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L,  3L,  4L,  5L,  6L,
           7L,  8L,  9L, 10L, 11L, 11L, 12L, 12L, 13L, 13L, 14L, 14L, 15L, 15L),
    to   = c(2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 11L, 11L,
           12L, 13L, 14L, 15L, 16L, 17L, 16L, 17L, 16L, 17L, 16L, 17L, 16L, 17L)
  ) %>% 
  sch_plan()

What is the schedule duration?

sch_duration(sch)
#> [1] 11

Which activities are critical?

sch_critical_activities(sch)
#> # A tibble: 5 x 14
#>      id name  duration milestone critical early_start early_finish late_start
#>   <int> <chr>    <int> <lgl>     <lgl>          <int>        <int>      <int>
#> 1     1 a1           1 FALSE     TRUE               0            1          0
#> 2     2 a2           2 FALSE     TRUE               1            3          1
#> 3     4 a4           4 FALSE     TRUE               3            7          3
#> 4    11 a11          2 FALSE     TRUE               7            9          7
#> 5    16 a16          2 FALSE     TRUE               9           11          9
#> # ... with 6 more variables: late_finish <int>, total_float <int>,
#> #   free_float <int>, progr_level <int>, regr_level <int>, topo_float <int>

What is the critical relations?

sch_critical_relations(sch)
#> # A tibble: 4 x 8
#>    from    to type    lag critical   ord i_from  i_to
#>   <int> <int> <chr> <int> <lgl>    <int>  <int> <int>
#> 1     1     2 FS        0 TRUE         1      1     2
#> 2     2     4 FS        0 TRUE         3      2     4
#> 3     4    11 FS        0 TRUE        10      4    11
#> 4    11    16 FS        0 TRUE        17     11    16

More information

CRAN - Package criticalpath

criticalpath Page.

Metadata

Version

0.2.1

License

Unknown

Platforms (75)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows