@@ -13123,8 +13123,8 @@ <h1 id="Technician-Routing-and-Scheduling-Problem">Technician Routing and Schedu
13123
13123
< div class ="cell border-box-sizing text_cell rendered "> < div class ="prompt input_prompt ">
13124
13124
</ div > < div class ="inner_cell ">
13125
13125
< div class ="text_cell_render border-box-sizing rendered_html ">
13126
- < h2 id ="Objective-and-Prerequisites "> Objective and Prerequisites< a class ="anchor-link " href ="#Objective-and-Prerequisites "> ¶</ a > </ h2 > < p > In this Jupyter Notebook, you will learn how to formulate a multi-depot vehicle routing problem with time windows constraints using the Gurobi Python API. To fully understand the content of this notebook, the reader should be familiar with object-oriented-programming .</ p >
13127
- < p > This modeling example is at the intermediate level, where we assume that you know Python and are familiar with the Gurobi Python API. In addition, you have some knowledge about building mathematical optimization models.</ p >
13126
+ < h2 id ="Objective-and-Prerequisites "> Objective and Prerequisites< a class ="anchor-link " href ="#Objective-and-Prerequisites "> ¶</ a > </ h2 > < p > Try this modeling example to discover how mathematical optimization can help telecommunications firms automate and improve their technician assignment, scheduling, and routing decisions in order to ensure the highest levels of customer satisfaction .</ p >
13127
+ < p > This modeling example is at the intermediate level, where we assume that you know Python and are familiar with the Gurobi Python API. In addition, you have some knowledge about building mathematical optimization models. To fully understand the content of this notebook, you should be familiar with object-oriented-programming. </ p >
13128
13128
< p > < strong > Download the Repository</ strong > < br />
13129
13129
You can download the repository containing this and other examples by clicking < a href ="https://github.com/Gurobi/modeling-examples/archive/master.zip "> here</ a > .</ p >
13130
13130
< p > < strong > Gurobi License</ strong > < br />
@@ -14098,14 +14098,13 @@ <h2 id="Base-Scenario">Base Scenario<a class="anchor-link" href="#Base-Scenario"
14098
14098
***************************
14099
14099
14100
14100
Using license file c:\gurobi\gurobi.lic
14101
- Set parameter TokenServer to value SANTOS-SURFACE-
14102
- Warning: variable name "y[Offenburg,Freiburg im Breisgau,Albert]" has a space
14101
+ Warning: variable name "y[Loerrach,Freiburg im Breisgau,Albert]" has a space
14103
14102
Warning: constraint name "tempoDepot[Freiburg im Breisgau,Customer1]" has a space
14104
14103
Warning: to let Gurobi read it back, use rlp format
14105
14104
Gurobi Optimizer version 9.1.0 build v9.1.0rc0 (win64)
14106
14105
Thread count: 4 physical cores, 8 logical processors, using up to 8 threads
14107
14106
Optimize a model with 217 rows, 660 columns and 2329 nonzeros
14108
- Model fingerprint: 0x5802d250
14107
+ Model fingerprint: 0x0f3b53fc
14109
14108
Variable types: 30 continuous, 630 integer (630 binary)
14110
14109
Coefficient statistics:
14111
14110
Matrix range [1e+00, 8e+02]
@@ -14114,50 +14113,50 @@ <h2 id="Base-Scenario">Base Scenario<a class="anchor-link" href="#Base-Scenario"
14114
14113
RHS range [1e+00, 6e+02]
14115
14114
Found heuristic solution: objective 245830.00000
14116
14115
Presolve removed 28 rows and 188 columns
14117
- Presolve time: 0.03s
14118
- Presolved: 189 rows, 472 columns, 2130 nonzeros
14116
+ Presolve time: 0.04s
14117
+ Presolved: 189 rows, 472 columns, 2116 nonzeros
14119
14118
Variable types: 26 continuous, 446 integer (446 binary)
14120
14119
14121
- Root relaxation: objective 0.000000e+00, 142 iterations, 0.00 seconds
14120
+ Root relaxation: objective 0.000000e+00, 141 iterations, 0.00 seconds
14122
14121
14123
14122
Nodes | Current Node | Objective Bounds | Work
14124
14123
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
14125
14124
14126
14125
H 0 0 0.0000000 -256200.00 - - 0s
14127
14126
0 0 - 0 0.00000 0.00000 0.00% - 0s
14128
14127
14129
- Explored 0 nodes (384 simplex iterations) in 0.08 seconds
14128
+ Explored 0 nodes (308 simplex iterations) in 0.09 seconds
14130
14129
Thread count was 8 (of 8 available processors)
14131
14130
14132
14131
Solution count 2: 0 245830
14133
14132
14134
14133
Optimal solution found (tolerance 1.00e-04)
14135
14134
Best objective 0.000000000000e+00, best bound 0.000000000000e+00, gap 0.0000%
14136
14135
14137
- Bob assigned to Customer1 (Equipment Setup) in Mannheim. Start at t=24 .00.
14138
- Doris assigned to Customer2 (Equipment Setup) in Karlsruhe. Start at t=150 .00.
14136
+ Bob assigned to Customer1 (Equipment Setup) in Mannheim. Start at t=30 .00.
14137
+ Doris assigned to Customer2 (Equipment Setup) in Karlsruhe. Start at t=113 .00.
14139
14138
Gina assigned to Customer3 (Repair - Regular) in Baden-Baden. Start at t=67.00.
14140
14139
Gina assigned to Customer4 (Equipment Installation) in Buehl. Start at t=143.00.
14141
- Flor assigned to Customer5 (Equipment Installation) in Offenburg. Start at t=360 .00.
14142
- Doris assigned to Customer6 (Repair - Critical) in Lahr/Schwarzwald. Start at t=300 .00.
14143
- Carlos assigned to Customer7 (Inspect/Service Equipment) in Loerrach. Start at t=360 .00.
14140
+ Doris assigned to Customer5 (Equipment Installation) in Offenburg. Start at t=240 .00.
14141
+ Doris assigned to Customer6 (Repair - Critical) in Lahr/Schwarzwald. Start at t=326 .00.
14142
+ Ed assigned to Customer7 (Inspect/Service Equipment) in Loerrach. Start at t=480 .00.
14144
14143
14145
14144
Albert is not used
14146
- Bob's route: Heidelberg -> Mannheim (dist=24.0, t=24 .00, proc=30.0) -> Heidelberg (dist=24.0)
14147
- Carlos's route: Freiburg im Breisgau -> Loerrach (dist=48.0, t=360.00, proc=60.0) -> Freiburg im Breisgau (dist=48.0)
14148
- Doris's route: Freiburg im Breisgau -> Karlsruhe (dist=85.0, t=150 .00, proc=30.0) -> Lahr/Schwarzwald (dist=61 .0, t=300 .00, proc=60.0) -> Freiburg im Breisgau (dist=39.0)
14149
- Ed is not used
14150
- Flor's route: Freiburg im Breisgau -> Offenburg (dist=45.0, t=360.00, proc=60.0) -> Freiburg im Breisgau (dist=45.0)
14145
+ Bob's route: Heidelberg -> Mannheim (dist=24.0, t=30 .00, proc=30.0) -> Heidelberg (dist=24.0)
14146
+ Carlos is not used
14147
+ Doris's route: Freiburg im Breisgau -> Karlsruhe (dist=85.0, t=113 .00, proc=30.0) -> Offenburg (dist=51.0, t=240.00, proc=60.0) -> Lahr/Schwarzwald (dist=26 .0, t=326 .00, proc=60.0) -> Freiburg im Breisgau (dist=39.0)
14148
+ Ed's route: Heidelberg -> Loerrach (dist=150.0, t=480.00, proc=60.0) -> Heidelberg (dist=150.0)
14149
+ Flor is not used
14151
14150
Gina's route: Heidelberg -> Baden-Baden (dist=67.0, t=67.00, proc=60.0) -> Buehl (dist=16.0, t=143.00, proc=60.0) -> Heidelberg (dist=71.0)
14152
14151
14153
14152
Albert's utilization is 0.00% (0.00/480.00)
14154
14153
Bob's utilization is 16.25% (78.00/480.00)
14155
- Carlos's utilization is 32.50 % (156 .00/480.00)
14156
- Doris's utilization is 57.29 % (275 .00/480.00)
14157
- Ed's utilization is 0 .00% (0 .00/480.00)
14158
- Flor's utilization is 41.67 % (150 .00/360.00)
14154
+ Carlos's utilization is 0.00 % (0 .00/480.00)
14155
+ Doris's utilization is 73.12 % (351 .00/480.00)
14156
+ Ed's utilization is 75 .00% (360 .00/480.00)
14157
+ Flor's utilization is 0.00 % (0 .00/360.00)
14159
14158
Gina's utilization is 76.11% (274.00/360.00)
14160
- Total technician utilization is 29.90 % (933 .00/3120.00)
14159
+ Total technician utilization is 34.07 % (1063 .00/3120.00)
14161
14160
</ pre >
14162
14161
</ div >
14163
14162
</ div >
@@ -14302,13 +14301,13 @@ <h2 id="Scenario-1">Scenario 1<a class="anchor-link" href="#Scenario-1">¶</
14302
14301
Solving scenario 1 model
14303
14302
************************
14304
14303
14305
- Warning: variable name "y[Offenburg ,Freiburg im Breisgau,Albert]" has a space
14304
+ Warning: variable name "y[Loerrach ,Freiburg im Breisgau,Albert]" has a space
14306
14305
Warning: constraint name "tempoDepot[Freiburg im Breisgau,Customer1]" has a space
14307
14306
Warning: to let Gurobi read it back, use rlp format
14308
14307
Gurobi Optimizer version 9.1.0 build v9.1.0rc0 (win64)
14309
14308
Thread count: 4 physical cores, 8 logical processors, using up to 8 threads
14310
14309
Optimize a model with 217 rows, 660 columns and 2329 nonzeros
14311
- Model fingerprint: 0xb47b64dd
14310
+ Model fingerprint: 0x58dea2f1
14312
14311
Variable types: 30 continuous, 630 integer (630 binary)
14313
14312
Coefficient statistics:
14314
14313
Matrix range [1e+00, 8e+02]
@@ -14322,45 +14321,45 @@ <h2 id="Scenario-1">Scenario 1<a class="anchor-link" href="#Scenario-1">¶</
14322
14321
Found heuristic solution: objective 24610.000000
14323
14322
Variable types: 15 continuous, 52 integer (52 binary)
14324
14323
14325
- Root relaxation: objective 8.214242e+03, 19 iterations, 0.00 seconds
14324
+ Root relaxation: objective 8.214242e+03, 16 iterations, 0.00 seconds
14326
14325
14327
14326
Nodes | Current Node | Objective Bounds | Work
14328
14327
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
14329
14328
14330
14329
* 0 0 0 12410.000000 12410.0000 0.00% - 0s
14331
14330
14332
- Explored 0 nodes (20 simplex iterations) in 0.04 seconds
14331
+ Explored 0 nodes (17 simplex iterations) in 0.04 seconds
14333
14332
Thread count was 8 (of 8 available processors)
14334
14333
14335
14334
Solution count 3: 12410 24610 216670
14336
14335
14337
14336
Optimal solution found (tolerance 1.00e-04)
14338
14337
Best objective 1.241000000000e+04, best bound 1.241000000000e+04, gap 0.0000%
14339
14338
14340
- Albert assigned to Customer1 (Equipment Setup) in Mannheim. Start at t=24.00.
14341
- Albert assigned to Customer2 (Equipment Setup) in Karlsruhe. Start at t=107 .00.
14342
- Bob assigned to Customer3 (Repair - Regular) in Baden-Baden. Start at t=67 .00.
14339
+ Gina assigned to Customer1 (Equipment Setup) in Mannheim. Start at t=24.00.
14340
+ Bob assigned to Customer2 (Equipment Setup) in Karlsruhe. Start at t=50 .00.
14341
+ Bob assigned to Customer3 (Repair - Regular) in Baden-Baden. Start at t=111 .00.
14343
14342
Nobody assigned to Customer4 (Equipment Installation) in Buehl
14344
14343
Flor assigned to Customer5 (Equipment Installation) in Offenburg. Start at t=45.00. 105.00 minutes late.
14345
14344
Doris assigned to Customer6 (Repair - Critical) in Lahr/Schwarzwald. Start at t=300.00.
14346
14345
Carlos assigned to Customer7 (Inspect/Service Equipment) in Loerrach. Start at t=480.00.
14347
14346
14348
- Albert's route: Heidelberg -> Mannheim (dist=24.0, t=24.00, proc=30.0) -> Karlsruhe (dist=53.0, t=107.00, proc=30.0) -> Heidelberg (dist=50.0)
14349
- Bob's route: Heidelberg -> Baden-Baden (dist=67 .0, t=67 .00, proc=60.0) -> Heidelberg (dist=67.0)
14347
+ Albert is not used
14348
+ Bob's route: Heidelberg -> Karlsruhe (dist=50.0, t=50.00, proc=30.0) -> Baden-Baden (dist=31 .0, t=111 .00, proc=60.0) -> Heidelberg (dist=67.0)
14350
14349
Carlos's route: Freiburg im Breisgau -> Loerrach (dist=48.0, t=480.00, proc=60.0) -> Freiburg im Breisgau (dist=48.0)
14351
14350
Doris's route: Freiburg im Breisgau -> Lahr/Schwarzwald (dist=39.0, t=300.00, proc=60.0) -> Freiburg im Breisgau (dist=39.0)
14352
14351
Ed is not used
14353
14352
Flor's route: Freiburg im Breisgau -> Offenburg (dist=45.0, t=45.00, proc=60.0) -> Freiburg im Breisgau (dist=45.0)
14354
- Gina is not used
14353
+ Gina's route: Heidelberg -> Mannheim (dist=24.0, t=24.00, proc=30.0) -> Heidelberg (dist=24.0)
14355
14354
14356
- Albert's utilization is 77.92 % (187 .00/240.00)
14357
- Bob's utilization is 80.83 % (194 .00/240.00)
14355
+ Albert's utilization is 0.00 % (0 .00/240.00)
14356
+ Bob's utilization is 99.17 % (238 .00/240.00)
14358
14357
Carlos's utilization is 65.00% (156.00/240.00)
14359
14358
Doris's utilization is 57.50% (138.00/240.00)
14360
14359
Ed's utilization is 0.00% (0.00/240.00)
14361
14360
Flor's utilization is 83.33% (150.00/180.00)
14362
- Gina's utilization is 0.00 % (0 .00/180.00)
14363
- Total technician utilization is 52.88 % (825 .00/1560.00)
14361
+ Gina's utilization is 43.33 % (78 .00/180.00)
14362
+ Total technician utilization is 48.72 % (760 .00/1560.00)
14364
14363
</ pre >
14365
14364
</ div >
14366
14365
</ div >
0 commit comments