OSDN Git Service

Slightly improved scheduling heuristic.
authorChris Schlaeger <cs@kde.org>
Tue, 4 Dec 2007 10:23:19 +0000 (11:23 +0100)
committerChris Schlaeger <cs@kde.org>
Tue, 4 Dec 2007 10:23:19 +0000 (11:23 +0100)
This should overall result in projects with somewhat smaller total duration.

TestSuite/HTML-Reports/htmlresourcereport-1-Reference.html
TestSuite/HTML-Reports/htmlresourcereport-2-Reference.html
TestSuite/HTML-Reports/htmltaskreport-1-Reference.html
TestSuite/HTML-Reports/htmltaskreport-2-Reference.html
TestSuite/Scheduler/Correct/Philippe-Reference.tjp
docs/en/ChangeLog.xml
taskjuggler/CSVReportElement.cpp
taskjuggler/Task.cpp
taskjuggler/Task.h

index f92db2d..7953450 100644 (file)
    <td style="text-align:right; font-size:90%; ">41.3</td>
    <td style="text-align:right; padding-right:2; font-size:90%; ">30</td>
    <td style="text-align:right; padding-right:2; font-size:90%; ">44</td>
-   <td style="text-align:right; padding-right:2; font-size:90%; ">88</td>
+   <td style="text-align:right; padding-right:2; font-size:90%; ">44</td>
    <td style="text-align:right; ">&#160;</td>
    <td style="text-align:left; font-size:90%; ">2003-03-25 18:00:00 GMT</td>
    <td style="text-align:right; font-size:90%; "> 10</td>
index 445af18..80581ad 100644 (file)
    <td style="text-align:right; font-size:90%; ">41.3</td>
    <td style="text-align:right; padding-right:2; font-size:90%; ">30</td>
    <td style="text-align:right; padding-right:2; font-size:90%; ">44</td>
-   <td style="text-align:right; padding-right:2; font-size:90%; ">88</td>
+   <td style="text-align:right; padding-right:2; font-size:90%; ">44</td>
    <td rowspan="2" style="text-align:right; ">&#160;</td>
    <td style="text-align:left; font-size:90%; ">2003-03-25 18:00:00 GMT</td>
    <td style="text-align:right; font-size:90%; "> 10</td>
    <td style="text-align:right; font-size:90%; ">41.3</td>
    <td style="text-align:right; padding-right:2; font-size:90%; ">30</td>
    <td style="text-align:right; padding-right:2; font-size:90%; ">44</td>
-   <td style="text-align:right; padding-right:2; font-size:90%; ">88</td>
+   <td style="text-align:right; padding-right:2; font-size:90%; ">44</td>
    <td style="text-align:left; font-size:90%; ">2003-03-27 18:00:00 GMT</td>
    <td style="text-align:right; font-size:90%; "> 10</td>
    <td style="text-align:left; font-size:90%; ">2003-02-17 14:00:00 GMT</td>
index 8d2e110..ccb8955 100644 (file)
    <td style="text-align:right; font-size:90%; ">0</td>
    <td style="text-align:right; padding-right:7; font-size:90%; ">0</td>
    <td style="text-align:right; padding-right:7; font-size:90%; ">1</td>
-   <td style="text-align:right; padding-right:7; font-size:90%; ">45</td>
+   <td style="text-align:right; padding-right:7; font-size:90%; ">1</td>
    <td style="text-align:right; ">&#160;</td>
    <td style="text-align:left; font-size:90%; ">2003-02-11 18:00:00 GMT</td>
    <td style="text-align:right; font-size:90%; ">  0</td>
    <td style="text-align:right; font-size:90%; ">0</td>
    <td style="text-align:right; padding-right:7; font-size:90%; ">0</td>
    <td style="text-align:right; padding-right:7; font-size:90%; ">1</td>
-   <td style="text-align:right; padding-right:7; font-size:90%; ">45</td>
+   <td style="text-align:right; padding-right:7; font-size:90%; ">1</td>
    <td style="text-align:right; ">&#160;</td>
    <td style="text-align:left; font-size:90%; ">2003-02-11 18:00:00 GMT</td>
    <td style="text-align:right; font-size:90%; ">  0</td>
    <td style="text-align:right; font-size:90%; ">41.3</td>
    <td style="text-align:right; padding-right:7; font-size:90%; ">30</td>
    <td style="text-align:right; padding-right:7; font-size:90%; ">44</td>
