├── apps └── .keep ├── domodel └── .keep ├── flows └── .keep ├── jobs └── .keep ├── jupyter └── .keep ├── misc └── .keep ├── models └── .keep ├── rstudio └── .keep ├── scripts └── .keep ├── shaper └── .keep ├── datasets ├── .keep ├── skill.csv ├── parameterLine.csv ├── technician.csv ├── location.csv └── operation.csv ├── datasources ├── .keep ├── credentials │ └── .keep └── remotedatasets │ └── .keep ├── packages ├── R │ └── .keep ├── python │ └── .keep └── scala │ └── .keep ├── zeppelin └── .keep ├── decision-optimization └── TechnicianDispatching │ ├── .scenarios │ ├── Scenario 1 │ │ ├── kpis.csv │ │ ├── list_of_SchedulingAssignment_solution.csv │ │ ├── CO_SOLVE_STATUS.json │ │ ├── solveStatus.json │ │ ├── scenario.json │ │ ├── list_of_Operation_solution.csv │ │ ├── CO_SOLUTION_TEXT.json │ │ ├── model.py │ │ ├── log.txt │ │ └── Technician_to_operation_assignments_report.csv │ └── dashboard │ │ ├── scenario.json │ │ └── dashboard.json │ └── .decision.json ├── README.md └── info.json /apps/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /domodel/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /flows/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /jobs/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /jupyter/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /misc/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /models/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /rstudio/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /scripts/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /shaper/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /datasets/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /datasources/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/R/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zeppelin/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/python/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/scala/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /datasources/credentials/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /datasources/remotedatasets/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /datasets/skill.csv: -------------------------------------------------------------------------------- 1 | id 2 | S0 3 | S1 4 | S2 5 | S3 6 | -------------------------------------------------------------------------------- /datasets/parameterLine.csv: -------------------------------------------------------------------------------- 1 | id,value,date value 2 | HORIZON_START,,14/10/2017 3 | TIME_LIMIT,600, 4 | -------------------------------------------------------------------------------- /decision-optimization/TechnicianDispatching/.scenarios/Scenario 1/kpis.csv: -------------------------------------------------------------------------------- 1 | time to complete all operations,108 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | This DO for DSX example introduces basic concepts of model builder and dashboard using a python CPLEX model. 2 | 3 | It solves a simple Technician Dispatching example. 4 | -------------------------------------------------------------------------------- /decision-optimization/TechnicianDispatching/.decision.json: -------------------------------------------------------------------------------- 1 | {"name":"TechnicianDispatching","creator":"alain","createdAt":1523427273345,"usage":{"lastModificationTime":1523427273345,"lastModifier":"alain"},"type":"DecisionArtifact"} -------------------------------------------------------------------------------- /datasets/technician.csv: -------------------------------------------------------------------------------- 1 | Id,Skill 2 | Tech1,S3 3 | Tech2,S3 4 | Tech3,S3 5 | Tech4,S3 6 | Tech5,S3 7 | Tech6,S3 8 | Tech7,S3 9 | Tech8,S3 10 | Tech9,S3 11 | Tech10,S3 12 | Tech11,S3 13 | Tech12,S3 14 | Tech13,S3 15 | Tech14,S3 16 | Tech15,S3 17 | Tech16,S3 18 | Tech17,S3 19 | Tech18,S3 20 | Tech19,S3 21 | Tech20,S3 22 | -------------------------------------------------------------------------------- /info.json: -------------------------------------------------------------------------------- 1 | { 2 | "provider": ["IBM"], 3 | "name": "DO for WS Technician Dispatching example" , 4 | "model": [ "CPO" ], 5 | "development": [ "Modeling Assistant" ], 6 | "category": [ {"DOforWS":["DO for WS"]} ], 7 | "industry": [ "Energy" ], 8 | "abstract": "According to the operations skills and distance between operations, optimize technician dispatching." 9 | } 10 | -------------------------------------------------------------------------------- /decision-optimization/TechnicianDispatching/.scenarios/dashboard/scenario.json: -------------------------------------------------------------------------------- 1 | {"parentId":"TechnicianDispatching","category":"dashboard","creator":"alain","createdAt":1523427605145,"usage":{"lastModificationTime":1523430715388,"lastModifier":"alain"},"dataUsagePerCategory":{"":{"lastModificationTime":1523430715388,"lastModifier":"alain"}},"state":"available","assets":[{"name":"dashboard.json","creator":"alain","createdAt":1523427607384,"lastUpdater":"alain","updatedAt":1523430715388,"contentType":"application/json","path":"dashboard.json"}]} -------------------------------------------------------------------------------- /datasets/location.csv: -------------------------------------------------------------------------------- 1 | id 2 | L0 3 | L102 4 | L103 5 | L106 6 | L113 7 | L116 8 | L122 9 | L128 10 | L134 11 | L135 12 | L138 13 | L139 14 | L141 15 | L145 16 | L146 17 | L147 18 | L150 19 | L151 20 | L153 21 | L154 22 | L155 23 | L156 24 | L157 25 | L159 26 | L162 27 | L168 28 | L171 29 | L173 30 | L178 31 | L179 32 | L18 33 | L185 34 | L186 35 | L191 36 | L203 37 | L206 38 | L213 39 | L222 40 | L227 41 | L229 42 | L231 43 | L246 44 | L247 45 | L249 46 | L252 47 | L26 48 | L262 49 | L271 50 | L273 51 | L274 52 | L292 53 | L299 54 | L309 55 | L310 56 | L313 57 | L315 58 | L321 59 | L323 60 | L328 61 | L33 62 | L333 63 | L334 64 | L336 65 | L338 66 | L349 67 | L355 68 | L36 69 | L361 70 | L365 71 | L370 72 | L371 73 | L375 74 | L38 75 | L382 76 | L385 77 | L387 78 | L392 79 | L393 80 | L402 81 | L408 82 | L411 83 | L412 84 | L418 85 | L423 86 | L430 87 | L431 88 | L437 89 | L444 90 | L445 91 | L469 92 | L483 93 | L493 94 | L495 95 | L496 96 | L511 97 | L527 98 | L529 99 | L530 100 | L540 101 | L543 102 | L554 103 | L556 104 | L560 105 | L57 106 | L62 107 | L63 108 | L7 109 | L70 110 | L75 111 | L76 112 | L77 113 | L78 114 | L79 115 | L80 116 | L81 117 | L82 118 | L91 119 | L93 120 | L99 121 | -------------------------------------------------------------------------------- /decision-optimization/TechnicianDispatching/.scenarios/Scenario 1/list_of_SchedulingAssignment_solution.csv: -------------------------------------------------------------------------------- 1 | O1001,Tech1,1,5.0 2 | O1002,Tech2,1,5.0 3 | O1003,Tech3,1,5.0 4 | O1004,Tech4,1,5.0 5 | O1005,Tech5,1,5.0 6 | O1006,Tech6,1,5.0 7 | O1007,Tech7,1,5.0 8 | O1008,Tech8,1,5.0 9 | O1009,Tech9,1,5.0 10 | O1010,Tech10,1,5.0 11 | O1011,Tech11,1,5.0 12 | O1012,Tech12,1,5.0 13 | O1013,Tech13,1,5.0 14 | O1014,Tech14,1,5.0 15 | O1015,Tech15,1,5.0 16 | O1016,Tech16,1,5.0 17 | O1017,Tech17,1,5.0 18 | O1018,Tech18,1,5.0 19 | O1019,Tech19,1,5.0 20 | O102,Tech14,1,10.0 21 | O1020,Tech20,1,5.0 22 | O103,Tech18,1,8.0 23 | O106,Tech8,1,8.0 24 | O113,Tech2,1,10.0 25 | O116,Tech10,1,30.0 26 | O122,Tech17,1,10.0 27 | O128,Tech3,1,15.0 28 | O134,Tech20,1,12.0 29 | O135,Tech7,1,15.0 30 | O138,Tech17,1,22.0 31 | O139,Tech4,1,90.0 32 | O141,Tech2,1,10.0 33 | O145,Tech20,1,8.0 34 | O146,Tech2,1,12.0 35 | O147,Tech13,1,22.0 36 | O150,Tech2,1,15.0 37 | O151,Tech15,1,12.0 38 | O153,Tech18,1,11.0 39 | O154,Tech11,1,11.0 40 | O155,Tech20,1,20.0 41 | O156,Tech17,1,11.0 42 | O157,Tech7,1,11.0 43 | O159,Tech1,1,10.0 44 | O162,Tech6,1,12.0 45 | O168,Tech10,1,15.0 46 | O171,Tech15,1,12.0 47 | O173,Tech11,1,45.0 48 | O178,Tech17,1,20.0 49 | O179,Tech18,1,20.0 50 | O18,Tech20,1,12.0 51 | O185,Tech17,1,10.0 52 | O186,Tech16,1,10.0 53 | O191,Tech6,1,20.0 54 | O2001,Tech1,1,5.0 55 | O2002,Tech2,1,5.0 56 | O2003,Tech3,1,5.0 57 | O2004,Tech4,1,5.0 58 | O2005,Tech5,1,5.0 59 | O2006,Tech6,1,5.0 60 | O2007,Tech7,1,5.0 61 | O2008,Tech8,1,5.0 62 | O2009,Tech9,1,5.0 63 | O2010,Tech10,1,5.0 64 | O2011,Tech11,1,5.0 65 | O2012,Tech12,1,5.0 66 | O2013,Tech13,1,5.0 67 | O2014,Tech14,1,5.0 68 | O2015,Tech15,1,5.0 69 | O2016,Tech16,1,5.0 70 | O2017,Tech17,1,5.0 71 | O2018,Tech18,1,5.0 72 | O2019,Tech19,1,5.0 73 | O2020,Tech20,1,5.0 74 | O203,Tech8,1,12.0 75 | O206,Tech6,1,30.0 76 | O213,Tech5,1,12.0 77 | O222,Tech15,1,10.0 78 | O227,Tech12,1,12.0 79 | O229,Tech14,1,30.0 80 | O231,Tech7,1,25.0 81 | O246,Tech9,1,12.0 82 | O247,Tech15,1,12.0 83 | O249,Tech3,1,12.0 84 | O252,Tech3,1,12.0 85 | O26,Tech11,1,10.0 86 | O262,Tech14,1,12.0 87 | O271,Tech5,1,20.0 88 | O273,Tech1,1,20.0 89 | O274,Tech16,1,15.0 90 | O292,Tech3,1,25.0 91 | O299,Tech20,1,12.0 92 | O309,Tech16,1,8.0 93 | O310,Tech18,1,12.0 94 | O313,Tech12,1,12.0 95 | O315,Tech9,1,12.0 96 | O321,Tech16,1,15.0 97 | O323,Tech8,1,12.0 98 | O328,Tech9,1,12.0 99 | O33,Tech15,1,8.0 100 | O333,Tech12,1,15.0 101 | O334,Tech8,1,12.0 102 | O336,Tech3,1,12.0 103 | O338,Tech20,1,15.0 104 | O349,Tech13,1,15.0 105 | O355,Tech12,1,12.0 106 | O36,Tech8,1,12.0 107 | O361,Tech1,1,22.0 108 | O365,Tech18,1,22.0 109 | O370,Tech6,1,12.0 110 | O371,Tech13,1,15.0 111 | O375,Tech1,1,12.0 112 | O38,Tech10,1,15.0 113 | O382,Tech6,1,8.0 114 | O385,Tech8,1,20.0 115 | O387,Tech12,1,8.0 116 | O392,Tech13,1,12.0 117 | O393,Tech10,1,8.0 118 | O402,Tech15,1,20.0 119 | O408,Tech7,1,8.0 120 | O411,Tech14,1,8.0 121 | O412,Tech16,1,22.0 122 | O418,Tech3,1,20.0 123 | O423,Tech12,1,15.0 124 | O430,Tech5,1,12.0 125 | O431,Tech2,1,20.0 126 | O437,Tech11,1,12.0 127 | O444,Tech9,1,15.0 128 | O445,Tech7,1,30.0 129 | O469,Tech11,1,15.0 130 | O483,Tech19,1,8.0 131 | O493,Tech10,1,30.0 132 | O495,Tech17,1,8.0 133 | O496,Tech20,1,15.0 134 | O511,Tech14,1,20.0 135 | O527,Tech2,1,12.0 136 | O529,Tech16,1,15.0 137 | O530,Tech9,1,15.0 138 | O540,Tech2,1,15.0 139 | O543,Tech15,1,15.0 140 | O554,Tech13,1,22.0 141 | O556,Tech9,1,12.0 142 | O560,Tech19,1,90.0 143 | O57,Tech9,1,12.0 144 | O62,Tech14,1,15.0 145 | O63,Tech17,1,12.0 146 | O7,Tech12,1,20.0 147 | O70,Tech1,1,30.0 148 | O75,Tech5,1,30.0 149 | O76,Tech5,1,8.0 150 | O77,Tech16,1,10.0 151 | O78,Tech8,1,11.0 152 | O79,Tech6,1,8.0 153 | O80,Tech15,1,8.0 154 | O81,Tech7,1,8.0 155 | O82,Tech4,1,8.0 156 | O91,Tech18,1,25.0 157 | O93,Tech5,1,15.0 158 | O99,Tech13,1,12.0 159 | -------------------------------------------------------------------------------- /decision-optimization/TechnicianDispatching/.scenarios/dashboard/dashboard.json: -------------------------------------------------------------------------------- 1 | {"id":"a81fa068-88f0-4e1b-a54c-54da5f519cb9","name":"Dashboard","version":"0.3.0","locked":false,"activePage":2,"pages":[{"id":"3a636074-709e-4148-a8c8-fcbce44f87e9","name":"Input","widgets":{"247f4b06-5753-41d5-99b4-58c88639a523":{"name":"","type":"Table","props":{"container":"","data":"operation","spec":{"numbered":true,"compact":true,"columnExpand":true,"columnShrink":false,"columnWidth":0,"sortOrder":[],"columns":[{"property":"id","label":"id","type":"String","visible":true,"width":0,"style":{}},{"property":"duration","label":"duration","type":"Number","visible":true,"width":0,"style":{}},{"property":"required skill","label":"required skill","type":"String","visible":true,"width":0,"style":{}},{"property":"location","label":"location","type":"String","visible":true,"width":0,"style":{}},{"property":"technician","label":"technician","type":"String","visible":true,"width":0,"style":{}},{"property":"type","label":"type","type":"String","visible":true,"width":0,"style":{}},{"property":"unperformed cost","label":"unperformed cost","type":"Number","visible":true,"width":0,"style":{}},{"property":"Start date","label":"Start date","type":"String","visible":true,"width":0,"style":{}},{"property":"time1","label":"time1","type":"String","visible":true,"width":0,"style":{}},{"property":"time2","label":"time2","type":"String","visible":true,"width":0,"style":{}},{"property":"\"begins after \"","label":"\"begins after \"","type":"String","visible":true,"width":0,"style":{}},{"property":"\"finishes before \"","label":"\"finishes before \"","type":"String","visible":true,"width":0,"style":{}},{"property":"step1","label":"step1","type":"Number","visible":true,"width":0,"style":{}},{"property":"step2","label":"step2","type":"Number","visible":true,"width":0,"style":{}}]},"search":""}},"04a0fad1-124a-4c2d-8be0-75be79aa8370":{"name":"","type":"Table","props":{"container":"","data":"technician","spec":{"numbered":true,"compact":true,"columnExpand":true,"columnShrink":false,"columnWidth":0,"sortOrder":[],"columns":[{"property":"Id","label":"Id","type":"String","visible":true,"width":0,"style":{}},{"property":"Skill","label":"Skill","type":"String","visible":true,"width":0,"style":{}}]},"search":""}}},"layouts":{"SM":[{"i":"247f4b06-5753-41d5-99b4-58c88639a523","x":0,"y":0,"w":1,"h":2,"moved":false,"static":false},{"i":"04a0fad1-124a-4c2d-8be0-75be79aa8370","x":0,"y":2,"w":1,"h":2,"moved":false,"static":false}],"MD":[{"i":"247f4b06-5753-41d5-99b4-58c88639a523","x":0,"y":0,"w":3,"h":2,"moved":false,"static":false},{"i":"04a0fad1-124a-4c2d-8be0-75be79aa8370","x":0,"y":2,"w":3,"h":2,"moved":false,"static":false}],"LG":[{"i":"247f4b06-5753-41d5-99b4-58c88639a523","x":0,"y":0,"w":6,"h":2,"moved":false,"static":false},{"i":"04a0fad1-124a-4c2d-8be0-75be79aa8370","x":0,"y":2,"w":6,"h":2,"moved":false,"static":false}]}},{"id":"ce9536c9-c638-4999-803b-a23b3d0fd726","name":"Schedule","widgets":{"928e7ee6-796f-4409-9c31-eb5059e190b3":{"name":"","type":"CognitiveGantt","props":{"container":"","data":"$cognitive-gantt"}}},"layouts":{"SM":[{"i":"928e7ee6-796f-4409-9c31-eb5059e190b3","x":0,"y":0,"w":1,"h":3,"moved":false,"static":false}],"MD":[{"i":"928e7ee6-796f-4409-9c31-eb5059e190b3","x":0,"y":0,"w":3,"h":3,"moved":false,"static":false}],"LG":[{"w":6,"h":5,"x":0,"y":0,"i":"928e7ee6-796f-4409-9c31-eb5059e190b3","moved":false,"static":false}]}},{"id":"71f6a1c6-901d-4ff1-ba7f-62b339a8b230","name":"Load","widgets":{"ea533276-4ca4-4f9d-8605-6b2cdf4f8ea3":{"name":"","type":"Chart","props":{"container":"","data":"list_of_SchedulingAssignment_solution","spec":{"mark":"bar","encoding":{"x":{"field":"id_of_Technician","type":"nominal"},"y":{"field":"taskAssignmentDurationVar","type":"quantitative"},"color":{"field":"id_of_Operation","type":"nominal"}},"config":{"overlay":{"line":true},"scale":{"useUnaggregatedDomain":true}}},"search":""}}},"layouts":{"SM":[{"i":"ea533276-4ca4-4f9d-8605-6b2cdf4f8ea3","x":0,"y":0,"w":1,"h":2,"moved":false,"static":false}],"MD":[{"i":"ea533276-4ca4-4f9d-8605-6b2cdf4f8ea3","x":0,"y":0,"w":1,"h":2,"moved":false,"static":false}],"LG":[{"w":3,"h":5,"x":0,"y":0,"i":"ea533276-4ca4-4f9d-8605-6b2cdf4f8ea3","moved":false,"static":false}]}}],"breakpoints":[{"name":"SM","width":0,"columns":1},{"name":"MD","width":480,"columns":3},{"name":"LG","width":960,"columns":6}],"rowHeight":120} -------------------------------------------------------------------------------- /decision-optimization/TechnicianDispatching/.scenarios/Scenario 1/CO_SOLVE_STATUS.json: -------------------------------------------------------------------------------- 1 | {"creationTime":1523430556161,"jobUri":"http:\/\/dods-processor-server-1523427210415-1168-svc\/dd-execution\/api\/v1\/solve\/job.fa01539e-cbf8-4062-9ecb-42cc5d4b3b1e","lastModificationTime":1523430583820,"taskTearDownMillis":0,"ganttAvailable":true,"taskSetupMillis":473,"state":"TERMINATED","jobDetails":{"executionStatus":"PROCESSED","startedAt":1523430558218,"logTail":["[2018-04-11T07:09:36Z, INFO] 108 69000 2 2 F on _ITV_2198","[2018-04-11T07:09:36Z, INFO] ! Time = 16.47s, Average fail depth = 180, Memory usage = 72.1 MB","[2018-04-11T07:09:36Z, INFO] ! Current bound is 100 (gap is 7.41%)","[2018-04-11T07:09:36Z, INFO] ! Best Branches Non-fixed W Branch decision","[2018-04-11T07:09:36Z, INFO] 108 70000 2 2 F on _ITV_1757","[2018-04-11T07:09:36Z, INFO] 108 71000 2 2 F on _ITV_2364","[2018-04-11T07:09:36Z, INFO] 108 46000 2460 1 F on _ITV_12","[2018-04-11T07:09:36Z, INFO] 108 72000 1 2 F on _ITV_3066","[2018-04-11T07:09:36Z, INFO] 108 73000 2 2 on _ITV_1645","[2018-04-11T07:09:36Z, INFO] 108 74000 69 2 on _ITV_938","[2018-04-11T07:09:36Z, INFO] 108 75000 1 2 on _ITV_3296","[2018-04-11T07:09:36Z, INFO] 108 76000 75 2 F on _ITV_1917","[2018-04-11T07:09:36Z, INFO] 108 77000 2 2 on _ITV_2647","[2018-04-11T07:09:36Z, INFO] 108 47000 437 1 on _ITV_18","[2018-04-11T07:09:36Z, INFO] 108 48000 309 1 on _ITV_2565","[2018-04-11T07:09:37Z, INFO] 108 78000 1 2 on _ITV_3238","[2018-04-11T07:09:37Z, INFO] 108 79000 2 2 on _ITV_781","[2018-04-11T07:09:37Z, INFO] 108 49000 2 1 F on _ITV_951","[2018-04-11T07:09:37Z, INFO] 108 80000 1 2 on _ITV_46","[2018-04-11T07:09:37Z, INFO] 108 81000 808 2 on _ITV_338","[2018-04-11T07:09:37Z, INFO] 108 82000 1 2 F on _ITV_1505","[2018-04-11T07:09:37Z, INFO] 108 83000 2 2 F on _ITV_107","[2018-04-11T07:09:37Z, INFO] 108 50000 2 1 on _ITV_1199","[2018-04-11T07:09:37Z, INFO] 108 51000 2 1 F on _ITV_1421","[2018-04-11T07:09:37Z, INFO] ! Time = 18.40s, Average fail depth = 151, Memory usage = 71.2 MB","[2018-04-11T07:09:37Z, INFO] ! Current bound is 100 (gap is 7.41%)","[2018-04-11T07:09:37Z, INFO] ! Best Branches Non-fixed W Branch decision","[2018-04-11T07:09:37Z, INFO] 108 52000 2 1 on _ITV_121","[2018-04-11T07:09:39Z, INFO] 108 84000 2 2 on _ITV_1661","[2018-04-11T07:09:39Z, INFO] 108 85000 1 2 on _ITV_155","[2018-04-11T07:09:39Z, INFO] 108 53000 2 1 on _ITV_3057","[2018-04-11T07:09:39Z, INFO] 108 54000 2 1 F on _ITV_1505","[2018-04-11T07:09:39Z, INFO] 108 55000 2 1 F on _ITV_46","[2018-04-11T07:09:39Z, INFO] 108 86000 1 2 on _ITV_134","[2018-04-11T07:09:39Z, INFO] ! ----------------------------------------------------------------------------","[2018-04-11T07:09:39Z, INFO] ! Search terminated by limit, 3 solutions found.","[2018-04-11T07:09:39Z, INFO] ! Best objective : 108 (gap is 7.41%)","[2018-04-11T07:09:39Z, INFO] ! Best bound : 100","[2018-04-11T07:09:39Z, INFO] ! Number of branches : 141000","[2018-04-11T07:09:39Z, INFO] ! Number of fails : 59053","[2018-04-11T07:09:39Z, INFO] ! Total memory usage : 72.7 MB (71.3 MB CP Optimizer + 1.3 MB Concert)","[2018-04-11T07:09:39Z, INFO] ! Time spent in solve : 20.04s (19.77s engine + 0.27s extraction)","[2018-04-11T07:09:39Z, INFO] ! Search speed (br. \/ s) : 7132.0","[2018-04-11T07:09:39Z, INFO] ! ----------------------------------------------------------------------------","[2018-04-11T07:09:39Z, INFO] solve + export of all intermediate solutions done in 20.621352911 secs"],"createdAt":1523430558017,"applicationVersionUsed":"1.0-R1-b4181","solveStatus":"FEASIBLE_SOLUTION","endReportedAt":1523430580380,"endedAt":1523430580346,"details":{"MODEL_DETAIL_TYPE":"CPO Scheduling","MODEL_DETAIL_SEQUENCE_VARS":"20","MODEL_DETAIL_INTEGER_VARS":"1","MODEL_DETAIL_KPIS":"[\"time to complete all operations\"]","MODEL_DETAIL_CONSTRAINTS":"1613","PROGRESS_CURRENT_OBJECTIVE":"108","MODEL_DETAIL_INTERVAL_VARS":"3318","KPI.time to complete all operations":null},"id":"job.fa01539e-cbf8-4062-9ecb-42cc5d4b3b1e","systemDetails":{"worker.process.cpu.set":null,"worker.heap.max":"524288","worker.process.max.memory":"524288","worker.data.read.bytes":"569851","worker.data.write.duration":"536","worker.processing.duration":"22057","worker.process.peak.swap":"0","worker.cores.default":"2","worker.log.write.duration":"6","worker.process.processing.duration":"21151","worker.data.read.duration":"165","worker.jms.write.chars":"64383","worker.log.write.chars":"1076","worker.data.write.bytes":"31524","worker.cores.total":"8","worker.heap.used":"98604","worker.process.peak.memory":"250504","worker.setup.duration":"65","worker.jms.write.duration":"93"},"submittedAt":1523430558017,"updatedAt":1523430580346},"runtimeDetails":{"state":"STARTED"},"retry":0,"taskSolveMillis":22354,"cplex_state":"TERMINATED"} -------------------------------------------------------------------------------- /decision-optimization/TechnicianDispatching/.scenarios/Scenario 1/solveStatus.json: -------------------------------------------------------------------------------- 1 | {"retry":0,"creationTime":1523430556161,"lastModificationTime":1523430579170,"state":"TERMINATED","solveConfig":{"containerId":"Scenario 1","collectEngineLog":true,"solveParameters":{"oaas.logAttachmentName":"log.txt","oaas.logTailEnabled":"true"}},"jobId":"job.fa01539e-cbf8-4062-9ecb-42cc5d4b3b1e","transactionId":"5b6dbe05-5a2b-401d-b00b-0bf8e7327d3e","dataContainerId":"e32d1ee0-92bb-4c9e-a1a1-bcfc24fcb816","jobDetails":{"id":"job.fa01539e-cbf8-4062-9ecb-42cc5d4b3b1e","createdAt":1523430558017,"startedAt":1523430558218,"endedAt":1523430580346,"endReportedAt":1523430580380,"submittedAt":1523430558017,"updatedAt":1523430580346,"applicationVersionUsed":"1.0-R1-b4181","details":{"MODEL_DETAIL_KPIS":"[\"time to complete all operations\"]","MODEL_DETAIL_CONSTRAINTS":"1613","MODEL_DETAIL_INTEGER_VARS":"1","KPI.time to complete all operations":null,"MODEL_DETAIL_TYPE":"CPO Scheduling","MODEL_DETAIL_SEQUENCE_VARS":"20","PROGRESS_CURRENT_OBJECTIVE":"108","MODEL_DETAIL_INTERVAL_VARS":"3318"},"systemDetails":{"worker.process.max.memory":"524288","worker.cores.total":"8","worker.cores.default":"2","worker.process.cpu.set":null,"worker.heap.max":"524288","worker.data.read.bytes":"569851","worker.data.write.duration":"536","worker.processing.duration":"22057","worker.process.peak.swap":"0","worker.log.write.duration":"6","worker.process.processing.duration":"21151","worker.data.read.duration":"165","worker.jms.write.chars":"64383","worker.log.write.chars":"1076","worker.data.write.bytes":"31524","worker.heap.used":"98604","worker.process.peak.memory":"250504","worker.setup.duration":"65","worker.jms.write.duration":"93"},"executionStatus":"PROCESSED","solveStatus":"FEASIBLE_SOLUTION","logTail":["[2018-04-11T07:09:36Z, INFO] 108 69000 2 2 F on _ITV_2198","[2018-04-11T07:09:36Z, INFO] ! Time = 16.47s, Average fail depth = 180, Memory usage = 72.1 MB","[2018-04-11T07:09:36Z, INFO] ! Current bound is 100 (gap is 7.41%)","[2018-04-11T07:09:36Z, INFO] ! Best Branches Non-fixed W Branch decision","[2018-04-11T07:09:36Z, INFO] 108 70000 2 2 F on _ITV_1757","[2018-04-11T07:09:36Z, INFO] 108 71000 2 2 F on _ITV_2364","[2018-04-11T07:09:36Z, INFO] 108 46000 2460 1 F on _ITV_12","[2018-04-11T07:09:36Z, INFO] 108 72000 1 2 F on _ITV_3066","[2018-04-11T07:09:36Z, INFO] 108 73000 2 2 on _ITV_1645","[2018-04-11T07:09:36Z, INFO] 108 74000 69 2 on _ITV_938","[2018-04-11T07:09:36Z, INFO] 108 75000 1 2 on _ITV_3296","[2018-04-11T07:09:36Z, INFO] 108 76000 75 2 F on _ITV_1917","[2018-04-11T07:09:36Z, INFO] 108 77000 2 2 on _ITV_2647","[2018-04-11T07:09:36Z, INFO] 108 47000 437 1 on _ITV_18","[2018-04-11T07:09:36Z, INFO] 108 48000 309 1 on _ITV_2565","[2018-04-11T07:09:37Z, INFO] 108 78000 1 2 on _ITV_3238","[2018-04-11T07:09:37Z, INFO] 108 79000 2 2 on _ITV_781","[2018-04-11T07:09:37Z, INFO] 108 49000 2 1 F on _ITV_951","[2018-04-11T07:09:37Z, INFO] 108 80000 1 2 on _ITV_46","[2018-04-11T07:09:37Z, INFO] 108 81000 808 2 on _ITV_338","[2018-04-11T07:09:37Z, INFO] 108 82000 1 2 F on _ITV_1505","[2018-04-11T07:09:37Z, INFO] 108 83000 2 2 F on _ITV_107","[2018-04-11T07:09:37Z, INFO] 108 50000 2 1 on _ITV_1199","[2018-04-11T07:09:37Z, INFO] 108 51000 2 1 F on _ITV_1421","[2018-04-11T07:09:37Z, INFO] ! Time = 18.40s, Average fail depth = 151, Memory usage = 71.2 MB","[2018-04-11T07:09:37Z, INFO] ! Current bound is 100 (gap is 7.41%)","[2018-04-11T07:09:37Z, INFO] ! Best Branches Non-fixed W Branch decision","[2018-04-11T07:09:37Z, INFO] 108 52000 2 1 on _ITV_121","[2018-04-11T07:09:39Z, INFO] 108 84000 2 2 on _ITV_1661","[2018-04-11T07:09:39Z, INFO] 108 85000 1 2 on _ITV_155","[2018-04-11T07:09:39Z, INFO] 108 53000 2 1 on _ITV_3057","[2018-04-11T07:09:39Z, INFO] 108 54000 2 1 F on _ITV_1505","[2018-04-11T07:09:39Z, INFO] 108 55000 2 1 F on _ITV_46","[2018-04-11T07:09:39Z, INFO] 108 86000 1 2 on _ITV_134","[2018-04-11T07:09:39Z, INFO] ! ----------------------------------------------------------------------------","[2018-04-11T07:09:39Z, INFO] ! Search terminated by limit, 3 solutions found.","[2018-04-11T07:09:39Z, INFO] ! Best objective : 108 (gap is 7.41%)","[2018-04-11T07:09:39Z, INFO] ! Best bound : 100","[2018-04-11T07:09:39Z, INFO] ! Number of branches : 141000","[2018-04-11T07:09:39Z, INFO] ! Number of fails : 59053","[2018-04-11T07:09:39Z, INFO] ! Total memory usage : 72.7 MB (71.3 MB CP Optimizer + 1.3 MB Concert)","[2018-04-11T07:09:39Z, INFO] ! Time spent in solve : 20.04s (19.77s engine + 0.27s extraction)","[2018-04-11T07:09:39Z, INFO] ! Search speed (br. / s) : 7132.0","[2018-04-11T07:09:39Z, INFO] ! ----------------------------------------------------------------------------","[2018-04-11T07:09:39Z, INFO] solve + export of all intermediate solutions done in 20.621352911 secs"]},"runtimeDetails":{"state":"STARTED"},"taskSetupMillis":473,"taskSolveMillis":22354,"taskTearDownMillis":0,"jobUri":"http://dods-processor-server-1523427210415-1168-svc/dd-execution/api/v1/solve/job.fa01539e-cbf8-4062-9ecb-42cc5d4b3b1e"} -------------------------------------------------------------------------------- /decision-optimization/TechnicianDispatching/.scenarios/Scenario 1/scenario.json: -------------------------------------------------------------------------------- 1 | {"qualifiers":[{"name":"modelType","value":"cognitive"},{"name":"modelMetadata","value":"null"}],"parentId":"TechnicianDispatching","category":"scenario","creator":"alain","createdAt":1523427273497,"usage":{"lastModificationTime":1523430580052,"lastModifier":"alain"},"dataUsagePerCategory":{"input":{"lastModificationTime":1523427283310,"lastModifier":"alain"},"CO_ASSET_SESSION":{"lastModificationTime":1523430552097,"lastModifier":"alain"},"output":{"lastModificationTime":1523430579888,"lastModifier":"alain"},"model":{"lastModificationTime":1523430556043,"lastModifier":"alain"},"CO_ASSET":{"lastModificationTime":1523430580052,"lastModifier":"alain"}},"state":"available","tables":[{"tableType":{"columns":[{"key":"id","dataType":"String"},{"key":"duration","dataType":"Number"},{"key":"required skill","dataType":"String"},{"key":"location","dataType":"String"},{"key":"technician","dataType":"String"},{"key":"type","dataType":"String"},{"key":"unperformed cost","dataType":"Number"},{"key":"Start date","dataType":"String"},{"key":"time1","dataType":"String"},{"key":"time2","dataType":"String"},{"key":"\"begins after \"","dataType":"String"},{"key":"\"finishes before \"","dataType":"String"},{"key":"step1","dataType":"Number"},{"key":"step2","dataType":"Number"}]},"name":"operation","category":"input","lineage":"Copied from operation.csv","numberOfRows":158,"creator":"alain","createdAt":1523427282533,"lastUpdater":"alain","updatedAt":1523427283034,"path":"../../../../datasets/operation.csv"},{"tableType":{"columns":[{"key":"id","dataType":"String"},{"key":"value","dataType":"Number"},{"key":"date value","dataType":"String"}]},"name":"parameterLine","category":"input","lineage":"Copied from parameterLine.csv","numberOfRows":2,"creator":"alain","createdAt":1523427282564,"lastUpdater":"alain","updatedAt":1523427282950,"path":"../../../../datasets/parameterLine.csv"},{"tableType":{"columns":[{"key":"id","dataType":"String"}]},"name":"location","category":"input","lineage":"Copied from location.csv","numberOfRows":119,"creator":"alain","createdAt":1523427282581,"lastUpdater":"alain","updatedAt":1523427282996,"path":"../../../../datasets/location.csv"},{"tableType":{"columns":[{"key":"id","dataType":"String"}]},"name":"skill","category":"input","lineage":"Copied from skill.csv","numberOfRows":4,"creator":"alain","createdAt":1523427282603,"lastUpdater":"alain","updatedAt":1523427282968,"path":"../../../../datasets/skill.csv"},{"tableType":{"columns":[{"key":"from","dataType":"String"},{"key":"to","dataType":"String"},{"key":"distance","dataType":"Number"}]},"name":"distance","category":"input","lineage":"Copied from distance.csv","numberOfRows":14161,"creator":"alain","createdAt":1523427282703,"lastUpdater":"alain","updatedAt":1523427283118,"path":"../../../../datasets/distance.csv"},{"tableType":{"columns":[{"key":"Id","dataType":"String"},{"key":"Skill","dataType":"String"}]},"name":"technician","category":"input","lineage":"Copied from technician.csv","numberOfRows":20,"creator":"alain","createdAt":1523427282856,"lastUpdater":"alain","updatedAt":1523427283064,"path":"../../../../datasets/technician.csv"},{"tableType":{"columns":[{"key":"from","dataType":"String"},{"key":"to","dataType":"String"},{"key":"time","dataType":"Number"}]},"name":"travel_time","category":"input","lineage":"Copied from travel time.csv","numberOfRows":14161,"creator":"alain","createdAt":1523427283171,"lastUpdater":"alain","updatedAt":1523427283310,"path":"../../../../datasets/travel time.csv"},{"tableType":{"columns":[{"key":"NAME","dataType":"String"},{"key":"VALUE","dataType":"Number"}]},"name":"kpis","category":"output","numberOfRows":1,"creator":"alain","createdAt":1523430578632,"lastUpdater":"alain","updatedAt":1523430578632,"path":"kpis.csv"},{"tableType":{"columns":[{"key":"id_of_Operation","dataType":"String"},{"key":"id_of_Technician","dataType":"String"},{"key":"schedulingAssignmentVar","dataType":"Number"},{"key":"taskAssignmentDurationVar","dataType":"Number"}]},"name":"list_of_SchedulingAssignment_solution","category":"output","numberOfRows":158,"creator":"alain","createdAt":1523430578736,"lastUpdater":"alain","updatedAt":1523430578736,"path":"list_of_SchedulingAssignment_solution.csv"},{"tableType":{"columns":[{"key":"id_of_Operation","dataType":"String"},{"key":"taskStartVar","dataType":"Number"},{"key":"taskEndVar","dataType":"Number"},{"key":"taskDurationVar","dataType":"Number"},{"key":"taskStartVarDate","dataType":"String"},{"key":"taskEndVarDate","dataType":"String"},{"key":"taskAbsenceVar","dataType":"Number"},{"key":"taskPresenceVar","dataType":"Number"}]},"name":"list_of_Operation_solution","category":"output","numberOfRows":158,"creator":"alain","createdAt":1523430578810,"lastUpdater":"alain","updatedAt":1523430578810,"path":"list_of_Operation_solution.csv"},{"tableType":{"columns":[{"key":"operation id","dataType":"String"},{"key":"technician Id","dataType":"String"},{"key":"operation duration","dataType":"Number"},{"key":"operation Start date","dataType":"String"},{"key":"operation step1","dataType":"Number"},{"key":"operation step2","dataType":"Number"},{"key":"operation time1","dataType":"String"},{"key":"operation time2","dataType":"String"},{"key":"operation unperformed cost","dataType":"Number"},{"key":"operation begins after id","dataType":"String"},{"key":"operation finishes before id","dataType":"String"},{"key":"operation location id","dataType":"String"},{"key":"operation required skill id","dataType":"String"},{"key":"operation technician Id","dataType":"String"},{"key":"operation type id","dataType":"String"},{"key":"technician Skill id","dataType":"String"},{"key":"scheduled start","dataType":"String"},{"key":"scheduled duration","dataType":"Number"},{"key":"scheduled end","dataType":"String"},{"key":"Next","dataType":"String"},{"key":"Sequence index","dataType":"Number"}]},"name":"Technician_to_operation_assignments_report","category":"output","numberOfRows":158,"creator":"alain","createdAt":1523430579888,"lastUpdater":"alain","updatedAt":1523430579888,"path":"Technician_to_operation_assignments_report.csv"}],"assets":[{"name":"CO_SESSION.json","category":"CO_ASSET_SESSION","creator":"alain","createdAt":1523427304590,"lastUpdater":"alain","updatedAt":1523430552097,"contentType":"application/json; charset=utf-8","path":"CO_SESSION.json"},{"name":"model.py","category":"model","creator":"alain","createdAt":1523427395931,"lastUpdater":"alain","updatedAt":1523430556043,"contentType":"application/json; charset=utf-8","path":"model.py"},{"name":"CO_SOLVE_STATUS.json","category":"CO_ASSET","creator":"alain","createdAt":1523430559356,"lastUpdater":"alain","updatedAt":1523430579786,"contentType":"application/json; charset=utf-8","path":"CO_SOLVE_STATUS.json"},{"name":"log.txt","category":"output","creator":"alain","createdAt":1523430578872,"lastUpdater":"alain","updatedAt":1523430578872,"path":"log.txt"},{"name":"CO_SOLUTION_TEXT.json","category":"CO_ASSET","creator":"alain","createdAt":1523430579687,"lastUpdater":"alain","updatedAt":1523430579687,"contentType":"application/json; charset=utf-8","path":"CO_SOLUTION_TEXT.json"},{"name":"CO_SOLUTION_JSON.json","category":"CO_ASSET","creator":"alain","createdAt":1523430580052,"lastUpdater":"alain","updatedAt":1523430580052,"contentType":"application/json; charset=utf-8","path":"CO_SOLUTION_JSON.json"}]} -------------------------------------------------------------------------------- /decision-optimization/TechnicianDispatching/.scenarios/Scenario 1/list_of_Operation_solution.csv: -------------------------------------------------------------------------------- 1 | O1001,0.0,5.0,5.0,2018-04-11 00:00:00,2018-04-11 00:05:00,0,1 2 | O1002,0.0,5.0,5.0,2018-04-11 00:00:00,2018-04-11 00:05:00,0,1 3 | O1003,0.0,5.0,5.0,2018-04-11 00:00:00,2018-04-11 00:05:00,0,1 4 | O1004,0.0,5.0,5.0,2018-04-11 00:00:00,2018-04-11 00:05:00,0,1 5 | O1005,0.0,5.0,5.0,2018-04-11 00:00:00,2018-04-11 00:05:00,0,1 6 | O1006,0.0,5.0,5.0,2018-04-11 00:00:00,2018-04-11 00:05:00,0,1 7 | O1007,0.0,5.0,5.0,2018-04-11 00:00:00,2018-04-11 00:05:00,0,1 8 | O1008,0.0,5.0,5.0,2018-04-11 00:00:00,2018-04-11 00:05:00,0,1 9 | O1009,0.0,5.0,5.0,2018-04-11 00:00:00,2018-04-11 00:05:00,0,1 10 | O1010,0.0,5.0,5.0,2018-04-11 00:00:00,2018-04-11 00:05:00,0,1 11 | O1011,0.0,5.0,5.0,2018-04-11 00:00:00,2018-04-11 00:05:00,0,1 12 | O1012,0.0,5.0,5.0,2018-04-11 00:00:00,2018-04-11 00:05:00,0,1 13 | O1013,0.0,5.0,5.0,2018-04-11 00:00:00,2018-04-11 00:05:00,0,1 14 | O1014,0.0,5.0,5.0,2018-04-11 00:00:00,2018-04-11 00:05:00,0,1 15 | O1015,0.0,5.0,5.0,2018-04-11 00:00:00,2018-04-11 00:05:00,0,1 16 | O1016,0.0,5.0,5.0,2018-04-11 00:00:00,2018-04-11 00:05:00,0,1 17 | O1017,0.0,5.0,5.0,2018-04-11 00:00:00,2018-04-11 00:05:00,0,1 18 | O1018,0.0,5.0,5.0,2018-04-11 00:00:00,2018-04-11 00:05:00,0,1 19 | O1019,0.0,5.0,5.0,2018-04-11 00:00:00,2018-04-11 00:05:00,0,1 20 | O102,25.0,35.0,10.0,2018-04-11 00:25:00,2018-04-11 00:35:00,0,1 21 | O1020,0.0,5.0,5.0,2018-04-11 00:00:00,2018-04-11 00:05:00,0,1 22 | O103,47.0,55.0,8.0,2018-04-11 00:47:00,2018-04-11 00:55:00,0,1 23 | O106,61.0,69.0,8.0,2018-04-11 01:01:00,2018-04-11 01:09:00,0,1 24 | O113,89.0,99.0,10.0,2018-04-11 01:29:00,2018-04-11 01:39:00,0,1 25 | O116,5.0,35.0,30.0,2018-04-11 00:05:00,2018-04-11 00:35:00,0,1 26 | O122,5.0,15.0,10.0,2018-04-11 00:05:00,2018-04-11 00:15:00,0,1 27 | O128,5.0,20.0,15.0,2018-04-11 00:05:00,2018-04-11 00:20:00,0,1 28 | O134,40.0,52.0,12.0,2018-04-11 00:40:00,2018-04-11 00:52:00,0,1 29 | O135,46.0,61.0,15.0,2018-04-11 00:46:00,2018-04-11 01:01:00,0,1 30 | O138,76.0,98.0,22.0,2018-04-11 01:16:00,2018-04-11 01:38:00,0,1 31 | O139,13.0,103.0,90.0,2018-04-11 00:13:00,2018-04-11 01:43:00,0,1 32 | O141,5.0,15.0,10.0,2018-04-11 00:05:00,2018-04-11 00:15:00,0,1 33 | O145,32.0,40.0,8.0,2018-04-11 00:32:00,2018-04-11 00:40:00,0,1 34 | O146,50.0,62.0,12.0,2018-04-11 00:50:00,2018-04-11 01:02:00,0,1 35 | O147,81.0,103.0,22.0,2018-04-11 01:21:00,2018-04-11 01:43:00,0,1 36 | O150,74.0,89.0,15.0,2018-04-11 01:14:00,2018-04-11 01:29:00,0,1 37 | O151,15.0,27.0,12.0,2018-04-11 00:15:00,2018-04-11 00:27:00,0,1 38 | O153,67.0,78.0,11.0,2018-04-11 01:07:00,2018-04-11 01:18:00,0,1 39 | O154,75.0,86.0,11.0,2018-04-11 01:15:00,2018-04-11 01:26:00,0,1 40 | O155,52.0,72.0,20.0,2018-04-11 00:52:00,2018-04-11 01:12:00,0,1 41 | O156,65.0,76.0,11.0,2018-04-11 01:05:00,2018-04-11 01:16:00,0,1 42 | O157,35.0,46.0,11.0,2018-04-11 00:35:00,2018-04-11 00:46:00,0,1 43 | O159,17.0,27.0,10.0,2018-04-11 00:17:00,2018-04-11 00:27:00,0,1 44 | O162,5.0,17.0,12.0,2018-04-11 00:05:00,2018-04-11 00:17:00,0,1 45 | O168,35.0,50.0,15.0,2018-04-11 00:35:00,2018-04-11 00:50:00,0,1 46 | O171,27.0,39.0,12.0,2018-04-11 00:27:00,2018-04-11 00:39:00,0,1 47 | O173,30.0,75.0,45.0,2018-04-11 00:30:00,2018-04-11 01:15:00,0,1 48 | O178,15.0,35.0,20.0,2018-04-11 00:15:00,2018-04-11 00:35:00,0,1 49 | O179,27.0,47.0,20.0,2018-04-11 00:27:00,2018-04-11 00:47:00,0,1 50 | O18,87.0,99.0,12.0,2018-04-11 01:27:00,2018-04-11 01:39:00,0,1 51 | O185,35.0,45.0,10.0,2018-04-11 00:35:00,2018-04-11 00:45:00,0,1 52 | O186,5.0,15.0,10.0,2018-04-11 00:05:00,2018-04-11 00:15:00,0,1 53 | O191,37.0,57.0,20.0,2018-04-11 00:37:00,2018-04-11 00:57:00,0,1 54 | O2001,99.0,104.0,5.0,2018-04-11 01:39:00,2018-04-11 01:44:00,0,1 55 | O2002,99.0,104.0,5.0,2018-04-11 01:39:00,2018-04-11 01:44:00,0,1 56 | O2003,101.0,106.0,5.0,2018-04-11 01:41:00,2018-04-11 01:46:00,0,1 57 | O2004,103.0,108.0,5.0,2018-04-11 01:43:00,2018-04-11 01:48:00,0,1 58 | O2005,102.0,107.0,5.0,2018-04-11 01:42:00,2018-04-11 01:47:00,0,1 59 | O2006,95.0,100.0,5.0,2018-04-11 01:35:00,2018-04-11 01:40:00,0,1 60 | O2007,102.0,107.0,5.0,2018-04-11 01:42:00,2018-04-11 01:47:00,0,1 61 | O2008,92.0,97.0,5.0,2018-04-11 01:32:00,2018-04-11 01:37:00,0,1 62 | O2009,95.0,100.0,5.0,2018-04-11 01:35:00,2018-04-11 01:40:00,0,1 63 | O2010,103.0,108.0,5.0,2018-04-11 01:43:00,2018-04-11 01:48:00,0,1 64 | O2011,98.0,103.0,5.0,2018-04-11 01:38:00,2018-04-11 01:43:00,0,1 65 | O2012,99.0,104.0,5.0,2018-04-11 01:39:00,2018-04-11 01:44:00,0,1 66 | O2013,103.0,108.0,5.0,2018-04-11 01:43:00,2018-04-11 01:48:00,0,1 67 | O2014,100.0,105.0,5.0,2018-04-11 01:40:00,2018-04-11 01:45:00,0,1 68 | O2015,102.0,107.0,5.0,2018-04-11 01:42:00,2018-04-11 01:47:00,0,1 69 | O2016,100.0,105.0,5.0,2018-04-11 01:40:00,2018-04-11 01:45:00,0,1 70 | O2017,98.0,103.0,5.0,2018-04-11 01:38:00,2018-04-11 01:43:00,0,1 71 | O2018,103.0,108.0,5.0,2018-04-11 01:43:00,2018-04-11 01:48:00,0,1 72 | O2019,103.0,108.0,5.0,2018-04-11 01:43:00,2018-04-11 01:48:00,0,1 73 | O2020,99.0,104.0,5.0,2018-04-11 01:39:00,2018-04-11 01:44:00,0,1 74 | O203,37.0,49.0,12.0,2018-04-11 00:37:00,2018-04-11 00:49:00,0,1 75 | O206,57.0,87.0,30.0,2018-04-11 00:57:00,2018-04-11 01:27:00,0,1 76 | O213,60.0,72.0,12.0,2018-04-11 01:00:00,2018-04-11 01:12:00,0,1 77 | O222,5.0,15.0,10.0,2018-04-11 00:05:00,2018-04-11 00:15:00,0,1 78 | O227,5.0,17.0,12.0,2018-04-11 00:05:00,2018-04-11 00:17:00,0,1 79 | O229,58.0,88.0,30.0,2018-04-11 00:58:00,2018-04-11 01:28:00,0,1 80 | O231,77.0,102.0,25.0,2018-04-11 01:17:00,2018-04-11 01:42:00,0,1 81 | O246,83.0,95.0,12.0,2018-04-11 01:23:00,2018-04-11 01:35:00,0,1 82 | O247,47.0,59.0,12.0,2018-04-11 00:47:00,2018-04-11 00:59:00,0,1 83 | O249,32.0,44.0,12.0,2018-04-11 00:32:00,2018-04-11 00:44:00,0,1 84 | O252,20.0,32.0,12.0,2018-04-11 00:20:00,2018-04-11 00:32:00,0,1 85 | O26,5.0,15.0,10.0,2018-04-11 00:05:00,2018-04-11 00:15:00,0,1 86 | O262,88.0,100.0,12.0,2018-04-11 01:28:00,2018-04-11 01:40:00,0,1 87 | O271,25.0,45.0,20.0,2018-04-11 00:25:00,2018-04-11 00:45:00,0,1 88 | O273,79.0,99.0,20.0,2018-04-11 01:19:00,2018-04-11 01:39:00,0,1 89 | O274,70.0,85.0,15.0,2018-04-11 01:10:00,2018-04-11 01:25:00,0,1 90 | O292,44.0,69.0,25.0,2018-04-11 00:44:00,2018-04-11 01:09:00,0,1 91 | O299,5.0,17.0,12.0,2018-04-11 00:05:00,2018-04-11 00:17:00,0,1 92 | O309,37.0,45.0,8.0,2018-04-11 00:37:00,2018-04-11 00:45:00,0,1 93 | O310,55.0,67.0,12.0,2018-04-11 00:55:00,2018-04-11 01:07:00,0,1 94 | O313,25.0,37.0,12.0,2018-04-11 00:25:00,2018-04-11 00:37:00,0,1 95 | O315,32.0,44.0,12.0,2018-04-11 00:32:00,2018-04-11 00:44:00,0,1 96 | O321,45.0,60.0,15.0,2018-04-11 00:45:00,2018-04-11 01:00:00,0,1 97 | O323,49.0,61.0,12.0,2018-04-11 00:49:00,2018-04-11 01:01:00,0,1 98 | O328,5.0,17.0,12.0,2018-04-11 00:05:00,2018-04-11 00:17:00,0,1 99 | O33,74.0,82.0,8.0,2018-04-11 01:14:00,2018-04-11 01:22:00,0,1 100 | O333,49.0,64.0,15.0,2018-04-11 00:49:00,2018-04-11 01:04:00,0,1 101 | O334,5.0,17.0,12.0,2018-04-11 00:05:00,2018-04-11 00:17:00,0,1 102 | O336,89.0,101.0,12.0,2018-04-11 01:29:00,2018-04-11 01:41:00,0,1 103 | O338,72.0,87.0,15.0,2018-04-11 01:12:00,2018-04-11 01:27:00,0,1 104 | O349,32.0,47.0,15.0,2018-04-11 00:32:00,2018-04-11 00:47:00,0,1 105 | O355,37.0,49.0,12.0,2018-04-11 00:37:00,2018-04-11 00:49:00,0,1 106 | O36,80.0,92.0,12.0,2018-04-11 01:20:00,2018-04-11 01:32:00,0,1 107 | O361,57.0,79.0,22.0,2018-04-11 00:57:00,2018-04-11 01:19:00,0,1 108 | O365,5.0,27.0,22.0,2018-04-11 00:05:00,2018-04-11 00:27:00,0,1 109 | O370,17.0,29.0,12.0,2018-04-11 00:17:00,2018-04-11 00:29:00,0,1 110 | O371,5.0,20.0,15.0,2018-04-11 00:05:00,2018-04-11 00:20:00,0,1 111 | O375,5.0,17.0,12.0,2018-04-11 00:05:00,2018-04-11 00:17:00,0,1 112 | O38,58.0,73.0,15.0,2018-04-11 00:58:00,2018-04-11 01:13:00,0,1 113 | O382,29.0,37.0,8.0,2018-04-11 00:29:00,2018-04-11 00:37:00,0,1 114 | O385,17.0,37.0,20.0,2018-04-11 00:17:00,2018-04-11 00:37:00,0,1 115 | O387,17.0,25.0,8.0,2018-04-11 00:17:00,2018-04-11 00:25:00,0,1 116 | O392,20.0,32.0,12.0,2018-04-11 00:20:00,2018-04-11 00:32:00,0,1 117 | O393,50.0,58.0,8.0,2018-04-11 00:50:00,2018-04-11 00:58:00,0,1 118 | O402,82.0,102.0,20.0,2018-04-11 01:22:00,2018-04-11 01:42:00,0,1 119 | O408,69.0,77.0,8.0,2018-04-11 01:09:00,2018-04-11 01:17:00,0,1 120 | O411,50.0,58.0,8.0,2018-04-11 00:50:00,2018-04-11 00:58:00,0,1 121 | O412,15.0,37.0,22.0,2018-04-11 00:15:00,2018-04-11 00:37:00,0,1 122 | O418,69.0,89.0,20.0,2018-04-11 01:09:00,2018-04-11 01:29:00,0,1 123 | O423,64.0,79.0,15.0,2018-04-11 01:04:00,2018-04-11 01:19:00,0,1 124 | O430,5.0,17.0,12.0,2018-04-11 00:05:00,2018-04-11 00:17:00,0,1 125 | O431,15.0,35.0,20.0,2018-04-11 00:15:00,2018-04-11 00:35:00,0,1 126 | O437,86.0,98.0,12.0,2018-04-11 01:26:00,2018-04-11 01:38:00,0,1 127 | O444,17.0,32.0,15.0,2018-04-11 00:17:00,2018-04-11 00:32:00,0,1 128 | O445,5.0,35.0,30.0,2018-04-11 00:05:00,2018-04-11 00:35:00,0,1 129 | O469,15.0,30.0,15.0,2018-04-11 00:15:00,2018-04-11 00:30:00,0,1 130 | O483,5.0,13.0,8.0,2018-04-11 00:05:00,2018-04-11 00:13:00,0,1 131 | O493,73.0,103.0,30.0,2018-04-11 01:13:00,2018-04-11 01:43:00,0,1 132 | O495,45.0,53.0,8.0,2018-04-11 00:45:00,2018-04-11 00:53:00,0,1 133 | O496,17.0,32.0,15.0,2018-04-11 00:17:00,2018-04-11 00:32:00,0,1 134 | O511,5.0,25.0,20.0,2018-04-11 00:05:00,2018-04-11 00:25:00,0,1 135 | O527,62.0,74.0,12.0,2018-04-11 01:02:00,2018-04-11 01:14:00,0,1 136 | O529,85.0,100.0,15.0,2018-04-11 01:25:00,2018-04-11 01:40:00,0,1 137 | O530,56.0,71.0,15.0,2018-04-11 00:56:00,2018-04-11 01:11:00,0,1 138 | O540,35.0,50.0,15.0,2018-04-11 00:35:00,2018-04-11 00:50:00,0,1 139 | O543,59.0,74.0,15.0,2018-04-11 00:59:00,2018-04-11 01:14:00,0,1 140 | O554,47.0,69.0,22.0,2018-04-11 00:47:00,2018-04-11 01:09:00,0,1 141 | O556,71.0,83.0,12.0,2018-04-11 01:11:00,2018-04-11 01:23:00,0,1 142 | O560,13.0,103.0,90.0,2018-04-11 00:13:00,2018-04-11 01:43:00,0,1 143 | O57,44.0,56.0,12.0,2018-04-11 00:44:00,2018-04-11 00:56:00,0,1 144 | O62,35.0,50.0,15.0,2018-04-11 00:35:00,2018-04-11 00:50:00,0,1 145 | O63,53.0,65.0,12.0,2018-04-11 00:53:00,2018-04-11 01:05:00,0,1 146 | O7,79.0,99.0,20.0,2018-04-11 01:19:00,2018-04-11 01:39:00,0,1 147 | O70,27.0,57.0,30.0,2018-04-11 00:27:00,2018-04-11 00:57:00,0,1 148 | O75,72.0,102.0,30.0,2018-04-11 01:12:00,2018-04-11 01:42:00,0,1 149 | O76,17.0,25.0,8.0,2018-04-11 00:17:00,2018-04-11 00:25:00,0,1 150 | O77,60.0,70.0,10.0,2018-04-11 01:00:00,2018-04-11 01:10:00,0,1 151 | O78,69.0,80.0,11.0,2018-04-11 01:09:00,2018-04-11 01:20:00,0,1 152 | O79,87.0,95.0,8.0,2018-04-11 01:27:00,2018-04-11 01:35:00,0,1 153 | O80,39.0,47.0,8.0,2018-04-11 00:39:00,2018-04-11 00:47:00,0,1 154 | O81,61.0,69.0,8.0,2018-04-11 01:01:00,2018-04-11 01:09:00,0,1 155 | O82,5.0,13.0,8.0,2018-04-11 00:05:00,2018-04-11 00:13:00,0,1 156 | O91,78.0,103.0,25.0,2018-04-11 01:18:00,2018-04-11 01:43:00,0,1 157 | O93,45.0,60.0,15.0,2018-04-11 00:45:00,2018-04-11 01:00:00,0,1 158 | O99,69.0,81.0,12.0,2018-04-11 01:09:00,2018-04-11 01:21:00,0,1 159 | -------------------------------------------------------------------------------- /decision-optimization/TechnicianDispatching/.scenarios/Scenario 1/CO_SOLUTION_TEXT.json: -------------------------------------------------------------------------------- 1 | {"text":"Solution by resource :\nTasks for Tech20 :\n (1) O1020, start=11-Apr-18 00:00 duration=5.0mn end=11-Apr-18 00:05 <0.0,5.0>\n (2) O299, start=11-Apr-18 00:05 duration=12.0mn end=11-Apr-18 00:17 <5.0,17.0>\n (3) O496, start=11-Apr-18 00:17 duration=15.0mn end=11-Apr-18 00:32 <17.0,32.0>\n (4) O145, start=11-Apr-18 00:32 duration=8.0mn end=11-Apr-18 00:40 <32.0,40.0>\n (5) O134, start=11-Apr-18 00:40 duration=12.0mn end=11-Apr-18 00:52 <40.0,52.0>\n (6) O155, start=11-Apr-18 00:52 duration=20.0mn end=11-Apr-18 01:12 <52.0,72.0>\n (7) O338, start=11-Apr-18 01:12 duration=15.0mn end=11-Apr-18 01:27 <72.0,87.0>\n (8) O18, start=11-Apr-18 01:27 duration=12.0mn end=11-Apr-18 01:39 <87.0,99.0>\n (9) O2020, start=11-Apr-18 01:39 duration=5.0mn end=11-Apr-18 01:44 <99.0,104.0>\nTasks for Tech10 :\n (10) O1010, start=11-Apr-18 00:00 duration=5.0mn end=11-Apr-18 00:05 <0.0,5.0>\n (11) O116, start=11-Apr-18 00:05 duration=30.0mn end=11-Apr-18 00:35 <5.0,35.0>\n (12) O168, start=11-Apr-18 00:35 duration=15.0mn end=11-Apr-18 00:50 <35.0,50.0>\n (13) O393, start=11-Apr-18 00:50 duration=8.0mn end=11-Apr-18 00:58 <50.0,58.0>\n (14) O38, start=11-Apr-18 00:58 duration=15.0mn end=11-Apr-18 01:13 <58.0,73.0>\n (15) O493, start=11-Apr-18 01:13 duration=30.0mn end=11-Apr-18 01:43 <73.0,103.0>\n (16) O2010, start=11-Apr-18 01:43 duration=5.0mn end=11-Apr-18 01:48 <103.0,108.0>\nTasks for Tech11 :\n (17) O1011, start=11-Apr-18 00:00 duration=5.0mn end=11-Apr-18 00:05 <0.0,5.0>\n (18) O26, start=11-Apr-18 00:05 duration=10.0mn end=11-Apr-18 00:15 <5.0,15.0>\n (19) O469, start=11-Apr-18 00:15 duration=15.0mn end=11-Apr-18 00:30 <15.0,30.0>\n (20) O173, start=11-Apr-18 00:30 duration=45.0mn end=11-Apr-18 01:15 <30.0,75.0>\n (21) O154, start=11-Apr-18 01:15 duration=11.0mn end=11-Apr-18 01:26 <75.0,86.0>\n (22) O437, start=11-Apr-18 01:26 duration=12.0mn end=11-Apr-18 01:38 <86.0,98.0>\n (23) O2011, start=11-Apr-18 01:38 duration=5.0mn end=11-Apr-18 01:43 <98.0,103.0>\nTasks for Tech12 :\n (24) O1012, start=11-Apr-18 00:00 duration=5.0mn end=11-Apr-18 00:05 <0.0,5.0>\n (25) O227, start=11-Apr-18 00:05 duration=12.0mn end=11-Apr-18 00:17 <5.0,17.0>\n (26) O387, start=11-Apr-18 00:17 duration=8.0mn end=11-Apr-18 00:25 <17.0,25.0>\n (27) O313, start=11-Apr-18 00:25 duration=12.0mn end=11-Apr-18 00:37 <25.0,37.0>\n (28) O355, start=11-Apr-18 00:37 duration=12.0mn end=11-Apr-18 00:49 <37.0,49.0>\n (29) O333, start=11-Apr-18 00:49 duration=15.0mn end=11-Apr-18 01:04 <49.0,64.0>\n (30) O423, start=11-Apr-18 01:04 duration=15.0mn end=11-Apr-18 01:19 <64.0,79.0>\n (31) O7, start=11-Apr-18 01:19 duration=20.0mn end=11-Apr-18 01:39 <79.0,99.0>\n (32) O2012, start=11-Apr-18 01:39 duration=5.0mn end=11-Apr-18 01:44 <99.0,104.0>\nTasks for Tech17 :\n (33) O1017, start=11-Apr-18 00:00 duration=5.0mn end=11-Apr-18 00:05 <0.0,5.0>\n (34) O122, start=11-Apr-18 00:05 duration=10.0mn end=11-Apr-18 00:15 <5.0,15.0>\n (35) O178, start=11-Apr-18 00:15 duration=20.0mn end=11-Apr-18 00:35 <15.0,35.0>\n (36) O185, start=11-Apr-18 00:35 duration=10.0mn end=11-Apr-18 00:45 <35.0,45.0>\n (37) O495, start=11-Apr-18 00:45 duration=8.0mn end=11-Apr-18 00:53 <45.0,53.0>\n (38) O63, start=11-Apr-18 00:53 duration=12.0mn end=11-Apr-18 01:05 <53.0,65.0>\n (39) O156, start=11-Apr-18 01:05 duration=11.0mn end=11-Apr-18 01:16 <65.0,76.0>\n (40) O138, start=11-Apr-18 01:16 duration=22.0mn end=11-Apr-18 01:38 <76.0,98.0>\n (41) O2017, start=11-Apr-18 01:38 duration=5.0mn end=11-Apr-18 01:43 <98.0,103.0>\nTasks for Tech18 :\n (42) O1018, start=11-Apr-18 00:00 duration=5.0mn end=11-Apr-18 00:05 <0.0,5.0>\n (43) O365, start=11-Apr-18 00:05 duration=22.0mn end=11-Apr-18 00:27 <5.0,27.0>\n (44) O179, start=11-Apr-18 00:27 duration=20.0mn end=11-Apr-18 00:47 <27.0,47.0>\n (45) O103, start=11-Apr-18 00:47 duration=8.0mn end=11-Apr-18 00:55 <47.0,55.0>\n (46) O310, start=11-Apr-18 00:55 duration=12.0mn end=11-Apr-18 01:07 <55.0,67.0>\n (47) O153, start=11-Apr-18 01:07 duration=11.0mn end=11-Apr-18 01:18 <67.0,78.0>\n (48) O91, start=11-Apr-18 01:18 duration=25.0mn end=11-Apr-18 01:43 <78.0,103.0>\n (49) O2018, start=11-Apr-18 01:43 duration=5.0mn end=11-Apr-18 01:48 <103.0,108.0>\nTasks for Tech19 :\n (50) O1019, start=11-Apr-18 00:00 duration=5.0mn end=11-Apr-18 00:05 <0.0,5.0>\n (51) O483, start=11-Apr-18 00:05 duration=8.0mn end=11-Apr-18 00:13 <5.0,13.0>\n (52) O560, start=11-Apr-18 00:13 duration=90.0mn end=11-Apr-18 01:43 <13.0,103.0>\n (53) O2019, start=11-Apr-18 01:43 duration=5.0mn end=11-Apr-18 01:48 <103.0,108.0>\nTasks for Tech13 :\n (54) O1013, start=11-Apr-18 00:00 duration=5.0mn end=11-Apr-18 00:05 <0.0,5.0>\n (55) O371, start=11-Apr-18 00:05 duration=15.0mn end=11-Apr-18 00:20 <5.0,20.0>\n (56) O392, start=11-Apr-18 00:20 duration=12.0mn end=11-Apr-18 00:32 <20.0,32.0>\n (57) O349, start=11-Apr-18 00:32 duration=15.0mn end=11-Apr-18 00:47 <32.0,47.0>\n (58) O554, start=11-Apr-18 00:47 duration=22.0mn end=11-Apr-18 01:09 <47.0,69.0>\n (59) O99, start=11-Apr-18 01:09 duration=12.0mn end=11-Apr-18 01:21 <69.0,81.0>\n (60) O147, start=11-Apr-18 01:21 duration=22.0mn end=11-Apr-18 01:43 <81.0,103.0>\n (61) O2013, start=11-Apr-18 01:43 duration=5.0mn end=11-Apr-18 01:48 <103.0,108.0>\nTasks for Tech9 :\n (62) O1009, start=11-Apr-18 00:00 duration=5.0mn end=11-Apr-18 00:05 <0.0,5.0>\n (63) O328, start=11-Apr-18 00:05 duration=12.0mn end=11-Apr-18 00:17 <5.0,17.0>\n (64) O444, start=11-Apr-18 00:17 duration=15.0mn end=11-Apr-18 00:32 <17.0,32.0>\n (65) O315, start=11-Apr-18 00:32 duration=12.0mn end=11-Apr-18 00:44 <32.0,44.0>\n (66) O57, start=11-Apr-18 00:44 duration=12.0mn end=11-Apr-18 00:56 <44.0,56.0>\n (67) O530, start=11-Apr-18 00:56 duration=15.0mn end=11-Apr-18 01:11 <56.0,71.0>\n (68) O556, start=11-Apr-18 01:11 duration=12.0mn end=11-Apr-18 01:23 <71.0,83.0>\n (69) O246, start=11-Apr-18 01:23 duration=12.0mn end=11-Apr-18 01:35 <83.0,95.0>\n (70) O2009, start=11-Apr-18 01:35 duration=5.0mn end=11-Apr-18 01:40 <95.0,100.0>\nTasks for Tech14 :\n (71) O1014, start=11-Apr-18 00:00 duration=5.0mn end=11-Apr-18 00:05 <0.0,5.0>\n (72) O511, start=11-Apr-18 00:05 duration=20.0mn end=11-Apr-18 00:25 <5.0,25.0>\n (73) O102, start=11-Apr-18 00:25 duration=10.0mn end=11-Apr-18 00:35 <25.0,35.0>\n (74) O62, start=11-Apr-18 00:35 duration=15.0mn end=11-Apr-18 00:50 <35.0,50.0>\n (75) O411, start=11-Apr-18 00:50 duration=8.0mn end=11-Apr-18 00:58 <50.0,58.0>\n (76) O229, start=11-Apr-18 00:58 duration=30.0mn end=11-Apr-18 01:28 <58.0,88.0>\n (77) O262, start=11-Apr-18 01:28 duration=12.0mn end=11-Apr-18 01:40 <88.0,100.0>\n (78) O2014, start=11-Apr-18 01:40 duration=5.0mn end=11-Apr-18 01:45 <100.0,105.0>\nTasks for Tech8 :\n (79) O1008, start=11-Apr-18 00:00 duration=5.0mn end=11-Apr-18 00:05 <0.0,5.0>\n (80) O334, start=11-Apr-18 00:05 duration=12.0mn end=11-Apr-18 00:17 <5.0,17.0>\n (81) O385, start=11-Apr-18 00:17 duration=20.0mn end=11-Apr-18 00:37 <17.0,37.0>\n (82) O203, start=11-Apr-18 00:37 duration=12.0mn end=11-Apr-18 00:49 <37.0,49.0>\n (83) O323, start=11-Apr-18 00:49 duration=12.0mn end=11-Apr-18 01:01 <49.0,61.0>\n (84) O106, start=11-Apr-18 01:01 duration=8.0mn end=11-Apr-18 01:09 <61.0,69.0>\n (85) O78, start=11-Apr-18 01:09 duration=11.0mn end=11-Apr-18 01:20 <69.0,80.0>\n (86) O36, start=11-Apr-18 01:20 duration=12.0mn end=11-Apr-18 01:32 <80.0,92.0>\n (87) O2008, start=11-Apr-18 01:32 duration=5.0mn end=11-Apr-18 01:37 <92.0,97.0>\nTasks for Tech7 :\n (88) O1007, start=11-Apr-18 00:00 duration=5.0mn end=11-Apr-18 00:05 <0.0,5.0>\n (89) O445, start=11-Apr-18 00:05 duration=30.0mn end=11-Apr-18 00:35 <5.0,35.0>\n (90) O157, start=11-Apr-18 00:35 duration=11.0mn end=11-Apr-18 00:46 <35.0,46.0>\n (91) O135, start=11-Apr-18 00:46 duration=15.0mn end=11-Apr-18 01:01 <46.0,61.0>\n (92) O81, start=11-Apr-18 01:01 duration=8.0mn end=11-Apr-18 01:09 <61.0,69.0>\n (93) O408, start=11-Apr-18 01:09 duration=8.0mn end=11-Apr-18 01:17 <69.0,77.0>\n (94) O231, start=11-Apr-18 01:17 duration=25.0mn end=11-Apr-18 01:42 <77.0,102.0>\n (95) O2007, start=11-Apr-18 01:42 duration=5.0mn end=11-Apr-18 01:47 <102.0,107.0>\nTasks for Tech15 :\n (96) O1015, start=11-Apr-18 00:00 duration=5.0mn end=11-Apr-18 00:05 <0.0,5.0>\n (97) O222, start=11-Apr-18 00:05 duration=10.0mn end=11-Apr-18 00:15 <5.0,15.0>\n (98) O151, start=11-Apr-18 00:15 duration=12.0mn end=11-Apr-18 00:27 <15.0,27.0>\n (99) O171, start=11-Apr-18 00:27 duration=12.0mn end=11-Apr-18 00:39 <27.0,39.0>\n (100) O80, start=11-Apr-18 00:39 duration=8.0mn end=11-Apr-18 00:47 <39.0,47.0>\n (101) O247, start=11-Apr-18 00:47 duration=12.0mn end=11-Apr-18 00:59 <47.0,59.0>\n (102) O543, start=11-Apr-18 00:59 duration=15.0mn end=11-Apr-18 01:14 <59.0,74.0>\n (103) O33, start=11-Apr-18 01:14 duration=8.0mn end=11-Apr-18 01:22 <74.0,82.0>\n (104) O402, start=11-Apr-18 01:22 duration=20.0mn end=11-Apr-18 01:42 <82.0,102.0>\n (105) O2015, start=11-Apr-18 01:42 duration=5.0mn end=11-Apr-18 01:47 <102.0,107.0>\nTasks for Tech16 :\n (106) O1016, start=11-Apr-18 00:00 duration=5.0mn end=11-Apr-18 00:05 <0.0,5.0>\n (107) O186, start=11-Apr-18 00:05 duration=10.0mn end=11-Apr-18 00:15 <5.0,15.0>\n (108) O412, start=11-Apr-18 00:15 duration=22.0mn end=11-Apr-18 00:37 <15.0,37.0>\n (109) O309, start=11-Apr-18 00:37 duration=8.0mn end=11-Apr-18 00:45 <37.0,45.0>\n (110) O321, start=11-Apr-18 00:45 duration=15.0mn end=11-Apr-18 00:00 <45.0,60.0>\n (111) O77, start=11-Apr-18 00:00 duration=10.0mn end=11-Apr-18 01:10 <60.0,70.0>\n (112) O274, start=11-Apr-18 01:10 duration=15.0mn end=11-Apr-18 01:25 <70.0,85.0>\n (113) O529, start=11-Apr-18 01:25 duration=15.0mn end=11-Apr-18 01:40 <85.0,100.0>\n (114) O2016, start=11-Apr-18 01:40 duration=5.0mn end=11-Apr-18 01:45 <100.0,105.0>\nTasks for Tech6 :\n (115) O1006, start=11-Apr-18 00:00 duration=5.0mn end=11-Apr-18 00:05 <0.0,5.0>\n (116) O162, start=11-Apr-18 00:05 duration=12.0mn end=11-Apr-18 00:17 <5.0,17.0>\n (117) O370, start=11-Apr-18 00:17 duration=12.0mn end=11-Apr-18 00:29 <17.0,29.0>\n (118) O382, start=11-Apr-18 00:29 duration=8.0mn end=11-Apr-18 00:37 <29.0,37.0>\n (119) O191, start=11-Apr-18 00:37 duration=20.0mn end=11-Apr-18 00:57 <37.0,57.0>\n (120) O206, start=11-Apr-18 00:57 duration=30.0mn end=11-Apr-18 01:27 <57.0,87.0>\n (121) O79, start=11-Apr-18 01:27 duration=8.0mn end=11-Apr-18 01:35 <87.0,95.0>\n (122) O2006, start=11-Apr-18 01:35 duration=5.0mn end=11-Apr-18 01:40 <95.0,100.0>\nTasks for Tech5 :\n (123) O1005, start=11-Apr-18 00:00 duration=5.0mn end=11-Apr-18 00:05 <0.0,5.0>\n (124) O430, start=11-Apr-18 00:05 duration=12.0mn end=11-Apr-18 00:17 <5.0,17.0>\n (125) O76, start=11-Apr-18 00:17 duration=8.0mn end=11-Apr-18 00:25 <17.0,25.0>\n (126) O271, start=11-Apr-18 00:25 duration=20.0mn end=11-Apr-18 00:45 <25.0,45.0>\n (127) O93, start=11-Apr-18 00:45 duration=15.0mn end=11-Apr-18 00:00 <45.0,60.0>\n (128) O213, start=11-Apr-18 00:00 duration=12.0mn end=11-Apr-18 01:12 <60.0,72.0>\n (129) O75, start=11-Apr-18 01:12 duration=30.0mn end=11-Apr-18 01:42 <72.0,102.0>\n (130) O2005, start=11-Apr-18 01:42 duration=5.0mn end=11-Apr-18 01:47 <102.0,107.0>\nTasks for Tech4 :\n (131) O1004, start=11-Apr-18 00:00 duration=5.0mn end=11-Apr-18 00:05 <0.0,5.0>\n (132) O82, start=11-Apr-18 00:05 duration=8.0mn end=11-Apr-18 00:13 <5.0,13.0>\n (133) O139, start=11-Apr-18 00:13 duration=90.0mn end=11-Apr-18 01:43 <13.0,103.0>\n (134) O2004, start=11-Apr-18 01:43 duration=5.0mn end=11-Apr-18 01:48 <103.0,108.0>\nTasks for Tech3 :\n (135) O1003, start=11-Apr-18 00:00 duration=5.0mn end=11-Apr-18 00:05 <0.0,5.0>\n (136) O128, start=11-Apr-18 00:05 duration=15.0mn end=11-Apr-18 00:20 <5.0,20.0>\n (137) O252, start=11-Apr-18 00:20 duration=12.0mn end=11-Apr-18 00:32 <20.0,32.0>\n (138) O249, start=11-Apr-18 00:32 duration=12.0mn end=11-Apr-18 00:44 <32.0,44.0>\n (139) O292, start=11-Apr-18 00:44 duration=25.0mn end=11-Apr-18 01:09 <44.0,69.0>\n (140) O418, start=11-Apr-18 01:09 duration=20.0mn end=11-Apr-18 01:29 <69.0,89.0>\n (141) O336, start=11-Apr-18 01:29 duration=12.0mn end=11-Apr-18 01:41 <89.0,101.0>\n (142) O2003, start=11-Apr-18 01:41 duration=5.0mn end=11-Apr-18 01:46 <101.0,106.0>\nTasks for Tech2 :\n (143) O1002, start=11-Apr-18 00:00 duration=5.0mn end=11-Apr-18 00:05 <0.0,5.0>\n (144) O141, start=11-Apr-18 00:05 duration=10.0mn end=11-Apr-18 00:15 <5.0,15.0>\n (145) O431, start=11-Apr-18 00:15 duration=20.0mn end=11-Apr-18 00:35 <15.0,35.0>\n (146) O540, start=11-Apr-18 00:35 duration=15.0mn end=11-Apr-18 00:50 <35.0,50.0>\n (147) O146, start=11-Apr-18 00:50 duration=12.0mn end=11-Apr-18 01:02 <50.0,62.0>\n (148) O527, start=11-Apr-18 01:02 duration=12.0mn end=11-Apr-18 01:14 <62.0,74.0>\n (149) O150, start=11-Apr-18 01:14 duration=15.0mn end=11-Apr-18 01:29 <74.0,89.0>\n (150) O113, start=11-Apr-18 01:29 duration=10.0mn end=11-Apr-18 01:39 <89.0,99.0>\n (151) O2002, start=11-Apr-18 01:39 duration=5.0mn end=11-Apr-18 01:44 <99.0,104.0>\nTasks for Tech1 :\n (152) O1001, start=11-Apr-18 00:00 duration=5.0mn end=11-Apr-18 00:05 <0.0,5.0>\n (153) O375, start=11-Apr-18 00:05 duration=12.0mn end=11-Apr-18 00:17 <5.0,17.0>\n (154) O159, start=11-Apr-18 00:17 duration=10.0mn end=11-Apr-18 00:27 <17.0,27.0>\n (155) O70, start=11-Apr-18 00:27 duration=30.0mn end=11-Apr-18 00:57 <27.0,57.0>\n (156) O361, start=11-Apr-18 00:57 duration=22.0mn end=11-Apr-18 01:19 <57.0,79.0>\n (157) O273, start=11-Apr-18 01:19 duration=20.0mn end=11-Apr-18 01:39 <79.0,99.0>\n (158) O2001, start=11-Apr-18 01:39 duration=5.0mn end=11-Apr-18 01:44 <99.0,104.0>\n\nWith no resource :\n\nUnperformed :\nSolution.\n\nDecisions detail: \n\n\nGoal: Minimize time to complete all operations value: 108.0 weight: 1.0 weighted: 108.0\nGlobal objective = 108.0\n"} -------------------------------------------------------------------------------- /datasets/operation.csv: -------------------------------------------------------------------------------- 1 | id,duration,required skill,location,technician,type,unperformed cost,Start date,time1,time2,begins after ,finishes before ,step1,step2 2 | O7,20,S1,L7,,customer,100000, 14/10/2017,09:30,10:50, 14/10/2017 09:30, 14/10/2017 10:50,930,1050 3 | O18,12,S1,L18,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 4 | O26,10,S1,L26,,customer,100000, 14/10/2017,08:10,09:30, 14/10/2017 08:10, 14/10/2017 09:30,810,930 5 | O33,8,S1,L33,,customer,100000, 14/10/2017,06:00,07:20, 14/10/2017 06:00, 14/10/2017 07:20,600,720 6 | O36,12,S1,L36,,customer,100000, 14/10/2017,06:00,07:20, 14/10/2017 06:00, 14/10/2017 07:20,600,720 7 | O38,15,S1,L38,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 8 | O57,12,S1,L57,,customer,100000, 14/10/2017,08:10,10:50, 14/10/2017 08:10, 14/10/2017 10:50,810,1050 9 | O62,15,S1,L62,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 10 | O63,12,S1,L63,,customer,100000, 14/10/2017,08:10,10:50, 14/10/2017 08:10, 14/10/2017 10:50,810,1050 11 | O70,30,S1,L70,,customer,100000, 14/10/2017,06:00,07:20, 14/10/2017 06:00, 14/10/2017 07:20,600,720 12 | O75,30,S1,L75,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 13 | O76,8,S1,L76,,customer,100000, 14/10/2017,08:10,09:30, 14/10/2017 08:10, 14/10/2017 09:30,810,930 14 | O77,10,S1,L77,,customer,100000, 14/10/2017,08:10,10:50, 14/10/2017 08:10, 14/10/2017 10:50,810,1050 15 | O78,11,S1,L78,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 16 | O79,8,S1,L79,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 17 | O80,8,S1,L80,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 18 | O81,8,S1,L81,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 19 | O82,8,S1,L82,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 20 | O91,25,S1,L91,,customer,100000, 14/10/2017,08:10,10:50, 14/10/2017 08:10, 14/10/2017 10:50,810,1050 21 | O93,15,S1,L93,,customer,100000, 14/10/2017,08:10,10:50, 14/10/2017 08:10, 14/10/2017 10:50,810,1050 22 | O99,12,S1,L99,,customer,100000, 14/10/2017,06:00,07:20, 14/10/2017 06:00, 14/10/2017 07:20,600,720 23 | O102,10,S1,L102,,customer,100000, 14/10/2017,08:10,10:50, 14/10/2017 08:10, 14/10/2017 10:50,810,1050 24 | O103,8,S1,L103,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 25 | O106,8,S1,L106,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 26 | O113,10,S1,L113,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 27 | O116,30,S1,L116,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 28 | O122,10,S1,L122,,customer,100000, 14/10/2017,08:10,09:30, 14/10/2017 08:10, 14/10/2017 09:30,810,930 29 | O128,15,S1,L128,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 30 | O134,12,S1,L134,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 31 | O135,15,S1,L135,,customer,100000, 14/10/2017,08:10,10:50, 14/10/2017 08:10, 14/10/2017 10:50,810,1050 32 | O138,22,S1,L138,,customer,100000, 14/10/2017,08:10,10:50, 14/10/2017 08:10, 14/10/2017 10:50,810,1050 33 | O139,90,S1,L139,,customer,100000, 14/10/2017,08:10,10:50, 14/10/2017 08:10, 14/10/2017 10:50,810,1050 34 | O141,10,S1,L141,,customer,100000, 14/10/2017,04:30,06:00, 14/10/2017 04:30, 14/10/2017 06:00,480,600 35 | O145,8,S1,L145,,customer,100000, 14/10/2017,08:10,10:50, 14/10/2017 08:10, 14/10/2017 10:50,810,1050 36 | O146,12,S1,L146,,customer,100000, 14/10/2017,06:00,07:20, 14/10/2017 06:00, 14/10/2017 07:20,600,720 37 | O147,22,S1,L147,,customer,100000, 14/10/2017,08:10,10:50, 14/10/2017 08:10, 14/10/2017 10:50,810,1050 38 | O150,15,S1,L150,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 39 | O151,12,S1,L151,,customer,100000, 14/10/2017,04:30,06:00, 14/10/2017 04:30, 14/10/2017 06:00,480,600 40 | O153,11,S1,L153,,customer,100000, 14/10/2017,08:10,10:50, 14/10/2017 08:10, 14/10/2017 10:50,810,1050 41 | O154,11,S1,L154,,customer,100000, 14/10/2017,08:10,10:50, 14/10/2017 08:10, 14/10/2017 10:50,810,1050 42 | O155,20,S1,L155,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 43 | O156,11,S1,L156,,customer,100000, 14/10/2017,08:10,10:50, 14/10/2017 08:10, 14/10/2017 10:50,810,1050 44 | O157,11,S1,L157,,customer,100000, 14/10/2017,08:10,10:50, 14/10/2017 08:10, 14/10/2017 10:50,810,1050 45 | O159,10,S1,L159,,customer,100000, 14/10/2017,06:00,07:20, 14/10/2017 06:00, 14/10/2017 07:20,600,720 46 | O162,12,S1,L162,,customer,100000, 14/10/2017,08:10,10:50, 14/10/2017 08:10, 14/10/2017 10:50,810,1050 47 | O168,15,S1,L168,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 48 | O171,12,S1,L171,,customer,100000, 14/10/2017,08:10,09:30, 14/10/2017 08:10, 14/10/2017 09:30,810,930 49 | O173,45,S1,L173,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 50 | O178,20,S1,L178,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 51 | O179,20,S1,L179,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 52 | O185,10,S1,L185,,customer,100000, 14/10/2017,08:10,10:50, 14/10/2017 08:10, 14/10/2017 10:50,810,1050 53 | O186,10,S1,L186,,customer,100000, 14/10/2017,08:10,10:50, 14/10/2017 08:10, 14/10/2017 10:50,810,1050 54 | O191,20,S1,L191,,customer,100000, 14/10/2017,08:10,10:50, 14/10/2017 08:10, 14/10/2017 10:50,810,1050 55 | O203,12,S1,L203,,customer,100000, 14/10/2017,08:10,09:30, 14/10/2017 08:10, 14/10/2017 09:30,810,930 56 | O206,30,S1,L206,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 57 | O213,12,S1,L213,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 58 | O222,10,S1,L222,,customer,100000, 14/10/2017,08:10,10:50, 14/10/2017 08:10, 14/10/2017 10:50,810,1050 59 | O227,12,S1,L227,,customer,100000, 14/10/2017,08:10,10:50, 14/10/2017 08:10, 14/10/2017 10:50,810,1050 60 | O229,30,S1,L229,,customer,100000, 14/10/2017,08:10,10:50, 14/10/2017 08:10, 14/10/2017 10:50,810,1050 61 | O231,25,S1,L231,,customer,100000, 14/10/2017,08:10,10:50, 14/10/2017 08:10, 14/10/2017 10:50,810,1050 62 | O246,12,S1,L246,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 63 | O247,12,S1,L247,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 64 | O249,12,S1,L249,,customer,100000, 14/10/2017,08:10,10:50, 14/10/2017 08:10, 14/10/2017 10:50,810,1050 65 | O252,12,S1,L252,,customer,100000, 14/10/2017,08:10,10:50, 14/10/2017 08:10, 14/10/2017 10:50,810,1050 66 | O262,12,S1,L262,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 67 | O271,20,S1,L271,,customer,100000, 14/10/2017,06:00,07:20, 14/10/2017 06:00, 14/10/2017 07:20,600,720 68 | O273,20,S1,L273,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 69 | O274,15,S1,L274,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 70 | O292,25,S1,L292,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 71 | O299,12,S1,L299,,customer,100000, 14/10/2017,08:10,10:50, 14/10/2017 08:10, 14/10/2017 10:50,810,1050 72 | O309,8,S2,L309,,customer,100000, 14/10/2017,08:10,10:50, 14/10/2017 08:10, 14/10/2017 10:50,810,1050 73 | O310,12,S2,L310,,customer,100000, 14/10/2017,08:10,10:50, 14/10/2017 08:10, 14/10/2017 10:50,810,1050 74 | O313,12,S2,L313,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 75 | O315,12,S2,L315,,customer,100000, 14/10/2017,08:10,10:50, 14/10/2017 08:10, 14/10/2017 10:50,810,1050 76 | O321,15,S2,L321,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 77 | O323,12,S2,L323,,customer,100000, 14/10/2017,04:30,06:00, 14/10/2017 04:30, 14/10/2017 06:00,480,600 78 | O328,12,S2,L328,,customer,100000, 14/10/2017,04:30,06:00, 14/10/2017 04:30, 14/10/2017 06:00,480,600 79 | O333,15,S2,L333,,customer,100000, 14/10/2017,08:10,09:30, 14/10/2017 08:10, 14/10/2017 09:30,810,930 80 | O334,12,S2,L334,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 81 | O336,12,S2,L336,,customer,100000, 14/10/2017,08:10,10:50, 14/10/2017 08:10, 14/10/2017 10:50,810,1050 82 | O338,15,S2,L338,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 83 | O349,15,S2,L349,,customer,100000, 14/10/2017,08:10,10:50, 14/10/2017 08:10, 14/10/2017 10:50,810,1050 84 | O355,12,S2,L355,,customer,100000, 14/10/2017,08:10,10:50, 14/10/2017 08:10, 14/10/2017 10:50,810,1050 85 | O361,22,S2,L361,,customer,100000, 14/10/2017,08:10,10:50, 14/10/2017 08:10, 14/10/2017 10:50,810,1050 86 | O365,22,S2,L365,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 87 | O370,12,S2,L370,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 88 | O371,15,S2,L371,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 89 | O375,12,S2,L375,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 90 | O382,8,S1,L382,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 91 | O385,20,S1,L385,,customer,100000, 14/10/2017,08:10,10:50, 14/10/2017 08:10, 14/10/2017 10:50,810,1050 92 | O387,8,S1,L387,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 93 | O392,12,S1,L392,,customer,100000, 14/10/2017,06:00,07:20, 14/10/2017 06:00, 14/10/2017 07:20,600,720 94 | O393,8,S1,L393,,customer,100000, 14/10/2017,04:30,06:00, 14/10/2017 04:30, 14/10/2017 06:00,480,600 95 | O402,20,S1,L402,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 96 | O408,8,S1,L408,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 97 | O411,8,S1,L411,,customer,100000, 14/10/2017,08:10,10:50, 14/10/2017 08:10, 14/10/2017 10:50,810,1050 98 | O412,22,S1,L412,,customer,100000, 14/10/2017,08:10,10:50, 14/10/2017 08:10, 14/10/2017 10:50,810,1050 99 | O418,20,S1,L418,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 100 | O423,15,S1,L423,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 101 | O430,12,S1,L430,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 102 | O431,20,S1,L431,,customer,100000, 14/10/2017,08:10,09:30, 14/10/2017 08:10, 14/10/2017 09:30,810,930 103 | O437,12,S1,L437,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 104 | O444,15,S1,L444,,customer,100000, 14/10/2017,06:00,07:20, 14/10/2017 06:00, 14/10/2017 07:20,600,720 105 | O445,30,S1,L445,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 106 | O469,15,S1,L469,,customer,100000, 14/10/2017,08:10,09:30, 14/10/2017 08:10, 14/10/2017 09:30,810,930 107 | O483,8,S1,L483,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 108 | O493,30,S1,L493,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 109 | O495,8,S1,L495,,customer,100000, 14/10/2017,08:10,10:50, 14/10/2017 08:10, 14/10/2017 10:50,810,1050 110 | O496,15,S1,L496,,customer,100000, 14/10/2017,08:10,10:50, 14/10/2017 08:10, 14/10/2017 10:50,810,1050 111 | O511,20,S1,L511,,customer,100000, 14/10/2017,08:10,10:50, 14/10/2017 08:10, 14/10/2017 10:50,810,1050 112 | O527,12,S2,L527,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 113 | O529,15,S2,L529,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 114 | O530,15,S2,L530,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 115 | O540,15,S2,L540,,customer,100000, 14/10/2017,08:10,10:50, 14/10/2017 08:10, 14/10/2017 10:50,810,1050 116 | O543,15,S2,L543,,customer,100000, 14/10/2017,08:10,10:50, 14/10/2017 08:10, 14/10/2017 10:50,810,1050 117 | O554,22,S1,L554,,customer,100000, 14/10/2017,08:10,10:50, 14/10/2017 08:10, 14/10/2017 10:50,810,1050 118 | O556,12,S1,L556,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 119 | O560,90,S1,L560,,customer,100000, 14/10/2017,04:30,07:20, 14/10/2017 04:30, 14/10/2017 07:20,480,720 120 | O1001,5,S0,L0,Tech1,start,0, 14/10/2017,04:45,10:55, 14/10/2017 04:45, 14/10/2017 10:55,475,1055 121 | O1002,5,S0,L0,Tech2,start,0, 14/10/2017,04:45,10:55, 14/10/2017 04:45, 14/10/2017 10:55,475,1055 122 | O1003,5,S0,L0,Tech3,start,0, 14/10/2017,04:45,10:55, 14/10/2017 04:45, 14/10/2017 10:55,475,1055 123 | O1004,5,S0,L0,Tech4,start,0, 14/10/2017,04:45,10:55, 14/10/2017 04:45, 14/10/2017 10:55,475,1055 124 | O1005,5,S0,L0,Tech5,start,0, 14/10/2017,04:45,10:55, 14/10/2017 04:45, 14/10/2017 10:55,475,1055 125 | O1006,5,S0,L0,Tech6,start,0, 14/10/2017,04:45,10:55, 14/10/2017 04:45, 14/10/2017 10:55,475,1055 126 | O1007,5,S0,L0,Tech7,start,0, 14/10/2017,04:45,10:55, 14/10/2017 04:45, 14/10/2017 10:55,475,1055 127 | O1008,5,S0,L0,Tech8,start,0, 14/10/2017,04:45,10:55, 14/10/2017 04:45, 14/10/2017 10:55,475,1055 128 | O1009,5,S0,L0,Tech9,start,0, 14/10/2017,04:45,10:55, 14/10/2017 04:45, 14/10/2017 10:55,475,1055 129 | O1010,5,S0,L0,Tech10,start,0, 14/10/2017,04:45,10:55, 14/10/2017 04:45, 14/10/2017 10:55,475,1055 130 | O1011,5,S0,L0,Tech11,start,0, 14/10/2017,04:45,10:55, 14/10/2017 04:45, 14/10/2017 10:55,475,1055 131 | O1012,5,S0,L0,Tech12,start,0, 14/10/2017,04:45,10:55, 14/10/2017 04:45, 14/10/2017 10:55,475,1055 132 | O1013,5,S0,L0,Tech13,start,0, 14/10/2017,04:45,10:55, 14/10/2017 04:45, 14/10/2017 10:55,475,1055 133 | O1014,5,S0,L0,Tech14,start,0, 14/10/2017,04:45,10:55, 14/10/2017 04:45, 14/10/2017 10:55,475,1055 134 | O1015,5,S0,L0,Tech15,start,0, 14/10/2017,04:45,10:55, 14/10/2017 04:45, 14/10/2017 10:55,475,1055 135 | O1016,5,S0,L0,Tech16,start,0, 14/10/2017,04:45,10:55, 14/10/2017 04:45, 14/10/2017 10:55,475,1055 136 | O1017,5,S0,L0,Tech17,start,0, 14/10/2017,04:45,10:55, 14/10/2017 04:45, 14/10/2017 10:55,475,1055 137 | O1018,5,S0,L0,Tech18,start,0, 14/10/2017,04:45,10:55, 14/10/2017 04:45, 14/10/2017 10:55,475,1055 138 | O1019,5,S0,L0,Tech19,start,0, 14/10/2017,04:45,10:55, 14/10/2017 04:45, 14/10/2017 10:55,475,1055 139 | O1020,5,S0,L0,Tech20,start,0, 14/10/2017,04:45,10:55, 14/10/2017 04:45, 14/10/2017 10:55,475,1055 140 | O2001,5,S0,L0,Tech1,end,0, 14/10/2017,07:00,10:55, 14/10/2017 07:00, 14/10/2017 10:55,700,1055 141 | O2002,5,S0,L0,Tech2,end,0, 14/10/2017,07:00,10:55, 14/10/2017 07:00, 14/10/2017 10:55,700,1055 142 | O2003,5,S0,L0,Tech3,end,0, 14/10/2017,07:00,10:55, 14/10/2017 07:00, 14/10/2017 10:55,700,1055 143 | O2004,5,S0,L0,Tech4,end,0, 14/10/2017,07:00,10:55, 14/10/2017 07:00, 14/10/2017 10:55,700,1055 144 | O2005,5,S0,L0,Tech5,end,0, 14/10/2017,07:00,10:55, 14/10/2017 07:00, 14/10/2017 10:55,700,1055 145 | O2006,5,S0,L0,Tech6,end,0, 14/10/2017,07:00,10:55, 14/10/2017 07:00, 14/10/2017 10:55,700,1055 146 | O2007,5,S0,L0,Tech7,end,0, 14/10/2017,07:00,10:55, 14/10/2017 07:00, 14/10/2017 10:55,700,1055 147 | O2008,5,S0,L0,Tech8,end,0, 14/10/2017,07:00,10:55, 14/10/2017 07:00, 14/10/2017 10:55,700,1055 148 | O2009,5,S0,L0,Tech9,end,0, 14/10/2017,07:00,10:55, 14/10/2017 07:00, 14/10/2017 10:55,700,1055 149 | O2010,5,S0,L0,Tech10,end,0, 14/10/2017,07:00,10:55, 14/10/2017 07:00, 14/10/2017 10:55,700,1055 150 | O2011,5,S0,L0,Tech11,end,0, 14/10/2017,07:00,10:55, 14/10/2017 07:00, 14/10/2017 10:55,700,1055 151 | O2012,5,S0,L0,Tech12,end,0, 14/10/2017,07:00,10:55, 14/10/2017 07:00, 14/10/2017 10:55,700,1055 152 | O2013,5,S0,L0,Tech13,end,0, 14/10/2017,07:00,10:55, 14/10/2017 07:00, 14/10/2017 10:55,700,1055 153 | O2014,5,S0,L0,Tech14,end,0, 14/10/2017,07:00,10:55, 14/10/2017 07:00, 14/10/2017 10:55,700,1055 154 | O2015,5,S0,L0,Tech15,end,0, 14/10/2017,07:00,10:55, 14/10/2017 07:00, 14/10/2017 10:55,700,1055 155 | O2016,5,S0,L0,Tech16,end,0, 14/10/2017,07:00,10:55, 14/10/2017 07:00, 14/10/2017 10:55,700,1055 156 | O2017,5,S0,L0,Tech17,end,0, 14/10/2017,07:00,10:55, 14/10/2017 07:00, 14/10/2017 10:55,700,1055 157 | O2018,5,S0,L0,Tech18,end,0, 14/10/2017,07:00,10:55, 14/10/2017 07:00, 14/10/2017 10:55,700,1055 158 | O2019,5,S0,L0,Tech19,end,0, 14/10/2017,07:00,10:55, 14/10/2017 07:00, 14/10/2017 10:55,700,1055 159 | O2020,5,S0,L0,Tech20,end,0, 14/10/2017,07:00,10:55, 14/10/2017 07:00, 14/10/2017 10:55,700,1055 160 | -------------------------------------------------------------------------------- /decision-optimization/TechnicianDispatching/.scenarios/Scenario 1/model.py: -------------------------------------------------------------------------------- 1 | from docplex.cp.model import * 2 | from docplex.cp.expression import _FLOATING_POINT_PRECISION 3 | import time 4 | 5 | import pandas as pd 6 | import numpy as np 7 | 8 | 9 | schedUnitPerDurationUnit = 1 # DurationUnit is minutes 10 | duration_units_per_day = 1440.0 11 | 12 | # Define global constants for date to integer conversions 13 | horizon_start_date = pd.to_datetime('Wed Apr 11 00:00:00 UTC 2018') 14 | horizon_end_date = pd.to_datetime('Sat Apr 08 00:00:00 UTC 2028') 15 | nanosecs_per_sec = 1000.0 * 1000 * 1000 16 | secs_per_day = 3600.0 * 24 17 | 18 | # Convert type to 'int64' 19 | def helper_int64_convert(arg): 20 | if pd.__version__ < '0.20.0': 21 | return arg.astype('int64', raise_on_error=False) 22 | else: 23 | return arg.astype('int64', errors='ignore') 24 | 25 | # Parse and convert an integer Series to a date Series 26 | # Integer value represents the number of schedule units (time granularity for engine) since horizon start 27 | def helper_convert_int_series_to_date(sched_int_series): 28 | return pd.to_datetime(sched_int_series * secs_per_day / duration_units_per_day / schedUnitPerDurationUnit * nanosecs_per_sec + horizon_start_date.value, errors='coerce') 29 | 30 | # Return index values of a multi-index from index name 31 | def helper_get_level_values(df, column_name): 32 | return df.index.get_level_values(df.index.names.index(column_name)) 33 | 34 | # Convert a duration Series to a Series representing the number of scheduling units 35 | def helper_convert_duration_series_to_scheduling_unit(duration_series, nb_input_data_units_per_day): 36 | return helper_int64_convert(duration_series * duration_units_per_day * schedUnitPerDurationUnit / nb_input_data_units_per_day) 37 | 38 | # Label constraint 39 | expr_counter = 1 40 | def helper_add_labeled_cpo_constraint(mdl, expr, label, context=None, columns=None): 41 | global expr_counter 42 | if isinstance(expr, bool): 43 | pass # Adding a trivial constraint: if infeasible, docplex will raise an exception it is added to the model 44 | else: 45 | expr.name = '_L_EXPR_' + str(expr_counter) 46 | expr_counter += 1 47 | if columns: 48 | ctxt = ", ".join(str(getattr(context, col)) for col in columns) 49 | else: 50 | if context: 51 | ctxt = context.Index if isinstance(context.Index, str) is not None else ", ".join(context.Index) 52 | else: 53 | ctxt = None 54 | expr_to_info[expr.name] = (label, ctxt) 55 | mdl.add(expr) 56 | 57 | 58 | 59 | # Data model definition for each table 60 | # Data collection: list_of_Operation ['duration', 'id', 'technician', 'type'] 61 | # Data collection: list_of_Technician ['Id'] 62 | # Data collection: list_of_Type ['id'] 63 | 64 | # Create a pandas Dataframe for each data table 65 | list_of_Operation = inputs['operation'] 66 | list_of_Operation = list_of_Operation[['duration', 'id', 'technician', 'type']].copy() 67 | list_of_Operation.rename(columns={'duration': 'duration', 'id': 'id', 'technician': 'technician', 'type': 'type'}, inplace=True) 68 | list_of_Technician = inputs['technician'] 69 | list_of_Technician = list_of_Technician[['Id']].copy() 70 | list_of_Technician.rename(columns={'Id': 'Id'}, inplace=True) 71 | # --- Handling table for implicit concept 72 | list_of_Type = pd.DataFrame(inputs['operation']['type'].unique(), columns=['id']).dropna() 73 | 74 | # Convert all input durations to internal time unit 75 | list_of_Operation['duration'] = helper_convert_duration_series_to_scheduling_unit(list_of_Operation.duration, 1440.0) 76 | 77 | # Set index when a primary key is defined 78 | list_of_Operation.set_index('id', inplace=True) 79 | list_of_Operation.sort_index(inplace=True) 80 | list_of_Operation.index.name = 'id_of_Operation' 81 | list_of_Technician.set_index('Id', inplace=True) 82 | list_of_Technician.sort_index(inplace=True) 83 | list_of_Technician.index.name = 'id_of_Technician' 84 | list_of_Type.set_index('id', inplace=True) 85 | list_of_Type.sort_index(inplace=True) 86 | list_of_Type.index.name = 'id_of_Type' 87 | 88 | # Create data frame as cartesian product of: Operation x Technician 89 | list_of_SchedulingAssignment = pd.DataFrame(index=pd.MultiIndex.from_product((list_of_Operation.index, list_of_Technician.index), names=['id_of_Operation', 'id_of_Technician'])) 90 | 91 | 92 | def build_model(): 93 | mdl = CpoModel() 94 | 95 | # Definition of model variables 96 | list_of_SchedulingAssignment['interval'] = interval_var_list(len(list_of_SchedulingAssignment), end=(INTERVAL_MIN, INTERVAL_MAX / 4), optional=True) 97 | list_of_SchedulingAssignment['schedulingAssignmentVar'] = list_of_SchedulingAssignment.interval.apply(mdl.presence_of) 98 | list_of_Operation['interval'] = interval_var_list(len(list_of_Operation), end=(INTERVAL_MIN, INTERVAL_MAX / 4), optional=True) 99 | list_of_Operation['taskStartVar'] = list_of_Operation.interval.apply(mdl.start_of) 100 | list_of_Operation['taskEndVar'] = list_of_Operation.interval.apply(mdl.end_of) 101 | list_of_Operation['taskDurationVar'] = list_of_Operation.interval.apply(mdl.size_of) 102 | list_of_SchedulingAssignment['taskAssignmentDurationVar'] = list_of_SchedulingAssignment.interval.apply(mdl.size_of) 103 | list_of_Operation['taskAbsenceVar'] = 1 - list_of_Operation.interval.apply(mdl.presence_of) 104 | list_of_Operation['taskPresenceVar'] = list_of_Operation.interval.apply(mdl.presence_of) 105 | 106 | 107 | # Definition of model 108 | # Objective cMinimizeMakespan- 109 | # Combine weighted criteria: 110 | # cMinimizeMakespan cMinimizeMakespan{ 111 | # cScaledGoal.scaleFactorExpr = 1, 112 | # cSingleCriterionGoal.goalFilter = null, 113 | # cMinimizeMakespan.taskEnd = cTaskEnd[operation], 114 | # cSingleCriterionGoal.numericExpr = max of count( cTaskEnd[operation]) over cTaskEnd[operation], 115 | # cMinimizeMakespan.task = operation} with weight 5.0 116 | agg_Operation_taskEndVar_SG1 = mdl.max(list_of_Operation.taskEndVar) 117 | 118 | kpi_1 = integer_var(name='kpi_1') 119 | mdl.add(kpi_1 >= 1.0 * (agg_Operation_taskEndVar_SG1 / schedUnitPerDurationUnit) / 1 - 1 + _FLOATING_POINT_PRECISION) 120 | mdl.add(kpi_1 <= 1.0 * (agg_Operation_taskEndVar_SG1 / schedUnitPerDurationUnit) / 1) 121 | mdl.add_kpi(kpi_1, name='time to complete all operations') 122 | 123 | mdl.add(minimize( 0 124 | # Sub Goal cMinimizeMakespan_cMinimizeGoal 125 | # Minimize time to complete all operations 126 | + 1.0 * (agg_Operation_taskEndVar_SG1 / schedUnitPerDurationUnit) / 1 127 | )) 128 | 129 | # [ST_1] Constraint : cLimitNumberOfResourcesAssignedToEachActivitySched_cIterativeRelationalConstraint 130 | # The number of technician assignments for each operation is equal to 1 131 | # Label: CT_1_The_number_of_technician_assignments_for_each_operation_is_equal_to_1 132 | join_Operation_SchedulingAssignment = list_of_Operation.join(list_of_SchedulingAssignment, rsuffix='_right', how='inner') 133 | groupbyLevels = [join_Operation_SchedulingAssignment.index.names.index(name) for name in list_of_Operation.index.names] 134 | groupby_Operation_SchedulingAssignment = join_Operation_SchedulingAssignment.schedulingAssignmentVar.groupby(level=groupbyLevels).sum().to_frame() 135 | for row in groupby_Operation_SchedulingAssignment.itertuples(index=True): 136 | helper_add_labeled_cpo_constraint(mdl, row.schedulingAssignmentVar == 1, 'The number of technician assignments for each operation is equal to 1', row) 137 | 138 | # [ST_2] Constraint : cSetFixedDurationSpezProp_cIterativeRelationalConstraint 139 | # The schedule must respect the duration specified for each operation 140 | # Label: CT_2_The_schedule_must_respect_the_duration_specified_for_each_operation 141 | for row in list_of_Operation[list_of_Operation.duration.notnull()].itertuples(index=True): 142 | helper_add_labeled_cpo_constraint(mdl, size_of(row.interval, int(row.duration)) == int(row.duration), 'The schedule must respect the duration specified for each operation', row) 143 | 144 | # [ST_3] Constraint : cForceTaskPresence_cIterativeRelationalConstraint 145 | # All operations are present 146 | # Label: CT_3_All_operations_are_present 147 | for row in list_of_Operation.itertuples(index=True): 148 | helper_add_labeled_cpo_constraint(mdl, row.taskAbsenceVar != 1, 'All operations are present', row) 149 | 150 | # [ST_4] Constraint : cTaskIsFirst_cTaskIsFirst 151 | # Each assigned operation where type is start must be performed first by assigned technicians 152 | # Label: CT_4_Each_assigned_operation_where_type_is_start_must_be_performed_first_by_assigned_technicians 153 | groupbyLevels = [list_of_SchedulingAssignment.index.names.index(name) for name in list_of_Technician.index.names] 154 | groupby_SchedulingAssignment = list_of_SchedulingAssignment.interval.groupby(level=groupbyLevels).apply(list).to_frame(name='interval') 155 | list_of_Technician['sequence_var'] = groupby_SchedulingAssignment.apply(lambda row: sequence_var(row.interval), axis=1) 156 | filtered_Operation = list_of_Operation[list_of_Operation.type == 'start'].copy() 157 | join_SchedulingAssignment_Operation = list_of_SchedulingAssignment.join(filtered_Operation.type, how='inner') 158 | join_SchedulingAssignment_Operation_Technician = join_SchedulingAssignment_Operation.join(list_of_Technician.sequence_var, how='inner') 159 | for row in join_SchedulingAssignment_Operation_Technician.itertuples(index=True): 160 | helper_add_labeled_cpo_constraint(mdl, first(row.sequence_var, row.interval), 'Each assigned operation where type is start must be performed first by assigned technicians', row) 161 | 162 | # [ST_5] Constraint : cTaskIsLast_cTaskIsLast 163 | # Each assigned operation where type is end must be performed last by assigned technicians 164 | # Label: CT_5_Each_assigned_operation_where_type_is_end_must_be_performed_last_by_assigned_technicians 165 | filtered_Operation = list_of_Operation[list_of_Operation.type == 'end'].copy() 166 | join_SchedulingAssignment_Operation = list_of_SchedulingAssignment.join(filtered_Operation.type, how='inner') 167 | join_SchedulingAssignment_Operation_Technician = join_SchedulingAssignment_Operation.join(list_of_Technician.sequence_var, how='inner') 168 | for row in join_SchedulingAssignment_Operation_Technician.itertuples(index=True): 169 | helper_add_labeled_cpo_constraint(mdl, last(row.sequence_var, row.interval), 'Each assigned operation where type is end must be performed last by assigned technicians', row) 170 | 171 | # [ST_6] Constraint : cSchedulingAssignmentCompatibilityConstraintOnPair_cCategoryCompatibilityConstraintOnPair 172 | # For each technician to operation assignment, assigned technician includes technician of assigned operation 173 | # Label: CT_6_For_each_technician_to_operation_assignment__assigned_technician_includes_technician_of_assigned_operation 174 | join_SchedulingAssignment_Operation = list_of_SchedulingAssignment.join(list_of_Operation.technician, how='inner') 175 | filtered_SchedulingAssignment_Operation = join_SchedulingAssignment_Operation.loc[helper_get_level_values(join_SchedulingAssignment_Operation, 'id_of_Technician') == join_SchedulingAssignment_Operation.technician].copy() 176 | helper_add_labeled_cpo_constraint(mdl, mdl.sum(join_SchedulingAssignment_Operation.schedulingAssignmentVar[(join_SchedulingAssignment_Operation.technician.notnull()) & (~join_SchedulingAssignment_Operation.index.isin(filtered_SchedulingAssignment_Operation.index.values))]) == 0, 'For each technician to operation assignment, assigned technician includes technician of assigned operation') 177 | 178 | # Scheduling internal structure 179 | groupbyLevels = [list_of_SchedulingAssignment.index.names.index(name) for name in list_of_Operation.index.names] 180 | groupby_SchedulingAssignment = list_of_SchedulingAssignment.interval.groupby(level=groupbyLevels).apply(list).to_frame(name='interval') 181 | join_SchedulingAssignment_Operation = groupby_SchedulingAssignment.join(list_of_Operation.interval, rsuffix='_right', how='inner') 182 | for row in join_SchedulingAssignment_Operation.itertuples(index=False): 183 | mdl.add(synchronize(row.interval_right, row.interval)) 184 | 185 | # link presence if not alternative 186 | groupbyLevels = [list_of_SchedulingAssignment.index.names.index(name) for name in list_of_Operation.index.names] 187 | groupby_SchedulingAssignment = list_of_SchedulingAssignment.schedulingAssignmentVar.groupby(level=groupbyLevels).agg(lambda l: mdl.max(l.tolist())).to_frame() 188 | join_SchedulingAssignment_Operation = groupby_SchedulingAssignment.join(list_of_Operation.taskPresenceVar, how='inner') 189 | for row in join_SchedulingAssignment_Operation.itertuples(index=False): 190 | mdl.add(row.schedulingAssignmentVar <= row.taskPresenceVar) 191 | 192 | # no overlap 193 | for row in list_of_Technician.reset_index().itertuples(index=False): 194 | mdl.add(no_overlap(row.sequence_var)) 195 | 196 | 197 | return mdl 198 | 199 | 200 | def solve_model(mdl): 201 | params = CpoParameters() 202 | params.TimeLimit = 20 203 | solver = CpoSolver(mdl, params=params, trace_log=True) 204 | try: 205 | for i, msol in enumerate(solver): 206 | ovals = msol.get_objective_values() 207 | print("Objective values: {}".format(ovals)) 208 | for k, v in msol.get_kpis().iteritems(): 209 | print k, '-->', v 210 | export_solution(msol) 211 | if ovals is None: 212 | break # No objective: stop after first solution 213 | # If model is infeasible, invoke conflict refiner to return 214 | if solver.get_last_solution().get_solve_status() == SOLVE_STATUS_INFEASIBLE: 215 | conflicts = solver.refine_conflict() 216 | export_conflicts(conflicts) 217 | except CpoException as e: 218 | # Solve has been aborted from an external action 219 | print('An exception has been raised: %s' % str(e)) 220 | raise e 221 | 222 | 223 | expr_to_info = {} 224 | 225 | 226 | def export_conflicts(conflicts): 227 | # Display conflicts in console 228 | print conflicts 229 | list_of_conflicts = pd.DataFrame(columns=['constraint', 'context', 'detail']) 230 | for item, index in zip(conflicts.member_constraints, range(len(conflicts.member_constraints))): 231 | label, context = expr_to_info.get(item.name, ('N/A', item.name)) 232 | constraint_detail = expression._to_string(item) 233 | # Print conflict information in console 234 | print("Conflict involving constraint: %s, \tfor: %s -> %s" % (label, context, constraint_detail)) 235 | list_of_conflicts = list_of_conflicts.append(pd.DataFrame({'constraint': label, 'context': str(context), 'detail': constraint_detail}, 236 | index=[index], columns=['constraint', 'context', 'detail'])) 237 | 238 | # Update of the ``outputs`` dict must take the 'Lock' to make this action atomic, 239 | # in case the job is aborted 240 | global output_lock 241 | with output_lock: 242 | outputs['list_of_conflicts'] = list_of_conflicts 243 | 244 | 245 | def export_solution(msol): 246 | start_time = time.time() 247 | list_of_SchedulingAssignment_solution = pd.DataFrame(index=list_of_SchedulingAssignment.index) 248 | list_of_SchedulingAssignment_solution['schedulingAssignmentVar'] = list_of_SchedulingAssignment.interval.apply(lambda r: (1 if msol.solution.get_var_solution(r).is_present() else 0) if msol.solution.get_var_solution(r) else np.NaN) 249 | list_of_Operation_solution = pd.DataFrame(index=list_of_Operation.index) 250 | list_of_Operation_solution = list_of_Operation_solution.join(pd.DataFrame([msol.solution[interval] if msol.solution[interval] else (None, None, None) for interval in list_of_Operation.interval], index=list_of_Operation.index, columns=['taskStartVar', 'taskEndVar', 'taskDurationVar'])) 251 | list_of_Operation_solution['taskStartVarDate'] = helper_convert_int_series_to_date(list_of_Operation_solution.taskStartVar) 252 | list_of_Operation_solution['taskEndVarDate'] = helper_convert_int_series_to_date(list_of_Operation_solution.taskEndVar) 253 | list_of_Operation_solution.taskStartVar /= schedUnitPerDurationUnit 254 | list_of_Operation_solution.taskEndVar /= schedUnitPerDurationUnit 255 | list_of_Operation_solution.taskDurationVar /= schedUnitPerDurationUnit 256 | list_of_SchedulingAssignment_solution['taskAssignmentDurationVar'] = list_of_SchedulingAssignment.interval.apply(lambda r: msol.solution.get_var_solution(r).get_size() if msol.solution.get_var_solution(r) else np.NaN) 257 | list_of_SchedulingAssignment_solution.taskAssignmentDurationVar /= schedUnitPerDurationUnit 258 | list_of_Operation_solution['taskAbsenceVar'] = list_of_Operation.interval.apply(lambda r: (1 if msol.solution.get_var_solution(r).is_absent() else 0) if msol.solution.get_var_solution(r) else np.NaN) 259 | list_of_Operation_solution['taskPresenceVar'] = list_of_Operation.interval.apply(lambda r: (1 if msol.solution.get_var_solution(r).is_present() else 0) if msol.solution.get_var_solution(r) else np.NaN) 260 | 261 | # Filter rows for non-selected assignments 262 | list_of_SchedulingAssignment_solution = list_of_SchedulingAssignment_solution[list_of_SchedulingAssignment_solution.schedulingAssignmentVar > 0.5] 263 | 264 | # Update of the ``outputs`` dict must take the 'Lock' to make this action atomic, 265 | # in case the job is aborted 266 | global output_lock 267 | with output_lock: 268 | outputs['list_of_Operation_solution'] = list_of_Operation_solution.reset_index() 269 | outputs['list_of_SchedulingAssignment_solution'] = list_of_SchedulingAssignment_solution.reset_index() 270 | 271 | elapsed_time = time.time() - start_time 272 | print('solution export done in ' + str(elapsed_time) + ' secs') 273 | return 274 | 275 | 276 | print('* building wado model') 277 | start_time = time.time() 278 | model = build_model() 279 | elapsed_time = time.time() - start_time 280 | print('model building done in ' + str(elapsed_time) + ' secs') 281 | 282 | print('* running wado model') 283 | start_time = time.time() 284 | solve_model(model) 285 | elapsed_time = time.time() - start_time 286 | print('solve + export of all intermediate solutions done in ' + str(elapsed_time) + ' secs') 287 | -------------------------------------------------------------------------------- /decision-optimization/TechnicianDispatching/.scenarios/Scenario 1/log.txt: -------------------------------------------------------------------------------- 1 | [2018-04-11T07:09:18Z, INFO] * building wado model 2 | [2018-04-11T07:09:18Z, INFO] model building done in 0.407691001892 secs 3 | [2018-04-11T07:09:18Z, INFO] * running wado model 4 | [2018-04-11T07:09:18Z, INFO] WARNING: Number of workers has been reduced to 2 to comply with platform limitations. 5 | [2018-04-11T07:09:19Z, INFO] stream:7:4: Warning: Reading file created by CP Optimizer version 12.7.0.0 into CP Optimizer version 12.8.0.0. 6 | [2018-04-11T07:09:19Z, INFO] stream:7:4: Warning: Making reader backward compatible with version 12.7.0.0. 7 | [2018-04-11T07:09:19Z, INFO] ! ---------------------------------------------------------------------------- 8 | [2018-04-11T07:09:19Z, INFO] ! Minimization problem - 3339 variables, 1613 constraints 9 | [2018-04-11T07:09:19Z, INFO] ! TimeLimit = 20 10 | [2018-04-11T07:09:19Z, INFO] ! Workers = 2 11 | [2018-04-11T07:09:19Z, INFO] ! Initial process time : 0.27s (0.27s extraction + 0.00s propagation) 12 | [2018-04-11T07:09:19Z, INFO] ! . Log search space : 29009.9 (before), 29009.9 (after) 13 | [2018-04-11T07:09:19Z, INFO] ! . Memory usage : 28.4 MB (before), 28.4 MB (after) 14 | [2018-04-11T07:09:19Z, INFO] ! Using parallel search with 2 workers. 15 | [2018-04-11T07:09:19Z, INFO] ! ---------------------------------------------------------------------------- 16 | [2018-04-11T07:09:19Z, INFO] ! Best Branches Non-fixed W Branch decision 17 | [2018-04-11T07:09:19Z, INFO] 0 3339 - 18 | [2018-04-11T07:09:19Z, INFO] + New bound is 90 19 | [2018-04-11T07:09:19Z, INFO] ! Using temporal relaxation. 20 | [2018-04-11T07:09:19Z, INFO] 0 2579 1 - 21 | [2018-04-11T07:09:19Z, INFO] + New bound is 91 22 | [2018-04-11T07:09:19Z, INFO] * 1906 773 0.70s 1 (gap is 95.23%) 23 | [2018-04-11T07:09:20Z, INFO] Objective values: (1906,) 24 | [2018-04-11T07:09:20Z, INFO] time to complete all operations 25 | [2018-04-11T07:09:20Z, INFO] --> 26 | [2018-04-11T07:09:20Z, INFO] 1906 27 | [2018-04-11T07:09:20Z, INFO] solution export done in 0.0305669307709 secs 28 | [2018-04-11T07:09:21Z, INFO] 1906 1001 240 1 F on _ITV_142 29 | [2018-04-11T07:09:21Z, INFO] 1906 1001 240 2 F on _ITV_142 30 | [2018-04-11T07:09:21Z, INFO] * 109 1455 2.04s 1 (gap is 16.51%) 31 | [2018-04-11T07:09:21Z, INFO] Objective values: (109,) 32 | [2018-04-11T07:09:21Z, INFO] time to complete all operations 33 | [2018-04-11T07:09:21Z, INFO] --> 34 | [2018-04-11T07:09:21Z, INFO] 109 35 | [2018-04-11T07:09:21Z, INFO] solution export done in 0.0340330600739 secs 36 | [2018-04-11T07:09:22Z, INFO] 109 2000 3 1 on _ITV_1043 37 | [2018-04-11T07:09:22Z, INFO] 109 3000 1034 1 on _ITV_848 38 | [2018-04-11T07:09:22Z, INFO] 109 2000 3 2 on _ITV_1944 39 | [2018-04-11T07:09:22Z, INFO] 109 3000 1066 2 on _ITV_3245 40 | [2018-04-11T07:09:24Z, INFO] 109 4000 51 1 on _ITV_978 41 | [2018-04-11T07:09:24Z, INFO] 109 5000 1042 1 on _ITV_2288 42 | [2018-04-11T07:09:24Z, INFO] 109 6000 117 1 F on _ITV_3098 43 | [2018-04-11T07:09:24Z, INFO] 109 7000 51 1 on _ITV_2410 44 | [2018-04-11T07:09:24Z, INFO] 109 4000 51 2 on _ITV_901 45 | [2018-04-11T07:09:24Z, INFO] 109 5000 1085 2 on _ITV_2716 46 | [2018-04-11T07:09:24Z, INFO] 109 6000 138 2 F on _ITV_149 47 | [2018-04-11T07:09:24Z, INFO] 109 7000 51 2 on _ITV_2743 48 | [2018-04-11T07:09:26Z, INFO] 109 8000 51 1 on _ITV_2860 49 | [2018-04-11T07:09:26Z, INFO] 109 9000 830 1 on _ITV_2636 50 | [2018-04-11T07:09:26Z, INFO] ! Time = 6.55s, Average fail depth = 236, Memory usage = 73.0 MB 51 | [2018-04-11T07:09:26Z, INFO] ! Current bound is 91 (gap is 16.51%) 52 | [2018-04-11T07:09:26Z, INFO] ! Best Branches Non-fixed W Branch decision 53 | [2018-04-11T07:09:26Z, INFO] 109 10000 464 1 on _ITV_1197 54 | [2018-04-11T07:09:26Z, INFO] 109 11000 330 1 on _ITV_2244 55 | [2018-04-11T07:09:26Z, INFO] 109 8000 51 2 on _ITV_2742 56 | [2018-04-11T07:09:26Z, INFO] 109 9000 918 2 on _ITV_2306 57 | [2018-04-11T07:09:26Z, INFO] 109 10000 438 2 on _ITV_3246 58 | [2018-04-11T07:09:26Z, INFO] 109 11000 345 2 F on _ITV_940 59 | [2018-04-11T07:09:27Z, INFO] 109 12000 330 1 on _ITV_2739 60 | [2018-04-11T07:09:27Z, INFO] 109 13000 1363 1 on _ITV_1836 61 | [2018-04-11T07:09:27Z, INFO] 109 14000 160 1 F on _ITV_129 62 | [2018-04-11T07:09:27Z, INFO] 109 12000 350 2 on _ITV_46 63 | [2018-04-11T07:09:27Z, INFO] 109 13000 1477 2 on _ITV_1178 64 | [2018-04-11T07:09:27Z, INFO] 109 14000 128 2 on _ITV_508 65 | [2018-04-11T07:09:27Z, INFO] * 108 14407 7.87s 1 (gap is 15.74%) 66 | [2018-04-11T07:09:27Z, INFO] Objective values: (108,) 67 | [2018-04-11T07:09:27Z, INFO] time to complete all operations 68 | [2018-04-11T07:09:27Z, INFO] --> 69 | [2018-04-11T07:09:27Z, INFO] 108 70 | [2018-04-11T07:09:27Z, INFO] solution export done in 0.0475091934204 secs 71 | [2018-04-11T07:09:27Z, INFO] 108 15000 2 1 on _ITV_1713 72 | [2018-04-11T07:09:27Z, INFO] 108 15000 2 2 on _ITV_771 73 | [2018-04-11T07:09:29Z, INFO] 108 16000 57 1 on _ITV_984 74 | [2018-04-11T07:09:29Z, INFO] 108 17000 952 1 on _ITV_890 75 | [2018-04-11T07:09:29Z, INFO] 108 18000 126 1 F on _ITV_2072 76 | [2018-04-11T07:09:29Z, INFO] 108 19000 126 1 on _ITV_939 77 | [2018-04-11T07:09:29Z, INFO] 108 20000 252 1 on _ITV_1769 78 | [2018-04-11T07:09:29Z, INFO] ! Time = 10.26s, Average fail depth = 406, Memory usage = 73.6 MB 79 | [2018-04-11T07:09:29Z, INFO] ! Current bound is 91 (gap is 15.74%) 80 | [2018-04-11T07:09:29Z, INFO] ! Best Branches Non-fixed W Branch decision 81 | [2018-04-11T07:09:29Z, INFO] 108 21000 57 1 F on _ITV_92 82 | [2018-04-11T07:09:29Z, INFO] 108 16000 57 2 on _ITV_1174 83 | [2018-04-11T07:09:29Z, INFO] 108 17000 1095 2 on _ITV_2036 84 | [2018-04-11T07:09:29Z, INFO] 108 18000 141 2 F on _ITV_714 85 | [2018-04-11T07:09:29Z, INFO] 108 19000 48 2 on _ITV_3040 86 | [2018-04-11T07:09:29Z, INFO] 108 20000 50 2 on _ITV_2590 87 | [2018-04-11T07:09:29Z, INFO] 108 21000 57 2 on _ITV_120 88 | [2018-04-11T07:09:30Z, INFO] 108 22000 58 1 on _ITV_891 89 | [2018-04-11T07:09:30Z, INFO] 108 23000 770 1 on _ITV_2736 90 | [2018-04-11T07:09:30Z, INFO] 108 24000 682 1 on _ITV_2948 91 | [2018-04-11T07:09:30Z, INFO] 108 25000 324 1 on _ITV_1786 92 | [2018-04-11T07:09:30Z, INFO] 108 26000 323 1 on _ITV_628 93 | [2018-04-11T07:09:30Z, INFO] 108 27000 327 1 F on _ITV_3278 94 | [2018-04-11T07:09:30Z, INFO] 108 22000 57 2 on _ITV_3187 95 | [2018-04-11T07:09:30Z, INFO] 108 23000 799 2 on _ITV_1769 96 | [2018-04-11T07:09:30Z, INFO] 108 24000 431 2 on _ITV_2180 97 | [2018-04-11T07:09:30Z, INFO] 108 25000 323 2 F on _ITV_2253 98 | [2018-04-11T07:09:30Z, INFO] 108 26000 323 2 F on _ITV_3117 99 | [2018-04-11T07:09:30Z, INFO] 108 27000 326 2 F on _ITV_1809 100 | [2018-04-11T07:09:32Z, INFO] 108 28000 337 1 on _ITV_992 101 | [2018-04-11T07:09:32Z, INFO] ! Time = 12.60s, Average fail depth = 473, Memory usage = 73.6 MB 102 | [2018-04-11T07:09:32Z, INFO] ! Current bound is 91 (gap is 15.74%) 103 | [2018-04-11T07:09:32Z, INFO] ! Best Branches Non-fixed W Branch decision 104 | [2018-04-11T07:09:32Z, INFO] 108 29000 1029 1 on _ITV_1868 105 | [2018-04-11T07:09:32Z, INFO] 108 30000 131 1 F on _ITV_2905 106 | [2018-04-11T07:09:32Z, INFO] 108 31000 48 1 on _ITV_606 107 | [2018-04-11T07:09:32Z, INFO] 108 32000 48 1 on _ITV_593 108 | [2018-04-11T07:09:32Z, INFO] 108 33000 57 1 on _ITV_115 109 | [2018-04-11T07:09:32Z, INFO] 108 28000 325 2 on _ITV_800 110 | [2018-04-11T07:09:32Z, INFO] 108 29000 1355 2 on _ITV_1628 111 | [2018-04-11T07:09:32Z, INFO] 108 30000 135 2 F on _ITV_135 112 | [2018-04-11T07:09:32Z, INFO] 108 31000 134 2 on _ITV_866 113 | [2018-04-11T07:09:32Z, INFO] 108 32000 140 2 F on _ITV_48 114 | [2018-04-11T07:09:32Z, INFO] 108 33000 57 2 F on _ITV_2449 115 | [2018-04-11T07:09:32Z, INFO] 108 33289 57 1 - 116 | [2018-04-11T07:09:32Z, INFO] + New bound is 100 (gap is 7.41%) 117 | [2018-04-11T07:09:32Z, INFO] 108 34000 2 1 F on _ITV_1547 118 | [2018-04-11T07:09:32Z, INFO] 108 35000 2 1 F on _ITV_142 119 | [2018-04-11T07:09:32Z, INFO] ! Using failure-directed search. 120 | [2018-04-11T07:09:32Z, INFO] 108 34000 57 2 on _ITV_848 121 | [2018-04-11T07:09:32Z, INFO] 108 35000 57 2 on _ITV_2945 122 | [2018-04-11T07:09:32Z, INFO] 108 36000 2 2 F on _ITV_1219 123 | [2018-04-11T07:09:32Z, INFO] 108 37000 2 2 F on _ITV_149 124 | [2018-04-11T07:09:32Z, INFO] 108 36000 2 1 on _ITV_967 125 | [2018-04-11T07:09:32Z, INFO] 108 37000 2 1 on _ITV_3067 126 | [2018-04-11T07:09:32Z, INFO] ! Time = 13.23s, Average fail depth = 367, Memory usage = 70.6 MB 127 | [2018-04-11T07:09:32Z, INFO] ! Current bound is 100 (gap is 7.41%) 128 | [2018-04-11T07:09:32Z, INFO] ! Best Branches Non-fixed W Branch decision 129 | [2018-04-11T07:09:33Z, INFO] 108 38000 2 2 on _ITV_1137 130 | [2018-04-11T07:09:33Z, INFO] 108 39000 2 2 on _ITV_788 131 | [2018-04-11T07:09:33Z, INFO] 108 40000 2 2 F on _ITV_2287 132 | [2018-04-11T07:09:33Z, INFO] 108 41000 35 2 F on _ITV_1137 133 | [2018-04-11T07:09:33Z, INFO] 108 38000 2 1 on _ITV_843 134 | [2018-04-11T07:09:33Z, INFO] 108 39000 2 1 F on _ITV_1356 135 | [2018-04-11T07:09:33Z, INFO] 108 40000 2 1 F on _ITV_2827 136 | [2018-04-11T07:09:33Z, INFO] 108 42000 2 2 F on _ITV_2372 137 | [2018-04-11T07:09:33Z, INFO] 108 43000 2 2 on _ITV_361 138 | [2018-04-11T07:09:33Z, INFO] 108 44000 64 2 F on _ITV_2189 139 | [2018-04-11T07:09:33Z, INFO] 108 45000 69 2 F on _ITV_2636 140 | [2018-04-11T07:09:33Z, INFO] 108 46000 13 2 F on _ITV_2490 141 | [2018-04-11T07:09:33Z, INFO] 108 47000 27 2 on _ITV_141 142 | [2018-04-11T07:09:33Z, INFO] 108 41000 2558 1 F on _ITV_1827 143 | [2018-04-11T07:09:34Z, INFO] 108 48000 2 2 on _ITV_135 144 | [2018-04-11T07:09:34Z, INFO] 108 49000 147 2 on _ITV_2843 145 | [2018-04-11T07:09:34Z, INFO] 108 50000 2 2 on _ITV_558 146 | [2018-04-11T07:09:34Z, INFO] 108 51000 2 2 on _ITV_1658 147 | [2018-04-11T07:09:34Z, INFO] 108 52000 2 2 F on _ITV_119 148 | [2018-04-11T07:09:34Z, INFO] 108 42000 2442 1 F on _ITV_153 149 | [2018-04-11T07:09:34Z, INFO] ! Time = 14.77s, Average fail depth = 239, Memory usage = 71.3 MB 150 | [2018-04-11T07:09:34Z, INFO] ! Current bound is 100 (gap is 7.41%) 151 | [2018-04-11T07:09:34Z, INFO] ! Best Branches Non-fixed W Branch decision 152 | [2018-04-11T07:09:34Z, INFO] 108 53000 2 2 F on _ITV_1836 153 | [2018-04-11T07:09:34Z, INFO] 108 54000 59 2 F on _ITV_1725 154 | [2018-04-11T07:09:34Z, INFO] 108 55000 2 2 F on _ITV_1314 155 | [2018-04-11T07:09:34Z, INFO] 108 56000 2 2 F on _ITV_132 156 | [2018-04-11T07:09:34Z, INFO] 108 43000 2559 1 F on _ITV_105 157 | [2018-04-11T07:09:35Z, INFO] 108 57000 2 2 on _ITV_50 158 | [2018-04-11T07:09:35Z, INFO] 108 58000 108 2 on _ITV_2721 159 | [2018-04-11T07:09:35Z, INFO] 108 59000 2 2 on _ITV_1814 160 | [2018-04-11T07:09:35Z, INFO] 108 60000 2 2 F on _ITV_140 161 | [2018-04-11T07:09:35Z, INFO] 108 61000 2 2 F on _ITV_1219 162 | [2018-04-11T07:09:35Z, INFO] 108 44000 2460 1 F on _ITV_68 163 | [2018-04-11T07:09:35Z, INFO] 108 62000 1 2 F on _ITV_1219 164 | [2018-04-11T07:09:35Z, INFO] 108 63000 2 2 on _ITV_2605 165 | [2018-04-11T07:09:35Z, INFO] 108 64000 180 2 F on _ITV_1745 166 | [2018-04-11T07:09:35Z, INFO] 108 65000 1 2 on _ITV_487 167 | [2018-04-11T07:09:35Z, INFO] 108 45000 2460 1 F on _ITV_44 168 | [2018-04-11T07:09:36Z, INFO] 108 66000 2 2 on _ITV_889 169 | [2018-04-11T07:09:36Z, INFO] 108 67000 15 2 on _ITV_2176 170 | [2018-04-11T07:09:36Z, INFO] 108 68000 2 2 F on _ITV_2161 171 | [2018-04-11T07:09:36Z, INFO] 108 69000 2 2 F on _ITV_2198 172 | [2018-04-11T07:09:36Z, INFO] ! Time = 16.47s, Average fail depth = 180, Memory usage = 72.1 MB 173 | [2018-04-11T07:09:36Z, INFO] ! Current bound is 100 (gap is 7.41%) 174 | [2018-04-11T07:09:36Z, INFO] ! Best Branches Non-fixed W Branch decision 175 | [2018-04-11T07:09:36Z, INFO] 108 70000 2 2 F on _ITV_1757 176 | [2018-04-11T07:09:36Z, INFO] 108 71000 2 2 F on _ITV_2364 177 | [2018-04-11T07:09:36Z, INFO] 108 46000 2460 1 F on _ITV_12 178 | [2018-04-11T07:09:36Z, INFO] 108 72000 1 2 F on _ITV_3066 179 | [2018-04-11T07:09:36Z, INFO] 108 73000 2 2 on _ITV_1645 180 | [2018-04-11T07:09:36Z, INFO] 108 74000 69 2 on _ITV_938 181 | [2018-04-11T07:09:36Z, INFO] 108 75000 1 2 on _ITV_3296 182 | [2018-04-11T07:09:36Z, INFO] 108 76000 75 2 F on _ITV_1917 183 | [2018-04-11T07:09:36Z, INFO] 108 77000 2 2 on _ITV_2647 184 | [2018-04-11T07:09:36Z, INFO] 108 47000 437 1 on _ITV_18 185 | [2018-04-11T07:09:36Z, INFO] 108 48000 309 1 on _ITV_2565 186 | [2018-04-11T07:09:37Z, INFO] 108 78000 1 2 on _ITV_3238 187 | [2018-04-11T07:09:37Z, INFO] 108 79000 2 2 on _ITV_781 188 | [2018-04-11T07:09:37Z, INFO] 108 49000 2 1 F on _ITV_951 189 | [2018-04-11T07:09:37Z, INFO] 108 80000 1 2 on _ITV_46 190 | [2018-04-11T07:09:37Z, INFO] 108 81000 808 2 on _ITV_338 191 | [2018-04-11T07:09:37Z, INFO] 108 82000 1 2 F on _ITV_1505 192 | [2018-04-11T07:09:37Z, INFO] 108 83000 2 2 F on _ITV_107 193 | [2018-04-11T07:09:37Z, INFO] 108 50000 2 1 on _ITV_1199 194 | [2018-04-11T07:09:37Z, INFO] 108 51000 2 1 F on _ITV_1421 195 | [2018-04-11T07:09:37Z, INFO] ! Time = 18.40s, Average fail depth = 151, Memory usage = 71.2 MB 196 | [2018-04-11T07:09:37Z, INFO] ! Current bound is 100 (gap is 7.41%) 197 | [2018-04-11T07:09:37Z, INFO] ! Best Branches Non-fixed W Branch decision 198 | [2018-04-11T07:09:37Z, INFO] 108 52000 2 1 on _ITV_121 199 | [2018-04-11T07:09:39Z, INFO] 108 84000 2 2 on _ITV_1661 200 | [2018-04-11T07:09:39Z, INFO] 108 85000 1 2 on _ITV_155 201 | [2018-04-11T07:09:39Z, INFO] 108 53000 2 1 on _ITV_3057 202 | [2018-04-11T07:09:39Z, INFO] 108 54000 2 1 F on _ITV_1505 203 | [2018-04-11T07:09:39Z, INFO] 108 55000 2 1 F on _ITV_46 204 | [2018-04-11T07:09:39Z, INFO] 108 86000 1 2 on _ITV_134 205 | [2018-04-11T07:09:39Z, INFO] ! ---------------------------------------------------------------------------- 206 | [2018-04-11T07:09:39Z, INFO] ! Search terminated by limit, 3 solutions found. 207 | [2018-04-11T07:09:39Z, INFO] ! Best objective : 108 (gap is 7.41%) 208 | [2018-04-11T07:09:39Z, INFO] ! Best bound : 100 209 | [2018-04-11T07:09:39Z, INFO] ! Number of branches : 141000 210 | [2018-04-11T07:09:39Z, INFO] ! Number of fails : 59053 211 | [2018-04-11T07:09:39Z, INFO] ! Total memory usage : 72.7 MB (71.3 MB CP Optimizer + 1.3 MB Concert) 212 | [2018-04-11T07:09:39Z, INFO] ! Time spent in solve : 20.04s (19.77s engine + 0.27s extraction) 213 | [2018-04-11T07:09:39Z, INFO] ! Search speed (br. / s) : 7132.0 214 | [2018-04-11T07:09:39Z, INFO] ! ---------------------------------------------------------------------------- 215 | [2018-04-11T07:09:39Z, INFO] solve + export of all intermediate solutions done in 20.621352911 secs 216 | -------------------------------------------------------------------------------- /decision-optimization/TechnicianDispatching/.scenarios/Scenario 1/Technician_to_operation_assignments_report.csv: -------------------------------------------------------------------------------- 1 | O1017,Tech17,5," 14/10/2017",475,1055,1970/01/01 04:45:00,1970/01/01 10:55:00,0,14/10/2017 04:45,14/10/2017 10:55,L0,S0,Tech17,start,S3,2018/04/11 00:00:00,5.0,2018/04/11 00:05:00,O122,1 2 | O1007,Tech7,5," 14/10/2017",475,1055,1970/01/01 04:45:00,1970/01/01 10:55:00,0,14/10/2017 04:45,14/10/2017 10:55,L0,S0,Tech7,start,S3,2018/04/11 00:00:00,5.0,2018/04/11 00:05:00,O445,1 3 | O1014,Tech14,5," 14/10/2017",475,1055,1970/01/01 04:45:00,1970/01/01 10:55:00,0,14/10/2017 04:45,14/10/2017 10:55,L0,S0,Tech14,start,S3,2018/04/11 00:00:00,5.0,2018/04/11 00:05:00,O511,1 4 | O1008,Tech8,5," 14/10/2017",475,1055,1970/01/01 04:45:00,1970/01/01 10:55:00,0,14/10/2017 04:45,14/10/2017 10:55,L0,S0,Tech8,start,S3,2018/04/11 00:00:00,5.0,2018/04/11 00:05:00,O334,1 5 | O1016,Tech16,5," 14/10/2017",475,1055,1970/01/01 04:45:00,1970/01/01 10:55:00,0,14/10/2017 04:45,14/10/2017 10:55,L0,S0,Tech16,start,S3,2018/04/11 00:00:00,5.0,2018/04/11 00:05:00,O186,1 6 | O1015,Tech15,5," 14/10/2017",475,1055,1970/01/01 04:45:00,1970/01/01 10:55:00,0,14/10/2017 04:45,14/10/2017 10:55,L0,S0,Tech15,start,S3,2018/04/11 00:00:00,5.0,2018/04/11 00:05:00,O222,1 7 | O1009,Tech9,5," 14/10/2017",475,1055,1970/01/01 04:45:00,1970/01/01 10:55:00,0,14/10/2017 04:45,14/10/2017 10:55,L0,S0,Tech9,start,S3,2018/04/11 00:00:00,5.0,2018/04/11 00:05:00,O328,1 8 | O1011,Tech11,5," 14/10/2017",475,1055,1970/01/01 04:45:00,1970/01/01 10:55:00,0,14/10/2017 04:45,14/10/2017 10:55,L0,S0,Tech11,start,S3,2018/04/11 00:00:00,5.0,2018/04/11 00:05:00,O26,1 9 | O1005,Tech5,5," 14/10/2017",475,1055,1970/01/01 04:45:00,1970/01/01 10:55:00,0,14/10/2017 04:45,14/10/2017 10:55,L0,S0,Tech5,start,S3,2018/04/11 00:00:00,5.0,2018/04/11 00:05:00,O430,1 10 | O1010,Tech10,5," 14/10/2017",475,1055,1970/01/01 04:45:00,1970/01/01 10:55:00,0,14/10/2017 04:45,14/10/2017 10:55,L0,S0,Tech10,start,S3,2018/04/11 00:00:00,5.0,2018/04/11 00:05:00,O116,1 11 | O1012,Tech12,5," 14/10/2017",475,1055,1970/01/01 04:45:00,1970/01/01 10:55:00,0,14/10/2017 04:45,14/10/2017 10:55,L0,S0,Tech12,start,S3,2018/04/11 00:00:00,5.0,2018/04/11 00:05:00,O227,1 12 | O1001,Tech1,5," 14/10/2017",475,1055,1970/01/01 04:45:00,1970/01/01 10:55:00,0,14/10/2017 04:45,14/10/2017 10:55,L0,S0,Tech1,start,S3,2018/04/11 00:00:00,5.0,2018/04/11 00:05:00,O375,1 13 | O1003,Tech3,5," 14/10/2017",475,1055,1970/01/01 04:45:00,1970/01/01 10:55:00,0,14/10/2017 04:45,14/10/2017 10:55,L0,S0,Tech3,start,S3,2018/04/11 00:00:00,5.0,2018/04/11 00:05:00,O128,1 14 | O1018,Tech18,5," 14/10/2017",475,1055,1970/01/01 04:45:00,1970/01/01 10:55:00,0,14/10/2017 04:45,14/10/2017 10:55,L0,S0,Tech18,start,S3,2018/04/11 00:00:00,5.0,2018/04/11 00:05:00,O365,1 15 | O1002,Tech2,5," 14/10/2017",475,1055,1970/01/01 04:45:00,1970/01/01 10:55:00,0,14/10/2017 04:45,14/10/2017 10:55,L0,S0,Tech2,start,S3,2018/04/11 00:00:00,5.0,2018/04/11 00:05:00,O141,1 16 | O1013,Tech13,5," 14/10/2017",475,1055,1970/01/01 04:45:00,1970/01/01 10:55:00,0,14/10/2017 04:45,14/10/2017 10:55,L0,S0,Tech13,start,S3,2018/04/11 00:00:00,5.0,2018/04/11 00:05:00,O371,1 17 | O1006,Tech6,5," 14/10/2017",475,1055,1970/01/01 04:45:00,1970/01/01 10:55:00,0,14/10/2017 04:45,14/10/2017 10:55,L0,S0,Tech6,start,S3,2018/04/11 00:00:00,5.0,2018/04/11 00:05:00,O162,1 18 | O1019,Tech19,5," 14/10/2017",475,1055,1970/01/01 04:45:00,1970/01/01 10:55:00,0,14/10/2017 04:45,14/10/2017 10:55,L0,S0,Tech19,start,S3,2018/04/11 00:00:00,5.0,2018/04/11 00:05:00,O483,1 19 | O1004,Tech4,5," 14/10/2017",475,1055,1970/01/01 04:45:00,1970/01/01 10:55:00,0,14/10/2017 04:45,14/10/2017 10:55,L0,S0,Tech4,start,S3,2018/04/11 00:00:00,5.0,2018/04/11 00:05:00,O82,1 20 | O1020,Tech20,5," 14/10/2017",475,1055,1970/01/01 04:45:00,1970/01/01 10:55:00,0,14/10/2017 04:45,14/10/2017 10:55,L0,S0,Tech20,start,S3,2018/04/11 00:00:00,5.0,2018/04/11 00:05:00,O299,1 21 | O82,Tech4,8," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L82,S1,,customer,S3,2018/04/11 00:05:00,8.0,2018/04/11 00:13:00,O139,2 22 | O483,Tech19,8," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L483,S1,,customer,S3,2018/04/11 00:05:00,8.0,2018/04/11 00:13:00,O560,2 23 | O141,Tech2,10," 14/10/2017",480,600,1970/01/01 04:30:00,1970/01/01 06:00:00,100000,14/10/2017 04:30,14/10/2017 06:00,L141,S1,,customer,S3,2018/04/11 00:05:00,10.0,2018/04/11 00:15:00,O431,2 24 | O186,Tech16,10," 14/10/2017",810,1050,1970/01/01 08:10:00,1970/01/01 10:50:00,100000,14/10/2017 08:10,14/10/2017 10:50,L186,S1,,customer,S3,2018/04/11 00:05:00,10.0,2018/04/11 00:15:00,O412,2 25 | O122,Tech17,10," 14/10/2017",810,930,1970/01/01 08:10:00,1970/01/01 09:30:00,100000,14/10/2017 08:10,14/10/2017 09:30,L122,S1,,customer,S3,2018/04/11 00:05:00,10.0,2018/04/11 00:15:00,O178,2 26 | O222,Tech15,10," 14/10/2017",810,1050,1970/01/01 08:10:00,1970/01/01 10:50:00,100000,14/10/2017 08:10,14/10/2017 10:50,L222,S1,,customer,S3,2018/04/11 00:05:00,10.0,2018/04/11 00:15:00,O151,2 27 | O26,Tech11,10," 14/10/2017",810,930,1970/01/01 08:10:00,1970/01/01 09:30:00,100000,14/10/2017 08:10,14/10/2017 09:30,L26,S1,,customer,S3,2018/04/11 00:05:00,10.0,2018/04/11 00:15:00,O469,2 28 | O299,Tech20,12," 14/10/2017",810,1050,1970/01/01 08:10:00,1970/01/01 10:50:00,100000,14/10/2017 08:10,14/10/2017 10:50,L299,S1,,customer,S3,2018/04/11 00:05:00,12.0,2018/04/11 00:17:00,O496,2 29 | O375,Tech1,12," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L375,S2,,customer,S3,2018/04/11 00:05:00,12.0,2018/04/11 00:17:00,O159,2 30 | O227,Tech12,12," 14/10/2017",810,1050,1970/01/01 08:10:00,1970/01/01 10:50:00,100000,14/10/2017 08:10,14/10/2017 10:50,L227,S1,,customer,S3,2018/04/11 00:05:00,12.0,2018/04/11 00:17:00,O387,2 31 | O430,Tech5,12," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L430,S1,,customer,S3,2018/04/11 00:05:00,12.0,2018/04/11 00:17:00,O76,2 32 | O328,Tech9,12," 14/10/2017",480,600,1970/01/01 04:30:00,1970/01/01 06:00:00,100000,14/10/2017 04:30,14/10/2017 06:00,L328,S2,,customer,S3,2018/04/11 00:05:00,12.0,2018/04/11 00:17:00,O444,2 33 | O334,Tech8,12," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L334,S2,,customer,S3,2018/04/11 00:05:00,12.0,2018/04/11 00:17:00,O385,2 34 | O162,Tech6,12," 14/10/2017",810,1050,1970/01/01 08:10:00,1970/01/01 10:50:00,100000,14/10/2017 08:10,14/10/2017 10:50,L162,S1,,customer,S3,2018/04/11 00:05:00,12.0,2018/04/11 00:17:00,O370,2 35 | O371,Tech13,15," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L371,S2,,customer,S3,2018/04/11 00:05:00,15.0,2018/04/11 00:20:00,O392,2 36 | O128,Tech3,15," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L128,S1,,customer,S3,2018/04/11 00:05:00,15.0,2018/04/11 00:20:00,O252,2 37 | O511,Tech14,20," 14/10/2017",810,1050,1970/01/01 08:10:00,1970/01/01 10:50:00,100000,14/10/2017 08:10,14/10/2017 10:50,L511,S1,,customer,S3,2018/04/11 00:05:00,20.0,2018/04/11 00:25:00,O102,2 38 | O365,Tech18,22," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L365,S2,,customer,S3,2018/04/11 00:05:00,22.0,2018/04/11 00:27:00,O179,2 39 | O116,Tech10,30," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L116,S1,,customer,S3,2018/04/11 00:05:00,30.0,2018/04/11 00:35:00,O168,2 40 | O445,Tech7,30," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L445,S1,,customer,S3,2018/04/11 00:05:00,30.0,2018/04/11 00:35:00,O157,2 41 | O139,Tech4,90," 14/10/2017",810,1050,1970/01/01 08:10:00,1970/01/01 10:50:00,100000,14/10/2017 08:10,14/10/2017 10:50,L139,S1,,customer,S3,2018/04/11 00:13:00,90.0,2018/04/11 01:43:00,O2004,3 42 | O560,Tech19,90," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L560,S1,,customer,S3,2018/04/11 00:13:00,90.0,2018/04/11 01:43:00,O2019,3 43 | O151,Tech15,12," 14/10/2017",480,600,1970/01/01 04:30:00,1970/01/01 06:00:00,100000,14/10/2017 04:30,14/10/2017 06:00,L151,S1,,customer,S3,2018/04/11 00:15:00,12.0,2018/04/11 00:27:00,O171,3 44 | O469,Tech11,15," 14/10/2017",810,930,1970/01/01 08:10:00,1970/01/01 09:30:00,100000,14/10/2017 08:10,14/10/2017 09:30,L469,S1,,customer,S3,2018/04/11 00:15:00,15.0,2018/04/11 00:30:00,O173,3 45 | O431,Tech2,20," 14/10/2017",810,930,1970/01/01 08:10:00,1970/01/01 09:30:00,100000,14/10/2017 08:10,14/10/2017 09:30,L431,S1,,customer,S3,2018/04/11 00:15:00,20.0,2018/04/11 00:35:00,O540,3 46 | O178,Tech17,20," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L178,S1,,customer,S3,2018/04/11 00:15:00,20.0,2018/04/11 00:35:00,O185,3 47 | O412,Tech16,22," 14/10/2017",810,1050,1970/01/01 08:10:00,1970/01/01 10:50:00,100000,14/10/2017 08:10,14/10/2017 10:50,L412,S1,,customer,S3,2018/04/11 00:15:00,22.0,2018/04/11 00:37:00,O309,3 48 | O76,Tech5,8," 14/10/2017",810,930,1970/01/01 08:10:00,1970/01/01 09:30:00,100000,14/10/2017 08:10,14/10/2017 09:30,L76,S1,,customer,S3,2018/04/11 00:17:00,8.0,2018/04/11 00:25:00,O271,3 49 | O387,Tech12,8," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L387,S1,,customer,S3,2018/04/11 00:17:00,8.0,2018/04/11 00:25:00,O313,3 50 | O159,Tech1,10," 14/10/2017",600,720,1970/01/01 06:00:00,1970/01/01 07:20:00,100000,14/10/2017 06:00,14/10/2017 07:20,L159,S1,,customer,S3,2018/04/11 00:17:00,10.0,2018/04/11 00:27:00,O70,3 51 | O370,Tech6,12," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L370,S2,,customer,S3,2018/04/11 00:17:00,12.0,2018/04/11 00:29:00,O382,3 52 | O444,Tech9,15," 14/10/2017",600,720,1970/01/01 06:00:00,1970/01/01 07:20:00,100000,14/10/2017 06:00,14/10/2017 07:20,L444,S1,,customer,S3,2018/04/11 00:17:00,15.0,2018/04/11 00:32:00,O315,3 53 | O496,Tech20,15," 14/10/2017",810,1050,1970/01/01 08:10:00,1970/01/01 10:50:00,100000,14/10/2017 08:10,14/10/2017 10:50,L496,S1,,customer,S3,2018/04/11 00:17:00,15.0,2018/04/11 00:32:00,O145,3 54 | O385,Tech8,20," 14/10/2017",810,1050,1970/01/01 08:10:00,1970/01/01 10:50:00,100000,14/10/2017 08:10,14/10/2017 10:50,L385,S1,,customer,S3,2018/04/11 00:17:00,20.0,2018/04/11 00:37:00,O203,3 55 | O392,Tech13,12," 14/10/2017",600,720,1970/01/01 06:00:00,1970/01/01 07:20:00,100000,14/10/2017 06:00,14/10/2017 07:20,L392,S1,,customer,S3,2018/04/11 00:20:00,12.0,2018/04/11 00:32:00,O349,3 56 | O252,Tech3,12," 14/10/2017",810,1050,1970/01/01 08:10:00,1970/01/01 10:50:00,100000,14/10/2017 08:10,14/10/2017 10:50,L252,S1,,customer,S3,2018/04/11 00:20:00,12.0,2018/04/11 00:32:00,O249,3 57 | O102,Tech14,10," 14/10/2017",810,1050,1970/01/01 08:10:00,1970/01/01 10:50:00,100000,14/10/2017 08:10,14/10/2017 10:50,L102,S1,,customer,S3,2018/04/11 00:25:00,10.0,2018/04/11 00:35:00,O62,3 58 | O313,Tech12,12," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L313,S2,,customer,S3,2018/04/11 00:25:00,12.0,2018/04/11 00:37:00,O355,4 59 | O271,Tech5,20," 14/10/2017",600,720,1970/01/01 06:00:00,1970/01/01 07:20:00,100000,14/10/2017 06:00,14/10/2017 07:20,L271,S1,,customer,S3,2018/04/11 00:25:00,20.0,2018/04/11 00:45:00,O93,4 60 | O171,Tech15,12," 14/10/2017",810,930,1970/01/01 08:10:00,1970/01/01 09:30:00,100000,14/10/2017 08:10,14/10/2017 09:30,L171,S1,,customer,S3,2018/04/11 00:27:00,12.0,2018/04/11 00:39:00,O80,4 61 | O179,Tech18,20," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L179,S1,,customer,S3,2018/04/11 00:27:00,20.0,2018/04/11 00:47:00,O103,3 62 | O70,Tech1,30," 14/10/2017",600,720,1970/01/01 06:00:00,1970/01/01 07:20:00,100000,14/10/2017 06:00,14/10/2017 07:20,L70,S1,,customer,S3,2018/04/11 00:27:00,30.0,2018/04/11 00:57:00,O361,4 63 | O382,Tech6,8," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L382,S1,,customer,S3,2018/04/11 00:29:00,8.0,2018/04/11 00:37:00,O191,4 64 | O173,Tech11,45," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L173,S1,,customer,S3,2018/04/11 00:30:00,45.0,2018/04/11 01:15:00,O154,4 65 | O145,Tech20,8," 14/10/2017",810,1050,1970/01/01 08:10:00,1970/01/01 10:50:00,100000,14/10/2017 08:10,14/10/2017 10:50,L145,S1,,customer,S3,2018/04/11 00:32:00,8.0,2018/04/11 00:40:00,O134,4 66 | O249,Tech3,12," 14/10/2017",810,1050,1970/01/01 08:10:00,1970/01/01 10:50:00,100000,14/10/2017 08:10,14/10/2017 10:50,L249,S1,,customer,S3,2018/04/11 00:32:00,12.0,2018/04/11 00:44:00,O292,4 67 | O315,Tech9,12," 14/10/2017",810,1050,1970/01/01 08:10:00,1970/01/01 10:50:00,100000,14/10/2017 08:10,14/10/2017 10:50,L315,S2,,customer,S3,2018/04/11 00:32:00,12.0,2018/04/11 00:44:00,O57,4 68 | O349,Tech13,15," 14/10/2017",810,1050,1970/01/01 08:10:00,1970/01/01 10:50:00,100000,14/10/2017 08:10,14/10/2017 10:50,L349,S2,,customer,S3,2018/04/11 00:32:00,15.0,2018/04/11 00:47:00,O554,4 69 | O185,Tech17,10," 14/10/2017",810,1050,1970/01/01 08:10:00,1970/01/01 10:50:00,100000,14/10/2017 08:10,14/10/2017 10:50,L185,S1,,customer,S3,2018/04/11 00:35:00,10.0,2018/04/11 00:45:00,O495,4 70 | O157,Tech7,11," 14/10/2017",810,1050,1970/01/01 08:10:00,1970/01/01 10:50:00,100000,14/10/2017 08:10,14/10/2017 10:50,L157,S1,,customer,S3,2018/04/11 00:35:00,11.0,2018/04/11 00:46:00,O135,3 71 | O62,Tech14,15," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L62,S1,,customer,S3,2018/04/11 00:35:00,15.0,2018/04/11 00:50:00,O411,4 72 | O168,Tech10,15," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L168,S1,,customer,S3,2018/04/11 00:35:00,15.0,2018/04/11 00:50:00,O393,3 73 | O540,Tech2,15," 14/10/2017",810,1050,1970/01/01 08:10:00,1970/01/01 10:50:00,100000,14/10/2017 08:10,14/10/2017 10:50,L540,S2,,customer,S3,2018/04/11 00:35:00,15.0,2018/04/11 00:50:00,O146,4 74 | O309,Tech16,8," 14/10/2017",810,1050,1970/01/01 08:10:00,1970/01/01 10:50:00,100000,14/10/2017 08:10,14/10/2017 10:50,L309,S2,,customer,S3,2018/04/11 00:37:00,8.0,2018/04/11 00:45:00,O321,4 75 | O203,Tech8,12," 14/10/2017",810,930,1970/01/01 08:10:00,1970/01/01 09:30:00,100000,14/10/2017 08:10,14/10/2017 09:30,L203,S1,,customer,S3,2018/04/11 00:37:00,12.0,2018/04/11 00:49:00,O323,4 76 | O355,Tech12,12," 14/10/2017",810,1050,1970/01/01 08:10:00,1970/01/01 10:50:00,100000,14/10/2017 08:10,14/10/2017 10:50,L355,S2,,customer,S3,2018/04/11 00:37:00,12.0,2018/04/11 00:49:00,O333,5 77 | O191,Tech6,20," 14/10/2017",810,1050,1970/01/01 08:10:00,1970/01/01 10:50:00,100000,14/10/2017 08:10,14/10/2017 10:50,L191,S1,,customer,S3,2018/04/11 00:37:00,20.0,2018/04/11 00:57:00,O206,5 78 | O80,Tech15,8," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L80,S1,,customer,S3,2018/04/11 00:39:00,8.0,2018/04/11 00:47:00,O247,5 79 | O134,Tech20,12," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L134,S1,,customer,S3,2018/04/11 00:40:00,12.0,2018/04/11 00:52:00,O155,5 80 | O57,Tech9,12," 14/10/2017",810,1050,1970/01/01 08:10:00,1970/01/01 10:50:00,100000,14/10/2017 08:10,14/10/2017 10:50,L57,S1,,customer,S3,2018/04/11 00:44:00,12.0,2018/04/11 00:56:00,O530,5 81 | O292,Tech3,25," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L292,S1,,customer,S3,2018/04/11 00:44:00,25.0,2018/04/11 01:09:00,O418,5 82 | O495,Tech17,8," 14/10/2017",810,1050,1970/01/01 08:10:00,1970/01/01 10:50:00,100000,14/10/2017 08:10,14/10/2017 10:50,L495,S1,,customer,S3,2018/04/11 00:45:00,8.0,2018/04/11 00:53:00,O63,5 83 | O93,Tech5,15," 14/10/2017",810,1050,1970/01/01 08:10:00,1970/01/01 10:50:00,100000,14/10/2017 08:10,14/10/2017 10:50,L93,S1,,customer,S3,2018/04/11 00:45:00,15.0,2018/04/11 01:00:00,O213,5 84 | O321,Tech16,15," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L321,S2,,customer,S3,2018/04/11 00:45:00,15.0,2018/04/11 01:00:00,O77,5 85 | O135,Tech7,15," 14/10/2017",810,1050,1970/01/01 08:10:00,1970/01/01 10:50:00,100000,14/10/2017 08:10,14/10/2017 10:50,L135,S1,,customer,S3,2018/04/11 00:46:00,15.0,2018/04/11 01:01:00,O81,4 86 | O103,Tech18,8," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L103,S1,,customer,S3,2018/04/11 00:47:00,8.0,2018/04/11 00:55:00,O310,4 87 | O247,Tech15,12," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L247,S1,,customer,S3,2018/04/11 00:47:00,12.0,2018/04/11 00:59:00,O543,6 88 | O554,Tech13,22," 14/10/2017",810,1050,1970/01/01 08:10:00,1970/01/01 10:50:00,100000,14/10/2017 08:10,14/10/2017 10:50,L554,S1,,customer,S3,2018/04/11 00:47:00,22.0,2018/04/11 01:09:00,O99,5 89 | O323,Tech8,12," 14/10/2017",480,600,1970/01/01 04:30:00,1970/01/01 06:00:00,100000,14/10/2017 04:30,14/10/2017 06:00,L323,S2,,customer,S3,2018/04/11 00:49:00,12.0,2018/04/11 01:01:00,O106,5 90 | O333,Tech12,15," 14/10/2017",810,930,1970/01/01 08:10:00,1970/01/01 09:30:00,100000,14/10/2017 08:10,14/10/2017 09:30,L333,S2,,customer,S3,2018/04/11 00:49:00,15.0,2018/04/11 01:04:00,O423,6 91 | O393,Tech10,8," 14/10/2017",480,600,1970/01/01 04:30:00,1970/01/01 06:00:00,100000,14/10/2017 04:30,14/10/2017 06:00,L393,S1,,customer,S3,2018/04/11 00:50:00,8.0,2018/04/11 00:58:00,O38,4 92 | O411,Tech14,8," 14/10/2017",810,1050,1970/01/01 08:10:00,1970/01/01 10:50:00,100000,14/10/2017 08:10,14/10/2017 10:50,L411,S1,,customer,S3,2018/04/11 00:50:00,8.0,2018/04/11 00:58:00,O229,5 93 | O146,Tech2,12," 14/10/2017",600,720,1970/01/01 06:00:00,1970/01/01 07:20:00,100000,14/10/2017 06:00,14/10/2017 07:20,L146,S1,,customer,S3,2018/04/11 00:50:00,12.0,2018/04/11 01:02:00,O527,5 94 | O155,Tech20,20," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L155,S1,,customer,S3,2018/04/11 00:52:00,20.0,2018/04/11 01:12:00,O338,6 95 | O63,Tech17,12," 14/10/2017",810,1050,1970/01/01 08:10:00,1970/01/01 10:50:00,100000,14/10/2017 08:10,14/10/2017 10:50,L63,S1,,customer,S3,2018/04/11 00:53:00,12.0,2018/04/11 01:05:00,O156,6 96 | O310,Tech18,12," 14/10/2017",810,1050,1970/01/01 08:10:00,1970/01/01 10:50:00,100000,14/10/2017 08:10,14/10/2017 10:50,L310,S2,,customer,S3,2018/04/11 00:55:00,12.0,2018/04/11 01:07:00,O153,5 97 | O530,Tech9,15," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L530,S2,,customer,S3,2018/04/11 00:56:00,15.0,2018/04/11 01:11:00,O556,6 98 | O361,Tech1,22," 14/10/2017",810,1050,1970/01/01 08:10:00,1970/01/01 10:50:00,100000,14/10/2017 08:10,14/10/2017 10:50,L361,S2,,customer,S3,2018/04/11 00:57:00,22.0,2018/04/11 01:19:00,O273,5 99 | O206,Tech6,30," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L206,S1,,customer,S3,2018/04/11 00:57:00,30.0,2018/04/11 01:27:00,O79,6 100 | O38,Tech10,15," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L38,S1,,customer,S3,2018/04/11 00:58:00,15.0,2018/04/11 01:13:00,O493,5 101 | O229,Tech14,30," 14/10/2017",810,1050,1970/01/01 08:10:00,1970/01/01 10:50:00,100000,14/10/2017 08:10,14/10/2017 10:50,L229,S1,,customer,S3,2018/04/11 00:58:00,30.0,2018/04/11 01:28:00,O262,6 102 | O543,Tech15,15," 14/10/2017",810,1050,1970/01/01 08:10:00,1970/01/01 10:50:00,100000,14/10/2017 08:10,14/10/2017 10:50,L543,S2,,customer,S3,2018/04/11 00:59:00,15.0,2018/04/11 01:14:00,O33,7 103 | O77,Tech16,10," 14/10/2017",810,1050,1970/01/01 08:10:00,1970/01/01 10:50:00,100000,14/10/2017 08:10,14/10/2017 10:50,L77,S1,,customer,S3,2018/04/11 01:00:00,10.0,2018/04/11 01:10:00,O274,6 104 | O213,Tech5,12," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L213,S1,,customer,S3,2018/04/11 01:00:00,12.0,2018/04/11 01:12:00,O75,6 105 | O81,Tech7,8," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L81,S1,,customer,S3,2018/04/11 01:01:00,8.0,2018/04/11 01:09:00,O408,5 106 | O106,Tech8,8," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L106,S1,,customer,S3,2018/04/11 01:01:00,8.0,2018/04/11 01:09:00,O78,6 107 | O527,Tech2,12," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L527,S2,,customer,S3,2018/04/11 01:02:00,12.0,2018/04/11 01:14:00,O150,6 108 | O423,Tech12,15," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L423,S1,,customer,S3,2018/04/11 01:04:00,15.0,2018/04/11 01:19:00,O7,7 109 | O156,Tech17,11," 14/10/2017",810,1050,1970/01/01 08:10:00,1970/01/01 10:50:00,100000,14/10/2017 08:10,14/10/2017 10:50,L156,S1,,customer,S3,2018/04/11 01:05:00,11.0,2018/04/11 01:16:00,O138,7 110 | O153,Tech18,11," 14/10/2017",810,1050,1970/01/01 08:10:00,1970/01/01 10:50:00,100000,14/10/2017 08:10,14/10/2017 10:50,L153,S1,,customer,S3,2018/04/11 01:07:00,11.0,2018/04/11 01:18:00,O91,6 111 | O408,Tech7,8," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L408,S1,,customer,S3,2018/04/11 01:09:00,8.0,2018/04/11 01:17:00,O231,6 112 | O78,Tech8,11," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L78,S1,,customer,S3,2018/04/11 01:09:00,11.0,2018/04/11 01:20:00,O36,7 113 | O99,Tech13,12," 14/10/2017",600,720,1970/01/01 06:00:00,1970/01/01 07:20:00,100000,14/10/2017 06:00,14/10/2017 07:20,L99,S1,,customer,S3,2018/04/11 01:09:00,12.0,2018/04/11 01:21:00,O147,6 114 | O418,Tech3,20," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L418,S1,,customer,S3,2018/04/11 01:09:00,20.0,2018/04/11 01:29:00,O336,6 115 | O274,Tech16,15," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L274,S1,,customer,S3,2018/04/11 01:10:00,15.0,2018/04/11 01:25:00,O529,7 116 | O556,Tech9,12," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L556,S1,,customer,S3,2018/04/11 01:11:00,12.0,2018/04/11 01:23:00,O246,7 117 | O338,Tech20,15," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L338,S2,,customer,S3,2018/04/11 01:12:00,15.0,2018/04/11 01:27:00,O18,7 118 | O75,Tech5,30," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L75,S1,,customer,S3,2018/04/11 01:12:00,30.0,2018/04/11 01:42:00,O2005,7 119 | O493,Tech10,30," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L493,S1,,customer,S3,2018/04/11 01:13:00,30.0,2018/04/11 01:43:00,O2010,6 120 | O33,Tech15,8," 14/10/2017",600,720,1970/01/01 06:00:00,1970/01/01 07:20:00,100000,14/10/2017 06:00,14/10/2017 07:20,L33,S1,,customer,S3,2018/04/11 01:14:00,8.0,2018/04/11 01:22:00,O402,8 121 | O150,Tech2,15," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L150,S1,,customer,S3,2018/04/11 01:14:00,15.0,2018/04/11 01:29:00,O113,7 122 | O154,Tech11,11," 14/10/2017",810,1050,1970/01/01 08:10:00,1970/01/01 10:50:00,100000,14/10/2017 08:10,14/10/2017 10:50,L154,S1,,customer,S3,2018/04/11 01:15:00,11.0,2018/04/11 01:26:00,O437,5 123 | O138,Tech17,22," 14/10/2017",810,1050,1970/01/01 08:10:00,1970/01/01 10:50:00,100000,14/10/2017 08:10,14/10/2017 10:50,L138,S1,,customer,S3,2018/04/11 01:16:00,22.0,2018/04/11 01:38:00,O2017,8 124 | O231,Tech7,25," 14/10/2017",810,1050,1970/01/01 08:10:00,1970/01/01 10:50:00,100000,14/10/2017 08:10,14/10/2017 10:50,L231,S1,,customer,S3,2018/04/11 01:17:00,25.0,2018/04/11 01:42:00,O2007,7 125 | O91,Tech18,25," 14/10/2017",810,1050,1970/01/01 08:10:00,1970/01/01 10:50:00,100000,14/10/2017 08:10,14/10/2017 10:50,L91,S1,,customer,S3,2018/04/11 01:18:00,25.0,2018/04/11 01:43:00,O2018,7 126 | O273,Tech1,20," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L273,S1,,customer,S3,2018/04/11 01:19:00,20.0,2018/04/11 01:39:00,O2001,6 127 | O7,Tech12,20," 14/10/2017",930,1050,1970/01/01 09:30:00,1970/01/01 10:50:00,100000,14/10/2017 09:30,14/10/2017 10:50,L7,S1,,customer,S3,2018/04/11 01:19:00,20.0,2018/04/11 01:39:00,O2012,8 128 | O36,Tech8,12," 14/10/2017",600,720,1970/01/01 06:00:00,1970/01/01 07:20:00,100000,14/10/2017 06:00,14/10/2017 07:20,L36,S1,,customer,S3,2018/04/11 01:20:00,12.0,2018/04/11 01:32:00,O2008,8 129 | O147,Tech13,22," 14/10/2017",810,1050,1970/01/01 08:10:00,1970/01/01 10:50:00,100000,14/10/2017 08:10,14/10/2017 10:50,L147,S1,,customer,S3,2018/04/11 01:21:00,22.0,2018/04/11 01:43:00,O2013,7 130 | O402,Tech15,20," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L402,S1,,customer,S3,2018/04/11 01:22:00,20.0,2018/04/11 01:42:00,O2015,9 131 | O246,Tech9,12," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L246,S1,,customer,S3,2018/04/11 01:23:00,12.0,2018/04/11 01:35:00,O2009,8 132 | O529,Tech16,15," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L529,S2,,customer,S3,2018/04/11 01:25:00,15.0,2018/04/11 01:40:00,O2016,8 133 | O437,Tech11,12," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L437,S1,,customer,S3,2018/04/11 01:26:00,12.0,2018/04/11 01:38:00,O2011,6 134 | O79,Tech6,8," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L79,S1,,customer,S3,2018/04/11 01:27:00,8.0,2018/04/11 01:35:00,O2006,7 135 | O18,Tech20,12," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L18,S1,,customer,S3,2018/04/11 01:27:00,12.0,2018/04/11 01:39:00,O2020,8 136 | O262,Tech14,12," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L262,S1,,customer,S3,2018/04/11 01:28:00,12.0,2018/04/11 01:40:00,O2014,7 137 | O113,Tech2,10," 14/10/2017",480,720,1970/01/01 04:30:00,1970/01/01 07:20:00,100000,14/10/2017 04:30,14/10/2017 07:20,L113,S1,,customer,S3,2018/04/11 01:29:00,10.0,2018/04/11 01:39:00,O2002,8 138 | O336,Tech3,12," 14/10/2017",810,1050,1970/01/01 08:10:00,1970/01/01 10:50:00,100000,14/10/2017 08:10,14/10/2017 10:50,L336,S2,,customer,S3,2018/04/11 01:29:00,12.0,2018/04/11 01:41:00,O2003,7 139 | O2008,Tech8,5," 14/10/2017",700,1055,1970/01/01 07:00:00,1970/01/01 10:55:00,0,14/10/2017 07:00,14/10/2017 10:55,L0,S0,Tech8,end,S3,2018/04/11 01:32:00,5.0,2018/04/11 01:37:00,,9 140 | O2006,Tech6,5," 14/10/2017",700,1055,1970/01/01 07:00:00,1970/01/01 10:55:00,0,14/10/2017 07:00,14/10/2017 10:55,L0,S0,Tech6,end,S3,2018/04/11 01:35:00,5.0,2018/04/11 01:40:00,,8 141 | O2009,Tech9,5," 14/10/2017",700,1055,1970/01/01 07:00:00,1970/01/01 10:55:00,0,14/10/2017 07:00,14/10/2017 10:55,L0,S0,Tech9,end,S3,2018/04/11 01:35:00,5.0,2018/04/11 01:40:00,,9 142 | O2011,Tech11,5," 14/10/2017",700,1055,1970/01/01 07:00:00,1970/01/01 10:55:00,0,14/10/2017 07:00,14/10/2017 10:55,L0,S0,Tech11,end,S3,2018/04/11 01:38:00,5.0,2018/04/11 01:43:00,,7 143 | O2017,Tech17,5," 14/10/2017",700,1055,1970/01/01 07:00:00,1970/01/01 10:55:00,0,14/10/2017 07:00,14/10/2017 10:55,L0,S0,Tech17,end,S3,2018/04/11 01:38:00,5.0,2018/04/11 01:43:00,,9 144 | O2020,Tech20,5," 14/10/2017",700,1055,1970/01/01 07:00:00,1970/01/01 10:55:00,0,14/10/2017 07:00,14/10/2017 10:55,L0,S0,Tech20,end,S3,2018/04/11 01:39:00,5.0,2018/04/11 01:44:00,,9 145 | O2012,Tech12,5," 14/10/2017",700,1055,1970/01/01 07:00:00,1970/01/01 10:55:00,0,14/10/2017 07:00,14/10/2017 10:55,L0,S0,Tech12,end,S3,2018/04/11 01:39:00,5.0,2018/04/11 01:44:00,,9 146 | O2002,Tech2,5," 14/10/2017",700,1055,1970/01/01 07:00:00,1970/01/01 10:55:00,0,14/10/2017 07:00,14/10/2017 10:55,L0,S0,Tech2,end,S3,2018/04/11 01:39:00,5.0,2018/04/11 01:44:00,,9 147 | O2001,Tech1,5," 14/10/2017",700,1055,1970/01/01 07:00:00,1970/01/01 10:55:00,0,14/10/2017 07:00,14/10/2017 10:55,L0,S0,Tech1,end,S3,2018/04/11 01:39:00,5.0,2018/04/11 01:44:00,,7 148 | O2014,Tech14,5," 14/10/2017",700,1055,1970/01/01 07:00:00,1970/01/01 10:55:00,0,14/10/2017 07:00,14/10/2017 10:55,L0,S0,Tech14,end,S3,2018/04/11 01:40:00,5.0,2018/04/11 01:45:00,,8 149 | O2016,Tech16,5," 14/10/2017",700,1055,1970/01/01 07:00:00,1970/01/01 10:55:00,0,14/10/2017 07:00,14/10/2017 10:55,L0,S0,Tech16,end,S3,2018/04/11 01:40:00,5.0,2018/04/11 01:45:00,,9 150 | O2003,Tech3,5," 14/10/2017",700,1055,1970/01/01 07:00:00,1970/01/01 10:55:00,0,14/10/2017 07:00,14/10/2017 10:55,L0,S0,Tech3,end,S3,2018/04/11 01:41:00,5.0,2018/04/11 01:46:00,,8 151 | O2015,Tech15,5," 14/10/2017",700,1055,1970/01/01 07:00:00,1970/01/01 10:55:00,0,14/10/2017 07:00,14/10/2017 10:55,L0,S0,Tech15,end,S3,2018/04/11 01:42:00,5.0,2018/04/11 01:47:00,,10 152 | O2005,Tech5,5," 14/10/2017",700,1055,1970/01/01 07:00:00,1970/01/01 10:55:00,0,14/10/2017 07:00,14/10/2017 10:55,L0,S0,Tech5,end,S3,2018/04/11 01:42:00,5.0,2018/04/11 01:47:00,,8 153 | O2007,Tech7,5," 14/10/2017",700,1055,1970/01/01 07:00:00,1970/01/01 10:55:00,0,14/10/2017 07:00,14/10/2017 10:55,L0,S0,Tech7,end,S3,2018/04/11 01:42:00,5.0,2018/04/11 01:47:00,,8 154 | O2010,Tech10,5," 14/10/2017",700,1055,1970/01/01 07:00:00,1970/01/01 10:55:00,0,14/10/2017 07:00,14/10/2017 10:55,L0,S0,Tech10,end,S3,2018/04/11 01:43:00,5.0,2018/04/11 01:48:00,,7 155 | O2004,Tech4,5," 14/10/2017",700,1055,1970/01/01 07:00:00,1970/01/01 10:55:00,0,14/10/2017 07:00,14/10/2017 10:55,L0,S0,Tech4,end,S3,2018/04/11 01:43:00,5.0,2018/04/11 01:48:00,,4 156 | O2019,Tech19,5," 14/10/2017",700,1055,1970/01/01 07:00:00,1970/01/01 10:55:00,0,14/10/2017 07:00,14/10/2017 10:55,L0,S0,Tech19,end,S3,2018/04/11 01:43:00,5.0,2018/04/11 01:48:00,,4 157 | O2018,Tech18,5," 14/10/2017",700,1055,1970/01/01 07:00:00,1970/01/01 10:55:00,0,14/10/2017 07:00,14/10/2017 10:55,L0,S0,Tech18,end,S3,2018/04/11 01:43:00,5.0,2018/04/11 01:48:00,,8 158 | O2013,Tech13,5," 14/10/2017",700,1055,1970/01/01 07:00:00,1970/01/01 10:55:00,0,14/10/2017 07:00,14/10/2017 10:55,L0,S0,Tech13,end,S3,2018/04/11 01:43:00,5.0,2018/04/11 01:48:00,,8 159 | --------------------------------------------------------------------------------