Skip to content

Commit f08c8cb

Browse files
committed
Added Advanced Contraint Example Driver Different Working Time
1 parent c310660 commit f08c8cb

File tree

2 files changed

+129
-1
lines changed

2 files changed

+129
-1
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<modelVersion>4.0.0</modelVersion>
55
<groupId>io.github.route4me</groupId>
66
<artifactId>route4me-java-sdk</artifactId>
7-
<version>1.7.0</version>
7+
<version>1.7.1</version>
88
<packaging>jar</packaging>
99
<properties>
1010
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
/*
2+
* To change this license header, choose License Headers in Project Properties.
3+
* To change this template file, choose Tools | Templates
4+
* and open the template in the editor.
5+
*/
6+
package com.route4me.sdk.examples.advancedconstraints;
7+
8+
9+
import com.route4me.sdk.exception.APIException;
10+
import com.route4me.sdk.services.routing.Address;
11+
import com.route4me.sdk.services.routing.Constants.AlgorithmType;
12+
import com.route4me.sdk.services.routing.Constants.OptimizationState;
13+
import com.route4me.sdk.services.routing.Constants.Optimize;
14+
import com.route4me.sdk.services.routing.Constants.TravelMode;
15+
import com.route4me.sdk.services.routing.DataObject;
16+
import com.route4me.sdk.services.routing.OptimizationParameters;
17+
import com.route4me.sdk.services.routing.Parameters;
18+
import com.route4me.sdk.services.routing.RoutingManager;
19+
import com.route4me.sdk.services.routing.advancedconstraints.AdvancedConstraints;
20+
import java.util.ArrayList;
21+
import java.util.Arrays;
22+
import java.util.Iterator;
23+
import java.util.List;
24+
25+
26+
public class DriversDifferentWorkingTime {
27+
28+
//**********************************************************************
29+
// TEST CASE: Driver's Different Working Time
30+
// Drivers have 2 Working Times:
31+
// Full Time 8h
32+
// Partial Time 4h
33+
//**********************************************************************
34+
35+
public static void main(String[] args) {
36+
String apiKey = "11111111111111111111111111111111";
37+
RoutingManager manager = new RoutingManager(apiKey);
38+
OptimizationParameters optParameters = new OptimizationParameters();
39+
40+
Parameters parameters = new Parameters();
41+
parameters.setAlgorithmType(AlgorithmType.ADVANCED_CVRP_TW.getValue());
42+
parameters.setStoreRoute(Boolean.FALSE);
43+
parameters.setShareRoute(Boolean.FALSE);
44+
parameters.setRouteTime((7 + 5) * 3600); // Route Time 7am EST Time
45+
parameters.setParts(8);
46+
parameters.setRouteMaxDuration(8 * 3600);
47+
parameters.setRouteName("Drivers Different Working Time Example - Single Depot, Multiple Driver");
48+
parameters.setOptimize(Optimize.DISTANCE.toString());
49+
parameters.setTravelMode(TravelMode.DRIVING.toString());
50+
51+
// Feets
52+
// Full-Time
53+
AdvancedConstraints advancedConstraintFullTime = new AdvancedConstraints();
54+
advancedConstraintFullTime.setMembersCount(4);
55+
List<List<Integer>> timeWindowsFullTime = new ArrayList<>();
56+
List<Integer> timeWindowFullTime = Arrays.asList(43200, 72000);
57+
timeWindowsFullTime.add(timeWindowFullTime);
58+
advancedConstraintFullTime.setAvailableTimeWindows(timeWindowsFullTime);
59+
// Part Time
60+
AdvancedConstraints advancedConstraintPartTime = new AdvancedConstraints();
61+
advancedConstraintPartTime.setMembersCount(2);
62+
List<List<Integer>> timeWindowsPartTime = new ArrayList<>();
63+
// Driver Shift
64+
List<Integer> timeWindowPartTime = Arrays.asList(43200, 57600);
65+
timeWindowsPartTime.add(timeWindowPartTime);
66+
advancedConstraintPartTime.setAvailableTimeWindows(timeWindowsPartTime);
67+
68+
69+
List<AdvancedConstraints> advancedConstraints = Arrays.asList(advancedConstraintFullTime, advancedConstraintPartTime);
70+
71+
parameters.setAdvancedConstraints(advancedConstraints);
72+
73+
optParameters.setParameters(parameters);
74+
75+
List<Address> addresses = new ArrayList<>();
76+
// Depot
77+
addresses.add(new Address("1604 PARKRIDGE PKWY, Louisville, KY, 40214", true, 38.141598, -85.793846, 0));
78+
79+
// Stops
80+
Address address = new Address("1407 MCCOY, Louisville, KY, 40215", 38.202496, -85.786514, 3600);
81+
addresses.add(address);
82+
83+
address = new Address("730 CECIL AVENUE, Louisville, KY, 40211", 38.248684, -85.821121, 3600);
84+
addresses.add(address);
85+
86+
address = new Address("4629 HILLSIDE DRIVE, Louisville, KY, 40216", 38.176067, -85.824638, 3600);
87+
addresses.add(address);
88+
89+
address = new Address("318 SO. 39TH STREET, Louisville, KY, 40212", 38.259335, -85.815094, 3600);
90+
addresses.add(address);
91+
92+
address = new Address("1324 BLUEGRASS AVE, Louisville, KY, 40215", 38.179253, -85.785118, 3600);
93+
addresses.add(address);
94+
95+
address = new Address("7305 ROYAL WOODS DR, Louisville, KY, 40214", 38.162472, -85.792854, 3600);
96+
addresses.add(address);
97+
98+
address = new Address("4738 BELLEVUE AVE, Louisville, KY, 40215", 38.179806, -85.775558, 3600);
99+
addresses.add(address);
100+
101+
address = new Address("4805 BELLEVUE AVE, Louisville, KY, 40215", 38.178844, -85.774864, 3600);
102+
addresses.add(address);
103+
104+
address = new Address("650 SOUTH 29TH ST UNIT 315, Louisville, KY, 40211", 38.251923, -85.800034, 3600);
105+
addresses.add(address);
106+
107+
108+
optParameters.setAddresses(addresses);
109+
110+
try {
111+
DataObject responseObject = manager.runOptimization(optParameters);
112+
System.out.println("Optimization Problem ID:" + responseObject.getOptimizationProblemId());
113+
System.out.println("State:" + OptimizationState.get(responseObject.getState().intValue()));
114+
if (responseObject.getAddresses() != null) {
115+
for (Iterator<Address> it = responseObject.getAddresses().iterator(); it.hasNext();) {
116+
address = it.next();
117+
System.out.println(address);
118+
}
119+
}
120+
} catch (APIException e) {
121+
//handle exception
122+
e.printStackTrace();
123+
}
124+
}
125+
126+
127+
128+
}

0 commit comments

Comments
 (0)