-   <td style="text-align:right; padding-right:7; font-size:90%; ">88</td>
+   <td style="text-align:right; padding-right:7; font-size:90%; ">44</td>
    <td style="text-align:right; ">&#160;</td>
    <td style="text-align:left; font-size:90%; ">2003-03-25 18:00:00 GMT</td>
    <td style="text-align:right; font-size:90%; "> 10</td>
index 27b1248..7ad8e1e 100644 (file)
    <td style="text-align:right; font-size:90%; ">41.3</td>
    <td style="text-align:right; padding-right:7; font-size:90%; ">30</td>
    <td style="text-align:right; padding-right:7; font-size:90%; ">44</td>
-   <td style="text-align:right; padding-right:7; font-size:90%; ">88</td>
+   <td style="text-align:right; padding-right:7; font-size:90%; ">44</td>
    <td rowspan="2" style="text-align:right; ">&#160;</td>
    <td style="text-align:left; font-size:90%; ">2003-03-25 18:00:00 GMT</td>
    <td style="text-align:right; font-size:90%; "> 10</td>
    <td style="text-align:right; font-size:90%; ">41.3</td>
    <td style="text-align:right; padding-right:7; font-size:90%; ">30</td>
    <td style="text-align:right; padding-right:7; font-size:90%; ">44</td>
-   <td style="text-align:right; padding-right:7; font-size:90%; ">88</td>
+   <td style="text-align:right; padding-right:7; font-size:90%; ">44</td>
    <td style="text-align:left; font-size:90%; ">2003-03-27 18:00:00 GMT</td>
    <td style="text-align:right; font-size:90%; "> 10</td>
    <td style="text-align:left; font-size:90%; ">2003-02-17 14:00:00 GMT</td>
index 679d4cf..c8b350a 100644 (file)
@@ -33,101 +33,101 @@ task start "Start" {
   milestone 
   scheduling asap
 }
-task amelioration "Amelioration" {
+task ctm "Mise sous Control-M" {
   projectid arc
   depends start
-  task gesttable "Module de gestion des tables" {
+  task jobsup "Job superviseur" {
     plan:start 2002-07-24-09:00:00-+0000
-    plan:end 2002-07-26-18:00:00-+0000
+    plan:end 2002-07-29-18:00:00-+0000
     plan:scheduled
     scheduling asap
   }
-  task supuniv "Suppression du code Universe" {
-    plan:start 2002-07-30-10:00:00-+0000
-    plan:end 2002-07-31-12:00:00-+0000
+  task modchaine "Module chaines" {
+    plan:start 2002-07-15-09:00:00-+0000
+    plan:end 2002-07-18-18:00:00-+0000
     plan:scheduled
     scheduling asap
   }
-  task supdyn "Suppression du code Dynatext" {
-    plan:start 2002-07-31-13:00:00-+0000
-    plan:end 2002-08-01-15:00:00-+0000
+  task defchaine "Definition des chaines" {
+    depends ctm.modchaine
+    plan:start 2002-07-24-09:00:00-+0000
+    plan:end 2002-07-25-11:00:00-+0000
     plan:scheduled
     scheduling asap
   }
-  task modpre "Modification de la preconversion" {
-    depends amelioration.supuniv, amelioration.gesttable, amelioration.supdyn
-    plan:start 2002-08-01-15:00:00-+0000
-    plan:end 2002-08-02-15:00:00-+0000
+  task lancechaine "Lanceur de chaines" {
+    depends ctm.modchaine, ctm.defchaine
+    plan:start 2002-07-31-11:00:00-+0000
+    plan:end 2002-08-02-10:00:00-+0000
     plan:scheduled
     scheduling asap
   }
-  task nomrex "Creation du nom du REX" {
-    depends amelioration.gesttable
-    plan:start 2002-07-29-09:00:00-+0000
-    plan:end 2002-07-29-16:00:00-+0000
+  task dlibm "Download de l IBM" {
+    plan:start 2002-07-31-09:00:00-+0000
+    plan:end 2002-08-01-18:00:00-+0000
     plan:scheduled
     scheduling asap
   }
-  task errpre "Gestion des erreurs dans la preconversion" {
-    plan:start 2002-07-15-09:00:00-+0000
-    plan:end 2002-07-23-18:00:00-+0000
+  task testchaine "Tests de l enchainement" {
+    depends ctm.dlibm, ctm.lancechaine, ctm.defchaine, ctm.modchaine, ctm.jobsup
+    plan:start 2002-08-02-17:00:00-+0000
+    plan:end 2002-08-08-17:00:00-+0000
     plan:scheduled
     scheduling asap
   }
-  task errshell "Gestion des erreur dans les shells" {
-    plan:start 2002-07-29-16:00:00-+0000
-    plan:end 2002-08-01-11:00:00-+0000
+  scheduling asap
+}
+task amelioration "Amelioration" {
+  projectid arc
+  depends start
+  task gesttable "Module de gestion des tables" {
+    plan:start 2002-07-19-09:00:00-+0000
+    plan:end 2002-07-23-18:00:00-+0000
     plan:scheduled
     scheduling asap
   }
-  task testmod "Test des modifications" {
-    depends amelioration.gesttable, amelioration.supuniv, amelioration.supdyn, amelioration.modpre, amelioration.nomrex, amelioration.errpre, amelioration.errshell
-    plan:start 2002-08-02-15:00:00-+0000
-    plan:end 2002-08-08-15:00:00-+0000
+  task supuniv "Suppression du code Universe" {
+    plan:start 2002-07-29-16:00:00-+0000
+    plan:end 2002-07-30-18:00:00-+0000
     plan:scheduled
     scheduling asap
   }
-  scheduling asap
-}
-task ctm "Mise sous Control-M" {
-  projectid arc
-  depends start
-  task jobsup "Job superviseur" {
-    plan:start 2002-07-24-10:00:00-+0000
-    plan:end 2002-07-30-10:00:00-+0000
+  task supdyn "Suppression du code Dynatext" {
+    plan:start 2002-07-30-09:00:00-+0000
+    plan:end 2002-07-31-11:00:00-+0000
     plan:scheduled
     scheduling asap
   }
-  task modchaine "Module chaines" {
-    plan:start 2002-07-15-09:00:00-+0000
-    plan:end 2002-07-18-18:00:00-+0000
+  task modpre "Modification de la preconversion" {
+    depends amelioration.supuniv, amelioration.gesttable, amelioration.supdyn
+    plan:start 2002-08-02-09:00:00-+0000
+    plan:end 2002-08-02-18:00:00-+0000
     plan:scheduled
     scheduling asap
   }
-  task defchaine "Definition des chaines" {
-    depends ctm.modchaine
-    plan:start 2002-07-19-09:00:00-+0000
-    plan:end 2002-07-22-11:00:00-+0000
+  task nomrex "Creation du nom du REX" {
+    depends amelioration.gesttable
+    plan:start 2002-08-02-10:00:00-+0000
+    plan:end 2002-08-02-17:00:00-+0000
     plan:scheduled
     scheduling asap
   }
-  task lancechaine "Lanceur de chaines" {
-    depends ctm.modchaine, ctm.defchaine
-    plan:start 2002-07-22-11:00:00-+0000
-    plan:end 2002-07-24-10:00:00-+0000
+  task errpre "Gestion des erreurs dans la preconversion" {
+    plan:start 2002-07-15-09:00:00-+0000
+    plan:end 2002-07-23-18:00:00-+0000
     plan:scheduled
     scheduling asap
   }
-  task dlibm "Download de l IBM" {
-    plan:start 2002-08-01-11:00:00-+0000
-    plan:end 2002-08-05-11:00:00-+0000
+  task errshell "Gestion des erreur dans les shells" {
+    plan:start 2002-07-25-11:00:00-+0000
+    plan:end 2002-07-29-16:00:00-+0000
     plan:scheduled
     scheduling asap
   }
-  task testchaine "Tests de l enchainement" {
-    depends ctm.dlibm, ctm.lancechaine, ctm.defchaine, ctm.modchaine, ctm.jobsup
-    plan:start 2002-08-05-11:00:00-+0000
-    plan:end 2002-08-09-11:00:00-+0000
+  task testmod "Test des modifications" {
+    depends amelioration.gesttable, amelioration.supuniv, amelioration.supdyn, amelioration.modpre, amelioration.nomrex, amelioration.errpre, amelioration.errshell
+    plan:start 2002-08-05-09:00:00-+0000
+    plan:end 2002-08-08-18:00:00-+0000
     plan:scheduled
     scheduling asap
   }
@@ -137,57 +137,57 @@ task validation "Validation des modifs" {
   projectid arc
   task netvar "Nettoyage des variable d env." {
     depends ctm, amelioration
-    plan:start 2002-09-06-17:00:00-+0000
-    plan:end 2002-09-09-17:00:00-+0000
+    plan:start 2002-09-05-17:00:00-+0000
+    plan:end 2002-09-06-17:00:00-+0000
     plan:scheduled
     scheduling asap
   }
   task integerr "Integration gestion err" {
     depends ctm, amelioration
-    plan:start 2002-08-09-11:00:00-+0000
-    plan:end 2002-08-27-14:00:00-+0000
+    plan:start 2002-08-09-09:00:00-+0000
+    plan:end 2002-08-26-18:00:00-+0000
     plan:scheduled
     scheduling asap
   }
   task integctm "Integration Control-M" {
     depends ctm, amelioration
-    plan:start 2002-08-09-11:00:00-+0000
-    plan:end 2002-08-26-11:00:00-+0000
+    plan:start 2002-08-09-09:00:00-+0000
+    plan:end 2002-08-14-18:00:00-+0000
     plan:scheduled
     scheduling asap
   }
   task planrec "Redaction plan de recette" {
     depends validation.integctm, validation.integerr
-    plan:start 2002-08-27-14:00:00-+0000
-    plan:end 2002-08-30-14:00:00-+0000
+    plan:start 2002-08-27-09:00:00-+0000
+    plan:end 2002-08-29-18:00:00-+0000
     plan:scheduled
     scheduling asap
   }
   task val "Validation" {
     depends validation.planrec
-    plan:start 2002-08-30-14:00:00-+0000
-    plan:end 2002-09-04-14:00:00-+0000
+    plan:start 2002-09-02-09:00:00-+0000
+    plan:end 2002-09-04-18:00:00-+0000
     plan:scheduled
     scheduling asap
   }
   task majdd "Mise a jour doc conception" {
     depends validation.integctm, validation.integerr
-    plan:start 2002-09-02-09:00:00-+0000
-    plan:end 2002-09-03-17:00:00-+0000
+    plan:start 2002-08-30-09:00:00-+0000
+    plan:end 2002-09-02-17:00:00-+0000
     plan:scheduled
     scheduling asap
   }
   task docexp "Redaction doc exploitation" {
     depends validation.integctm, validation.integerr, validation.majdd
-    plan:start 2002-09-03-17:00:00-+0000
-    plan:end 2002-09-06-17:00:00-+0000
+    plan:start 2002-09-02-17:00:00-+0000
+    plan:end 2002-09-05-17:00:00-+0000
     plan:scheduled
     scheduling asap
   }
   task docinst "Redaction doc installation" {
     depends validation.integctm, validation.integerr, validation.majdd
-    plan:start 2002-09-04-14:00:00-+0000
-    plan:end 2002-09-09-14:00:00-+0000
+    plan:start 2002-09-05-09:00:00-+0000
+    plan:end 2002-09-09-18:00:00-+0000
     plan:scheduled
     scheduling asap
   }
@@ -196,7 +196,7 @@ task validation "Validation des modifs" {
 task fini "Fini" {
   projectid arc
   depends validation, ctm, amelioration
-  plan:start 2002-09-09-17:00:00-+0000
+  plan:start 2002-09-09-18:00:00-+0000
   plan:scheduled
   milestone 
   scheduling asap
@@ -204,6 +204,27 @@ task fini "Fini" {
 supplement task start {
   priority 500
 }
+supplement task ctm {
+  supplement task jobsup {
+    plan:complete 90
+  }
+  supplement task modchaine {
+    plan:complete 60
+  }
+  supplement task defchaine {
+    plan:complete 90
+  }
+  supplement task lancechaine {
+    plan:complete 40
+  }
+  supplement task dlibm {
+    plan:complete 50
+  }
+  supplement task testchaine {
+    plan:complete 40
+  }
+  priority 500
+}
 supplement task amelioration {
   supplement task gesttable {
     plan:complete 100
@@ -231,27 +252,6 @@ supplement task amelioration {
   }
   priority 500
 }
-supplement task ctm {
-  supplement task jobsup {
-    plan:complete 90
-  }
-  supplement task modchaine {
-    plan:complete 60
-  }
-  supplement task defchaine {
-    plan:complete 90
-  }
-  supplement task lancechaine {
-    plan:complete 40
-  }
-  supplement task dlibm {
-    plan:complete 50
-  }
-  supplement task testchaine {
-    plan:complete 40
-  }
-  priority 500
-}
 supplement task validation {
   supplement task netvar {
   }
@@ -291,33 +291,32 @@ supplement resource Ekow {
     2002-07-22-13:00:00-+0000 +5h,
     2002-07-23-09:00:00-+0000 +3h,
     2002-07-23-13:00:00-+0000 +5h { overtime 2 }
-  plan:booking amelioration.gesttable
+  plan:booking ctm.defchaine
     2002-07-24-09:00:00-+0000 +3h,
     2002-07-24-13:00:00-+0000 +5h,
-    2002-07-25-09:00:00-+0000 +3h,
+    2002-07-25-09:00:00-+0000 +2h { overtime 2 }
+  plan:booking amelioration.errshell
+    2002-07-25-11:00:00-+0000 +1h,
     2002-07-25-13:00:00-+0000 +5h,
     2002-07-26-09:00:00-+0000 +3h,
-    2002-07-26-13:00:00-+0000 +5h { overtime 2 }
-  plan:booking amelioration.nomrex
+    2002-07-26-13:00:00-+0000 +5h,
     2002-07-29-09:00:00-+0000 +3h,
     2002-07-29-13:00:00-+0000 +3h { overtime 2 }
-  plan:booking amelioration.errshell
+  plan:booking amelioration.supuniv
     2002-07-29-16:00:00-+0000 +2h,
     2002-07-30-09:00:00-+0000 +3h,
-    2002-07-30-13:00:00-+0000 +5h,
-    2002-07-31-09:00:00-+0000 +3h,
-    2002-07-31-13:00:00-+0000 +5h,
-    2002-08-01-09:00:00-+0000 +2h { overtime 2 }
-  plan:booking ctm.dlibm
-    2002-08-01-11:00:00-+0000 +1h { overtime 2 }
+    2002-07-30-13:00:00-+0000 +5h { overtime 2 }
   plan:booking amelioration.supdyn
-    2002-08-01-13:00:00-+0000 +2h { overtime 2 }
+    2002-07-31-09:00:00-+0000 +2h { overtime 2 }
+  plan:booking ctm.lancechaine
+    2002-07-31-11:00:00-+0000 +1h,
+    2002-07-31-13:00:00-+0000 +5h,
+    2002-08-01-09:00:00-+0000 +3h,
+    2002-08-01-13:00:00-+0000 +5h { overtime 2 }
   plan:booking amelioration.modpre
-    2002-08-01-15:00:00-+0000 +3h,
     2002-08-02-09:00:00-+0000 +3h,
-    2002-08-02-13:00:00-+0000 +2h { overtime 2 }
+    2002-08-02-13:00:00-+0000 +5h { overtime 2 }
   plan:booking amelioration.testmod
-    2002-08-02-15:00:00-+0000 +3h,
     2002-08-05-09:00:00-+0000 +3h,
     2002-08-05-13:00:00-+0000 +5h,
     2002-08-06-09:00:00-+0000 +3h,
@@ -325,44 +324,36 @@ supplement resource Ekow {
     2002-08-07-09:00:00-+0000 +3h,
     2002-08-07-13:00:00-+0000 +5h,
     2002-08-08-09:00:00-+0000 +3h,
-    2002-08-08-13:00:00-+0000 +2h { overtime 2 }
-  plan:booking validation.integerr
-    2002-08-09-11:00:00-+0000 +1h,
-    2002-08-09-13:00:00-+0000 +5h { overtime 2 }
-  plan:booking validation.integctm
-    2002-08-26-09:00:00-+0000 +2h { overtime 2 }
+    2002-08-08-13:00:00-+0000 +5h { overtime 2 }
   plan:booking validation.integerr
-    2002-08-26-11:00:00-+0000 +1h,
-    2002-08-26-13:00:00-+0000 +5h,
-    2002-08-27-09:00:00-+0000 +3h,
-    2002-08-27-13:00:00-+0000 +1h { overtime 2 }
+    2002-08-09-09:00:00-+0000 +3h,
+    2002-08-09-13:00:00-+0000 +5h,
+    2002-08-26-09:00:00-+0000 +3h,
+    2002-08-26-13:00:00-+0000 +5h { overtime 2 }
   plan:booking validation.planrec
-    2002-08-27-14:00:00-+0000 +4h,
+    2002-08-27-09:00:00-+0000 +3h,
+    2002-08-27-13:00:00-+0000 +5h,
     2002-08-28-09:00:00-+0000 +3h,
     2002-08-28-13:00:00-+0000 +5h,
     2002-08-29-09:00:00-+0000 +3h,
-    2002-08-29-13:00:00-+0000 +5h,
+    2002-08-29-13:00:00-+0000 +5h { overtime 2 }
+  plan:booking validation.majdd
     2002-08-30-09:00:00-+0000 +3h,
-    2002-08-30-13:00:00-+0000 +1h { overtime 2 }
+    2002-08-30-13:00:00-+0000 +5h { overtime 2 }
   plan:booking validation.val
-    2002-08-30-14:00:00-+0000 +4h { overtime 2 }
-  plan:booking validation.majdd
     2002-09-02-09:00:00-+0000 +3h,
-    2002-09-02-13:00:00-+0000 +5h,
-    2002-09-03-09:00:00-+0000 +3h,
-    2002-09-03-13:00:00-+0000 +4h { overtime 2 }
+    2002-09-02-13:00:00-+0000 +5h { overtime 2 }
   plan:booking validation.docexp
-    2002-09-03-17:00:00-+0000 +1h,
+    2002-09-03-09:00:00-+0000 +3h,
+    2002-09-03-13:00:00-+0000 +5h,
     2002-09-04-09:00:00-+0000 +3h,
     2002-09-04-13:00:00-+0000 +5h { overtime 2 }
   plan:booking validation.docinst
     2002-09-05-09:00:00-+0000 +3h,
-    2002-09-05-13:00:00-+0000 +5h,
-    2002-09-06-09:00:00-+0000 +3h,
-    2002-09-06-13:00:00-+0000 +5h { overtime 2 }
+    2002-09-05-13:00:00-+0000 +5h { overtime 2 }
   plan:booking validation.netvar
-    2002-09-09-09:00:00-+0000 +3h,
-    2002-09-09-13:00:00-+0000 +4h
+    2002-09-06-09:00:00-+0000 +3h,
+    2002-09-06-13:00:00-+0000 +4h
 }
 supplement resource pmm {
   plan:booking ctm.modchaine
@@ -374,50 +365,47 @@ supplement resource pmm {
     2002-07-17-13:00:00-+0000 +5h,
     2002-07-18-09:00:00-+0000 +3h,
     2002-07-18-13:00:00-+0000 +5h { overtime 2 }
-  plan:booking ctm.defchaine
+  plan:booking amelioration.gesttable
     2002-07-19-09:00:00-+0000 +3h,
     2002-07-19-13:00:00-+0000 +5h,
-    2002-07-22-09:00:00-+0000 +2h { overtime 2 }
-  plan:booking ctm.lancechaine
-    2002-07-22-11:00:00-+0000 +1h,
+    2002-07-22-09:00:00-+0000 +3h,
     2002-07-22-13:00:00-+0000 +5h,
     2002-07-23-09:00:00-+0000 +3h,
-    2002-07-23-13:00:00-+0000 +5h,
-    2002-07-24-09:00:00-+0000 +1h { overtime 2 }
+    2002-07-23-13:00:00-+0000 +5h { overtime 2 }
   plan:booking ctm.jobsup
-    2002-07-24-10:00:00-+0000 +2h,
+    2002-07-24-09:00:00-+0000 +3h,
     2002-07-24-13:00:00-+0000 +5h,
     2002-07-25-09:00:00-+0000 +3h,
     2002-07-25-13:00:00-+0000 +5h,
     2002-07-26-09:00:00-+0000 +3h,
     2002-07-26-13:00:00-+0000 +5h,
     2002-07-29-09:00:00-+0000 +3h,
-    2002-07-29-13:00:00-+0000 +5h,
-    2002-07-30-09:00:00-+0000 +1h { overtime 2 }
-  plan:booking amelioration.supuniv
-    2002-07-30-10:00:00-+0000 +2h,
-    2002-07-30-13:00:00-+0000 +5h,
-    2002-07-31-09:00:00-+0000 +3h { overtime 2 }
+    2002-07-29-13:00:00-+0000 +5h { overtime 2 }
   plan:booking amelioration.supdyn
-    2002-07-31-13:00:00-+0000 +5h,
-    2002-08-01-09:00:00-+0000 +3h { overtime 2 }
+    2002-07-30-09:00:00-+0000 +3h,
+    2002-07-30-13:00:00-+0000 +5h { overtime 2 }
   plan:booking ctm.dlibm
-    2002-08-01-13:00:00-+0000 +5h,
-    2002-08-02-09:00:00-+0000 +3h,
-    2002-08-02-13:00:00-+0000 +5h,
-    2002-08-05-09:00:00-+0000 +2h { overtime 2 }
+    2002-07-31-09:00:00-+0000 +3h,
+    2002-07-31-13:00:00-+0000 +5h,
+    2002-08-01-09:00:00-+0000 +3h,
+    2002-08-01-13:00:00-+0000 +5h { overtime 2 }
+  plan:booking ctm.lancechaine
+    2002-08-02-09:00:00-+0000 +1h { overtime 2 }
+  plan:booking amelioration.nomrex
+    2002-08-02-10:00:00-+0000 +2h,
+    2002-08-02-13:00:00-+0000 +4h { overtime 2 }
   plan:booking ctm.testchaine
-    2002-08-05-11:00:00-+0000 +1h,
+    2002-08-02-17:00:00-+0000 +1h,
+    2002-08-05-09:00:00-+0000 +3h,
     2002-08-05-13:00:00-+0000 +5h,
     2002-08-06-09:00:00-+0000 +3h,
     2002-08-06-13:00:00-+0000 +5h,
     2002-08-07-09:00:00-+0000 +3h,
     2002-08-07-13:00:00-+0000 +5h,
     2002-08-08-09:00:00-+0000 +3h,
-    2002-08-08-13:00:00-+0000 +5h,
-    2002-08-09-09:00:00-+0000 +2h { overtime 2 }
+    2002-08-08-13:00:00-+0000 +4h { overtime 2 }
   plan:booking validation.integctm
-    2002-08-09-11:00:00-+0000 +1h,
+    2002-08-09-09:00:00-+0000 +3h,
     2002-08-09-13:00:00-+0000 +5h,
     2002-08-12-09:00:00-+0000 +3h,
     2002-08-12-13:00:00-+0000 +5h,
@@ -425,23 +413,24 @@ supplement resource pmm {
     2002-08-13-13:00:00-+0000 +5h,
     2002-08-14-09:00:00-+0000 +3h,
     2002-08-14-13:00:00-+0000 +5h { overtime 2 }
-  plan:booking validation.val
+  plan:booking validation.majdd
     2002-09-02-09:00:00-+0000 +3h,
-    2002-09-02-13:00:00-+0000 +5h,
+    2002-09-02-13:00:00-+0000 +4h { overtime 2 }
+  plan:booking validation.docexp
+    2002-09-02-17:00:00-+0000 +1h { overtime 2 }
+  plan:booking validation.val
     2002-09-03-09:00:00-+0000 +3h,
     2002-09-03-13:00:00-+0000 +5h,
     2002-09-04-09:00:00-+0000 +3h,
-    2002-09-04-13:00:00-+0000 +1h { overtime 2 }
-  plan:booking validation.docinst
-    2002-09-04-14:00:00-+0000 +4h { overtime 2 }
+    2002-09-04-13:00:00-+0000 +5h { overtime 2 }
   plan:booking validation.docexp
     2002-09-05-09:00:00-+0000 +3h,
-    2002-09-05-13:00:00-+0000 +5h,
-    2002-09-06-09:00:00-+0000 +3h,
-    2002-09-06-13:00:00-+0000 +4h { overtime 2 }
+    2002-09-05-13:00:00-+0000 +4h { overtime 2 }
   plan:booking validation.netvar
-    2002-09-06-17:00:00-+0000 +1h { overtime 2 }
+    2002-09-05-17:00:00-+0000 +1h { overtime 2 }
   plan:booking validation.docinst
+    2002-09-06-09:00:00-+0000 +3h,
+    2002-09-06-13:00:00-+0000 +5h,
     2002-09-09-09:00:00-+0000 +3h,
-    2002-09-09-13:00:00-+0000 +1h
+    2002-09-09-13:00:00-+0000 +5h
 }
index 7fdb73f..d7d8215 100644 (file)
@@ -1280,6 +1280,10 @@ characters are used.</para></listitem>
 <listitem><para>Added new Pertt chart generator from Gregoire Barbier
                to the contrib directory.</para></listitem>
 
+<listitem><para>Improved the scheduling heuristic to generate projects
+               with overall smaller project
+               durations.</para></listitem>
+
 </itemizedlist></para>
 
 </sect2>
index 0a0e052..c0fd3ea 100644 (file)
@@ -846,12 +846,12 @@ CSVReportElement::genCellCompleted(TableCellInfo* tci)
 }
 
 void
-CSVReportElement::genCellCompletedEffort(TableCellInfo* tci)
+CSVReportElement::genCellCompletedEffort(TableCellInfo*)
 {
 }
 
 void
-CSVReportElement::genCellRemainingEffort(TableCellInfo* tci)
+CSVReportElement::genCellRemainingEffort(TableCellInfo*)
 {
 }
 
index 169ad53..69ee0d3 100644 (file)
@@ -2622,6 +2622,7 @@ Task::prepareScenario(int sc)
     end = scenarios[sc].end = scenarios[sc].specifiedEnd;
     schedulingDone = scenarios[sc].scheduled = scenarios[sc].specifiedScheduled;
     scenarios[sc].isOnCriticalPath = false;
+    scenarios[sc].pathCriticalness = -1.0;
 
     duration = scenarios[sc].duration;
     length = scenarios[sc].length;
@@ -2866,7 +2867,7 @@ Task::computeCriticalness(int sc)
 
 }
 
-void
+double
 Task::computePathCriticalness(int sc)
 {
     /*
@@ -2875,41 +2876,11 @@ Task::computePathCriticalness(int sc)
      * of a chain of effort-based task raises all the task in the chain to a
      * higher criticalness level than the individual tasks. In fact, the path
      * criticalness of this chain is equal to the sum of the individual
-     * criticalnesses of the tasks.
-     *
-     * Since both the forward and backward functions include the
-     * criticalness of this function we have to subtract it again.
+     * criticalnesses of the tasks that are trailing this task.
      */
-    scenarios[sc].pathCriticalness = computeBackwardCriticalness(sc) -
-        scenarios[sc].criticalness + computeForwardCriticalness(sc);
-}
-
-double
-Task::computeBackwardCriticalness(int sc)
-{
-    double maxCriticalness = 0.0;
-
-    double criticalness;
-    /* We only need to check the previous tasks of leaf tasks. Parent task
-     * dependencies have been inherited by the sub tasks and will be checked
-     * there. */
-    if (!hasSubs())
-        for (TaskListIterator tli(previous); *tli; ++tli)
-            if ((criticalness = (*tli)->computeBackwardCriticalness(sc)) >
-                maxCriticalness)
-                maxCriticalness = criticalness;
-
-    if (parent &&
-        ((criticalness = static_cast<Task*>
-          (parent)->computeBackwardCriticalness(sc)) > maxCriticalness))
-        maxCriticalness = criticalness;
+    if (scenarios[sc].pathCriticalness >= 0.0)
+        return scenarios[sc].pathCriticalness;
 
-    return scenarios[sc].criticalness + maxCriticalness;
-}
-
-double
-Task::computeForwardCriticalness(int sc)
-{
     double maxCriticalness = 0.0;
 
     double criticalness;
@@ -2918,16 +2889,21 @@ Task::computeForwardCriticalness(int sc)
      * there. */
     if (!hasSubs())
         for (TaskListIterator tli(followers); *tli; ++tli)
-            if ((criticalness = (*tli)->computeForwardCriticalness(sc)) >
+            if ((criticalness = (*tli)->computePathCriticalness(sc)) >
                 maxCriticalness)
                 maxCriticalness = criticalness;
 
+    /* This does not make any sense to me!
     if (parent &&
-        ((criticalness = static_cast<Task*>(parent)->computeForwardCriticalness(sc)) >
+        ((criticalness =
+          static_cast<Task*>(parent)->computePathCriticalness(sc)) >
          maxCriticalness))
-        maxCriticalness = criticalness;
+        maxCriticalness = criticalness; */
+
+    scenarios[sc].pathCriticalness = scenarios[sc].criticalness +
+        maxCriticalness;
 
-    return scenarios[sc].criticalness + maxCriticalness;
+    return scenarios[sc].pathCriticalness;
 }
 
 void
index cfa9ef7..f1502cc 100644 (file)
@@ -297,7 +297,7 @@ public:
     double getCriticalness(int sc) const { return scenarios[sc].criticalness; }
     void checkAndMarkCriticalPath(int sc, double minSlack, time_t maxEnd);
 
-    void computePathCriticalness(int sc);
+    double computePathCriticalness(int sc);
     double getPathCriticalness(int sc) const
     {
         return scenarios[sc].pathCriticalness;
@@ -397,9 +397,6 @@ private:
     bool hasStartDependency() const;
     bool hasEndDependency() const;
 
-    double computeBackwardCriticalness(int sc);
-    double computeForwardCriticalness(int sc);
-
     bool analyzePath(int sc, double minSlack, time_t pathStart, long busyTime,
                      long worstMinSlackTime, long& checked, long& found);
     void collectTransientFollowers(TaskList& list);