18 Appendix - Object definitions
The following sections list the different JSON objects which are sent to or returned from the RESTful endpoints, in the body the HTTP request/response.
18.1 ODLModel
class ODLModel{
Map<String,String>
properties; // User-defined key-values never read by optimiser, use to store own notes etc.
ODLModelConfiguration
configuration;
ODLModelData
data;
String _id;
}
18.1.1 ODLModelConfiguration
Appears in:
model.configuration
class ODLModelConfiguration{
List<ODLWebHookConfiguration>
webHooks;
Long dispatchBufferMilliseconds;
Long
dispatchIfWaitingTimeLessThanMillis;
ODLCurrentTimeConfig
timeOverride;
ODLDistancesConfig
distances;
ODLProblemConfiguration
problem;
ODLReportingConfiguration
reporting;
ODLStaticModelCPUBudget
staticCPUBudget;
String
deleteModelAfter; // Date-time stored in a string.
}
18.1.1.1 ODLCurrentTimeConfig
Appears in:
model.configuration.timeOverride
class ODLCurrentTimeConfig{
ODLTimeOverrideType
overrideType;
String
override; // Date-time stored in a string.
}
enum ODLTimeOverrideType{
NONE,
SCHEDULER,
}
18.1.1.2 ODLDistancesConfig
Appears in:
model.configuration.distances
class ODLDistancesConfig{
Double
basicTL2RawSTDSpeedsFallbackMetricToleranceValue;
Double
straightLineDistanceMultiplier;
Double straightLineSpeedMetresPerSec;
List<ODLSingleDayDistancesConfig>
days;
ODLDistancesType
type;
ODLParkingTime
parkingTime;
ODLTimeDependentDistancesConfig
stdSpeedsProfileForFallback;
String learnerFilename;
String matrixFilename;
TreeMap<String,ODLTimeDependentDistancesConfig>
profiles;
}
18.1.1.2.1 ODLTimeDependentDistancesConfig
class ODLTimeDependentDistancesConfig{
Double
basicTL2RawSTDSpeedsFallbackMetricToleranceValue;
Double
straightLineDistanceMultiplier;
Double straightLineSpeedMetresPerSec;
List<ODLSingleDayDistancesConfig>
days;
ODLDistancesType
type;
ODLParkingTime
parkingTime;
ODLTimeDependentDistancesConfig
stdSpeedsProfileForFallback;
String learnerFilename;
String matrixFilename;
}
18.1.1.2.2 ODLSingleDayDistancesConfig
Appears in:
days[]
class ODLSingleDayDistancesConfig{
Boolean friday;
Boolean monday;
Boolean saturday;
Boolean sunday;
Boolean thursday;
Boolean tuesday;
Boolean wednesday;
List<ODLTimePeriodDistancesConfig>
periods;
}
18.1.1.2.3 ODLTimePeriodDistancesConfig
Appears in:
days[].periods[]
class ODLTimePeriodDistancesConfig{
Double weight1;
Double weight2;
ODLAtomicDistancesConfig
config1;
ODLAtomicDistancesConfig
config2;
String
endTime; // Time (without date) stored in a string.
String
startTime; // Time (without date) stored in a string.
}
18.1.1.2.4 ODLAtomicDistancesConfig
class ODLAtomicDistancesConfig{
Double
basicTL2RawSTDSpeedsFallbackMetricToleranceValue;
Double
straightLineDistanceMultiplier;
Double straightLineSpeedMetresPerSec;
ODLDistancesType
type;
ODLParkingTime
parkingTime;
ODLTimeDependentDistancesConfig
stdSpeedsProfileForFallback;
String learnerFilename;
String matrixFilename;
}
enum ODLDistancesType{
EUCLID,
ROADS,
TEXT,
TEXT_INTERP,
}
18.1.1.2.5 ODLParkingTime
Appears in:
parkingTime
class ODLParkingTime{
Double
parkingTimeMinSeparationMetres;
Double parkingTimeSeconds;
}
18.1.1.3 ODLProblemConfiguration
Appears in:
model.configuration.problem
class ODLProblemConfiguration{
Boolean outOfOrderTWsAllowed;
ODLFullnessPenaltyConfig
fullnessPenalty;
ODLIncompatibleJobGroupRule[]
incompatibleJobGroupRules;
ODLNonlinearPenaltyCalculator
latenessPenalty;
ODLObjectivesConfiguration
objective;
}
18.1.1.3.1 ODLFullnessPenaltyConfig
Appears in:
model.configuration.problem.fullnessPenalty
class ODLFullnessPenaltyConfig{
Double power;
Double weight;
}
18.1.1.3.2 ODLIncompatibleJobGroupRule
Appears in:
model.configuration.problem.incompatibleJobGroupRules
class ODLIncompatibleJobGroupRule{
Boolean prohibited;
Double cost;
ODLIncompatibleJobGroupRuleType
ruleType;
TreeSet<String> jobGroupIdsA;
TreeSet<String> jobGroupIdsB;
}
enum ODLIncompatibleJobGroupRuleType{
NON_EMPTY_SECTION,
WHOLE_ROUTE,
}
18.1.1.3.3 ODLNonlinearPenaltyCalculator
Appears in:
model.configuration.problem.latenessPenalty
class ODLNonlinearPenaltyCalculator{
Double multiplier;
Double power;
}
18.1.1.3.4 ODLObjectivesConfiguration
Appears in:
model.configuration.problem.objective
class ODLObjectivesConfiguration{
List<ODLObjective>
lexicographicObjectives;
}
enum ODLCostType{
AFTER_DISPATCHES_DIST_AT_STOP,
AFTER_TRAVEL_CUSTOM_FORMULA,
CENTERING,
COST_PER_JOB_FUNC,
EARLY_REPLENISH,
FINISH_LAST_JOB_LATENESS,
FIXED_JOB_COST_GROUP,
FULLNESS,
INCOMPATIBLE_JOBS,
INTERSTOP_RULE,
JOB_PATTERN,
JOB_VEHICLE_USER_FUNCTION,
LATENESS,
MAX_SEPARATION,
MAX_WORK_TIME,
ON_BOARD_TIME,
PARKING_COST,
PER_STOP_COST,
REPLENISH_FILL_COST_AT_ROUTE_END,
REPLENISH_FILL_FIXED,
REPLENISH_FILL_VARIABLE,
SEQUENCE_BASED_STATE_USER_FUNCTION,
SERVICE_RADIUS,
SERVICE_TIME,
SERVICE_TIME_ADDED_ON_LEAVING_PREVIOUS_LOCATION,
SERVICE_TIME_AT_ACTIVITY_WITHOUT_LOCATION,
SHARED_STOP_COST,
SOFT_CAPACITY,
STOPS_SET_USER_FUNCTION,
TOTAL_DRIVE_DISTANCE,
TOTAL_DRIVE_TIME,
TRAVEL,
UNASSIGNED_COST,
VEHICLE_FIXED,
VEHICLE_VALS_COST_FUNC,
WAITING,
WORK_TIME_EXCL_WAIT,
WRONG_DIRECTION,
}
class ODLObjective{
List<ODLCostType>
costTypesToSum;
}
18.1.1.4 ODLReportingConfiguration
Appears in:
model.configuration.reporting
class ODLReportingConfiguration{
ODLTabularOutputFields
tabularOutputFields;
String outputTimezoneId;
}
18.1.1.4.1 ODLTabularOutputFields
Appears in:
model.configuration.reporting.tabularOutputFields
class ODLTabularOutputFields{
List<ODLTabularOutputField>
routeDetailsSheet;
List<ODLTabularOutputField>
solutionDetailsSheet;
List<ODLTabularOutputField>
stopDetailsSheet;
}
18.1.1.4.2 ODLTabularOutputField
class ODLTabularOutputField{
String columnName;
String decimalFormatPattern;
String defaultValueIfNull;
String source;
}
18.1.1.5 ODLStaticModelCPUBudget
Appears in:
model.configuration.staticCPUBudget
class ODLStaticModelCPUBudget{
Integer maxIterations;
Integer
maxIterationsWithoutImprovement;
Integer minIterations;
Long maxMillis;
Long maxMillisWithoutImprovement;
Long minCPUMillis;
}
18.1.1.6 ODLWebHookConfiguration
Appears in:
model.configuration.webHooks[]
class ODLWebHookConfiguration{
ODLWebHookType
type;
String
authorization; // Only supported in webapp2
String url;
}
enum ODLWebHookType{
PLANNED_ROUTE_CHANGED,
}
18.1.2 ODLModelData
Appears in:
model.data
class ODLModelData{
List<ODLJob>
jobs;
List<ODLJob>
replenishJobs;
List<ODLVehicle>
vehicles;
}
18.1.3 ODLJob
Appears in:
model.data.jobs[]
A job contains stops to be served (usually by just one vehicle unless
using job patterns).
class ODLJob{
Boolean assignableAtDepotOnly;
Double unassignedCost;
Integer
strictOrderedAssignmentImportance;
List<ODLAlternativeJob>
altJobs;
List<ODLJobPattern>
jobPatterns;
List<ODLStop>
stops;
Long[] quantities;
Map<String,ODLRangedOrder2Function[]>
vehicleValCostFuncs;
Map<String,Number>
namedVals; // Named values are used in user functions.
Map<String,String>
properties; // User-defined key-values never read by optimiser, use to store own notes etc.
ODLJobAcceptanceRequest
acceptanceRequest;
ODLJobGroupFixedCost
fixedCostGroup;
ODLOnboardPenaltyWithStopIds[]
onboardTimePenalties;
ODLOnboardTimePenalty
onboardTimePenalty;
ODLUserFunctionsOnJob
userFunctions;
String _id;
String lock2VehicleId;
String
overrideDistancesProfileIdWhenOnboard;
String preceedingEnablerJobGroupId;
String replenishTypeId;
TreeSet<String> jobGroupIds;
TreeSet<String>
prohibitedSkills;
TreeSet<String> requiredSkills;
}
18.1.3.1 ODLAlternativeJob
Appears in:
model.data.jobs[].altJobs[]
class ODLAlternativeJob{
Boolean assignableAtDepotOnly;
Double unassignedCost;
Integer
strictOrderedAssignmentImportance;
List<ODLJobPattern>
jobPatterns;
List<ODLStop>
stops;
Long[] quantities;
Map<String,ODLRangedOrder2Function[]>
vehicleValCostFuncs;
Map<String,Number>
namedVals; // Named values are used in user functions.
Map<String,String>
properties; // User-defined key-values never read by optimiser, use to store own notes etc.
ODLJobAcceptanceRequest
acceptanceRequest;
ODLJobGroupFixedCost
fixedCostGroup;
ODLOnboardPenaltyWithStopIds[]
onboardTimePenalties;
ODLOnboardTimePenalty
onboardTimePenalty;
ODLUserFunctionsOnJob
userFunctions;
String _id;
String lock2VehicleId;
String
overrideDistancesProfileIdWhenOnboard;
String preceedingEnablerJobGroupId;
String replenishTypeId;
TreeSet<String> jobGroupIds;
TreeSet<String>
prohibitedSkills;
TreeSet<String> requiredSkills;
}
18.1.3.2 ODLJobAcceptanceRequest
Appears in:
model.data.jobs[].acceptanceRequest
class ODLJobAcceptanceRequest{
List<ODLMetricIncreaseTolerance>
tolerances;
String planningQueryId;
}
18.1.3.3 ODLJobGroupFixedCost
Appears in:
model.data.jobs[].fixedCostGroup
class ODLJobGroupFixedCost{
Double cost;
String id;
}
18.1.3.4 ODLJobPattern
Appears in:
model.data.jobs[].jobPatterns[]
class ODLJobPattern{
Double cost;
Integer repeatInterval;
Integer repeatNTimes;
List<String> jobIds;
ODLRepeatUnit
repeatUnit;
String name;
}
enum ODLRepeatUnit{
DAY,
FORTNIGHT,
MONTH,
WEEK,
}
18.1.3.5 ODLOnboardPenaltyWithStopIds
Appears in:
model.data.jobs[].onboardTimePenalties
class ODLOnboardPenaltyWithStopIds{
ODLArrivalTimeLogicType
arrivalTimeLogicType;
ODLDirectTravelBasedOnBoardPenalty
directTravelTimeBased;
ODLOnboardTimePenaltyType
type;
ODLRangedOrder2Function[]
hoursPenalty;
String[] endStopIds;
String[] startStopIds;
}
18.1.3.6 ODLOnboardTimePenalty
Appears in:
model.data.jobs[].onboardTimePenalty
class ODLOnboardTimePenalty{
ODLArrivalTimeLogicType
arrivalTimeLogicType;
ODLDirectTravelBasedOnBoardPenalty
directTravelTimeBased;
ODLOnboardTimePenaltyType
type;
ODLRangedOrder2Function[]
hoursPenalty;
}
enum ODLArrivalTimeLogicType{
FROM_CONSECUTIVE_SERVICE_TIME_FOR_COLOCATED_STOPS,
FROM_EARLIEST_POSSIBLE_SERVICE_TIME_FOR_COLOCATED_STOPS,
}
enum ODLOnboardTimePenaltyType{
FROM_LEAVE_LOC,
FROM_PICKUP_TIME,
}
18.1.3.6.1 ODLDirectTravelBasedOnBoardPenalty
Appears in:
model.data.jobs[].onboardTimePenalty.directTravelTimeBased
class ODLDirectTravelBasedOnBoardPenalty{
Double addHours2DirectTime;
Double multiplyDirectTimeLimitBy;
ODLDirectTravelType
type;
ODLRangedOrder2Function[]
penalty;
}
enum ODLDirectTravelType{
HARD_LIMIT,
HOURS_OVER_LIMIT_PENALTIES,
PENALTIES,
}
18.1.3.7 ODLStop
Appears in:
model.data.jobs[].stops[]
class ODLStop{
Double costFixed;
Double
costPerTotalPostDispatchKmAtStop;
Double extraTravelTimeHours;
Double sequenceConstraint;
Integer relativeSequenceConstraint;
List<ODLCustomTimeWindow>
multiTWs;
List<ODLFromStopGroupCosts>
fromStopCosts;
List<ODLStopReplenishUsage>
replenishUsage;
Long[] onboardQuantityChange;
Long
durationMillis; // Stop duration in milliseconds
Map<String,Number>
namedVals; // Named values are used in user functions.
Map<String,String>
properties; // User-defined key-values never read by optimiser, use to store own notes etc.
ODLLatLong
coordinate;
ODLParking
parking;
ODLParking
secondaryTravelParking;
ODLSpecialCoordinateType
specialCoordinateType;
ODLStopPlacementOption
placementRestriction;
ODLStopReplenishFills
replenishFilling;
ODLStopSharedCostAndDuration
sharedCostDuration;
ODLStopType
type;
ODLUserFunctionsOnStop
userFunctions;
ODLWrongDirectionRule[]
wrongDirectionRules;
String _id;
String
closeTime; // Date-time stored in a string.
String
depotId2PreventRevisitWithOnBoards;
String depotId4MultiTripRules;
String
lateTime; // Date-time stored in a string.
String
openTime; // Date-time stored in a string.
TreeSet<String> stopGroups;
}
enum ODLSpecialCoordinateType{
VEHICLE_END,
VEHICLE_SPECIAL_COORDINATE_FOR_STOPS,
VEHICLE_START,
}
enum ODLStopPlacementOption{
END_OF_ROUTE,
START_OF_ROUTE,
}
enum ODLStopType{
BREAK,
CUSTOM,
DELIVER,
PICKUP,
REPLENISH,
SERVICE,
SHIPMENT_DELIVERY,
SHIPMENT_PICKUP,
}
18.1.3.7.1 ODLCustomTimeWindow
Appears in:
model.data.jobs[].stops[].multiTWs[]
class ODLCustomTimeWindow{
List<ODLCustomTimePenalty>
penalties;
String
closeTime; // Date-time stored in a string.
String
openTime; // Date-time stored in a string.
}
class ODLCustomTimePenalty{
ODLPiecewiseFunctionJoinType
join;
String
closeTime; // Date-time stored in a string.
String
costZeroTime; // Date-time stored in a string.
String
openTime; // Earliest time stop can be served, vehicle waits before this.
}
18.1.3.7.2 ODLFromStopGroupCosts
Appears in:
model.data.jobs[].stops[].fromStopCosts[]
class ODLFromStopGroupCosts{
Boolean notFrom;
Boolean skipNoLocationActs;
Boolean zeroTravelCost;
Double cost;
Double timeSeconds;
String fromStopGroupId;
}
18.1.3.7.3 ODLLatLong
Appears in:
model.data.jobs[].stops[].coordinate
class ODLLatLong{
Double latitude;
Double longitude;
String
roadName; // Setting road name is optional but can improve accuracy
}
18.1.3.7.4 ODLParking
Appears in:
model.data.jobs[].stops[].parking
class ODLParking{
Double cost;
Double
parkingTimeMinSeparationMetres;
Double parkingTimeSeconds;
}
18.1.3.7.5 ODLStopReplenishFills
Appears in:
model.data.jobs[].stops[].replenishFilling
class ODLStopReplenishFills{
Double costFixed;
Double costPerReplenishUnit;
}
18.1.3.7.6 ODLStopReplenishUsage
Appears in:
model.data.jobs[].stops[].replenishUsage[]
class ODLStopReplenishUsage{
String replenishTypeId;
}
18.1.3.7.7 ODLStopSharedCostAndDuration
Appears in:
model.data.jobs[].stops[].sharedCostDuration
class ODLStopSharedCostAndDuration{
Double fixedCost;
Double minSeparationMetres;
Double seconds;
}
18.1.3.7.8 ODLUserFunctionsOnStop
Appears in:
model.data.jobs[].stops[].userFunctions
class ODLUserFunctionsOnStop{
List<ODLStatement>
sequenceBasedState;
ODLEnrouteParsingUserFunctions
enroute;
}
18.1.3.7.8.1 ODLEnrouteParsingUserFunctions
Appears in:
model.data.jobs[].stops[].userFunctions.enroute
class ODLEnrouteParsingUserFunctions{
List<ODLStatement> afterTravel;
}
18.1.3.7.9 ODLWrongDirectionRule
Appears in:
model.data.jobs[].stops[].wrongDirectionRules
class ODLWrongDirectionRule{
ODLRangedOrder2Function[]
maxFurtherAwayKmFunction;
String evaluate2StopId;
}
18.1.3.8 ODLUserFunctionsOnJob
Appears in:
model.data.jobs[].userFunctions
class ODLUserFunctionsOnJob{
List<ODLStatement>
jobVehicleCombination;
}
18.1.4 ODLVehicle
Appears in:
model.data.vehicles[]
class ODLVehicle{
Integer nbOfInstances;
List<ODLDispatch>
dispatches;
List<ODLStopArrivalEvent>
stopArrivedEvents;
List<ODLStopCompletedEvent>
stopCompleteEvents;
List<ODLTracePoint>
vehicleTraceEvents;
Map<String,String>
properties; // User-defined key-values never read by optimiser, use to store own notes etc.
ODLVehicleDefinition
definition;
ODLVehicleLock
lock;
String _id;
}
18.1.4.1 ODLDispatch
Appears in:
model.data.vehicles[].dispatches[]
class ODLDispatch{
ODLLatLong
coordinateOverride;
String _id;
String
creationTime; // Date-time stored in a string.
String stopId;
}
18.1.4.2 ODLStopArrivalEvent
Appears in:
model.data.vehicles[].stopArrivedEvents[]
class ODLStopArrivalEvent{
Map<String,String>
properties; // User-defined key-values never read by optimiser, use to store own notes etc.
String _id;
String stopId;
String
time; // Date-time stored in a string.
}
18.1.4.3 ODLStopCompletedEvent
Appears in:
model.data.vehicles[].stopCompleteEvents[]
class ODLStopCompletedEvent{
Map<String,String>
properties; // User-defined key-values never read by optimiser, use to store own notes etc.
String _id;
String stopId;
String
time; // Date-time stored in a string.
}
18.1.4.4 ODLTracePoint
Appears in:
model.data.vehicles[].vehicleTraceEvents[]
class ODLTracePoint{
Map<String,String>
properties; // User-defined key-values never read by optimiser, use to store own notes etc.
ODLLatLong
coordinate;
String _id;
String
time; // Date-time stored in a string.
}
18.1.4.5 ODLVehicleDefinition
Appears in:
model.data.vehicles[].definition
class ODLVehicleDefinition{
Double costFixed;
Double costPerKm;
Double costPerServicingHour;
Double costPerStop;
Double
costPerTotalPostDispatchKmAtStop;
Double costPerTravelHour;
Double costPerWaiting4BreakHour;
Double costPerWaiting4FirstStopHour;
Double costPerWaitingHour;
Double travelTimeMultiplier;
Integer maxParallelStopProcessing;
List<ODLPreloadedStop>
preloadedStops;
List<ODLStopGroupProperties>
stopGroupProperties;
List<ODLVehicleInterStopCosts>
interStopCosts;
List<ODLVehicleReplenish>
replenishes;
Long[] capacities;
Map<String,Number>
namedVals; // Named values are used in user functions.
Map<String,String>
properties; // User-defined key-values never read by optimiser, use to store own notes etc.
ODLIncompatibleQuantityPair[]
incompatibleQuantityIndices;
ODLLatLong
specialCoordinateForStops;
ODLMultipleCapacityConfigurations
multiCapacityConfigs;
ODLParking
parking;
ODLRangedOrder2Function[]
costPerWaitingHourFunc;
ODLRangedOrder2Function[]
extraCostPerKm;
ODLRangedOrder2Function[]
extraCostPerTravelHour;
ODLRangedOrder2Function[]
totalServePlusTravelHours;
ODLRangedOrder2Function[]
totalTravelHours;
ODLRangedOrder2Function[]
totalTravelKm;
ODLRangedOrder2Function[]
workTimeHours;
ODLSecondaryTravelMode
secondaryTravel;
ODLSoftCapacity[]
softCapacities;
ODLUserFunctionsOnVehicle
userFunctions;
ODLVehicleCentering
centering;
ODLVehicleEnd
end;
ODLVehicleMaxSeparation
maxSeparation;
ODLVehicleServiceRadius
serviceRadius;
ODLVehicleStart
start;
String distancesProfileId;
String
lockDeliveriesTime; // Date-time stored in a string.
TreeSet<String> skills;
TreeSet<String>
vehicleGroupIds;
}
18.1.4.5.1 ODLIncompatibleQuantityPair
Appears in:
model.data.vehicles[].definition.incompatibleQuantityIndices
class ODLIncompatibleQuantityPair{
Integer quantityIndx1;
Integer quantityIndx2;
}
18.1.4.5.2 ODLMultipleCapacityConfigurations
Appears in:
model.data.vehicles[].definition.multiCapacityConfigs
class ODLMultipleCapacityConfigurations{
ODLCapacityConfiguration[]
configs;
}
class ODLCapacityConfiguration{
Long[] capacities;
String name;
}
18.1.4.5.3 ODLPreloadedStop
Appears in:
model.data.vehicles[].definition.preloadedStops[]
class ODLPreloadedStop{
Double costFixed;
Double
costPerTotalPostDispatchKmAtStop;
Double extraTravelTimeHours;
Double sequenceConstraint;
Integer relativeSequenceConstraint;
List<ODLCustomTimeWindow>
multiTWs;
List<ODLFromStopGroupCosts>
fromStopCosts;
Long[] onboardQuantityChange;
Long
durationMillis; // Stop duration in milliseconds
Map<String,Number>
namedVals; // Named values are used in user functions.
Map<String,String>
properties; // User-defined key-values never read by optimiser, use to store own notes etc.
ODLLatLong
coordinate;
ODLParking
parking;
ODLParking
secondaryTravelParking;
ODLStopPlacementOption
placementRestriction;
ODLStopSharedCostAndDuration
sharedCostDuration;
ODLStopType
type;
ODLUserFunctionsOnStop
userFunctions;
ODLWrongDirectionRule[]
wrongDirectionRules;
String _id;
String
closeTime; // Date-time stored in a string.
String
depotId2PreventRevisitWithOnBoards;
String depotId4MultiTripRules;
String
lateTime; // Date-time stored in a string.
String
openTime; // Date-time stored in a string.
TreeSet<String> stopGroups;
}
18.1.4.5.4 ODLRangedOrder2Function
class ODLRangedOrder2Function{
Double c0;
Double c1;
Double c2;
Double exclusiveUpperLimit;
Double inclusiveLowerLimit;
Double translate;
ODLPiecewiseFunctionJoinType
join;
}
enum ODLPiecewiseFunctionJoinType{
EXACT,
INCREASING,
NO_JOIN,
PLUS_CONST,
}
18.1.4.5.5 ODLSecondaryTravelMode
Appears in:
model.data.vehicles[].definition.secondaryTravel
class ODLSecondaryTravelMode{
Double costPerKm;
Double costPerTravelHour;
Double travelTimeMultiplier;
ODLParking
parking;
ODLRangedOrder2Function[]
extraCostPerKm;
ODLRangedOrder2Function[]
extraCostPerTravelHour;
String distancesProfileId;
}
18.1.4.5.6 ODLSoftCapacity
Appears in:
model.data.vehicles[].definition.softCapacities
class ODLSoftCapacity{
Double costPerViolation;
Double costPerViolationSqd;
Long capacity;
}
18.1.4.5.7 ODLStopGroupProperties
Appears in:
model.data.vehicles[].definition.stopGroupProperties[]
class ODLStopGroupProperties{
Boolean prohibited;
Double costFixed;
Double extraTravelTimeHours;
Long durationMillis;
ODLDurationFunction
durationFunction;
ODLStopGroupMatchRule
matchType;
TreeSet<String> stopGroups;
}
enum ODLStopGroupMatchRule{
ALL_MUST_MATCH,
MATCH_2_ANYTHING,
NONE_MUST_MATCH,
ONE_MUST_MATCH,
}
18.1.4.5.7.1 ODLDurationFunction
Appears in:
model.data.vehicles[].definition.stopGroupProperties[].durationFunction
class ODLDurationFunction{
List<ODLDurationAtomicFunction>
functions;
ODLDurationFunctionType
type;
}
class ODLDurationAtomicFunction{
Double[] millisPerQuantity;
Double[] millisPerQuantitySqd;
Double defaultMultiplier;
Long millisFixed;
}
enum ODLDurationFunctionType{
DEFAULT_PLUS_MAX,
MAX,
MIN,
}
18.1.4.5.8 ODLUserFunctionsOnVehicle
Appears in:
model.data.vehicles[].definition.userFunctions
class ODLUserFunctionsOnVehicle{
List<ODLStatement>
jobVehicleCombination;
List<ODLStatement>
sequenceBasedState;
List<ODLStatement>
unorderedStopsSet;
ODLEnrouteParsingUserFunctions
enroute;
}
18.1.4.5.9 ODLVehicleCentering
Appears in:
model.data.vehicles[].definition.centering
class ODLVehicleCentering{
Boolean includeShipmentDeliveries;
Boolean includeShipmentPickups;
Double
costMultiplier; // 10 is a good value to try first
ODLLatLong
coordinate; // Optional coordinate to fix the centre
}
18.1.4.5.10 ODLVehicleEnd
Appears in:
model.data.vehicles[].definition.end
class ODLVehicleEnd{
Double costFixed;
Double
costPerTotalPostDispatchKmAtStop;
Double extraTravelTimeHours;
Double sequenceConstraint;
Integer relativeSequenceConstraint;
List<ODLCustomTimeWindow>
multiTWs;
List<ODLFromStopGroupCosts>
fromStopCosts;
Long[] onboardQuantityChange;
Long
durationMillis; // Stop duration in milliseconds
Map<String,Number>
namedVals; // Named values are used in user functions.
Map<String,String>
properties; // User-defined key-values never read by optimiser, use to store own notes etc.
ODLLatLong
coordinate;
ODLParking
parking;
ODLParking
secondaryTravelParking;
ODLStopPlacementOption
placementRestriction;
ODLStopSharedCostAndDuration
sharedCostDuration;
ODLStopType
type;
ODLUserFunctionsOnStop
userFunctions;
ODLWrongDirectionRule[]
wrongDirectionRules;
String _id;
String
closeTime; // Date-time stored in a string.
String
depotId2PreventRevisitWithOnBoards;
String depotId4MultiTripRules;
String
lateTime; // Date-time stored in a string.
String
openTime; // Date-time stored in a string.
TreeSet<String> stopGroups;
}
18.1.4.5.11 ODLVehicleInterStopCosts
Appears in:
model.data.vehicles[].definition.interStopCosts[]
class ODLVehicleInterStopCosts{
Boolean notFrom;
Boolean notTo;
Boolean skipNoLocationActs;
Boolean zeroTravelCost;
Double cost;
Double timeSeconds;
String fromStopGroupId;
String toStopGroupId;
}
18.1.4.5.12 ODLVehicleMaxSeparation
Appears in:
model.data.vehicles[].definition.maxSeparation
class ODLVehicleMaxSeparation{
Boolean includeRouteEnd;
ODLMaxSeparationUnit
unit;
ODLRangedOrder2Function[]
costs;
}
enum ODLMaxSeparationUnit{
HOURS,
KM,
}
18.1.4.5.13 ODLVehicleReplenish
Appears in:
model.data.vehicles[].definition.replenishes[]
class ODLVehicleReplenish{
Double initialValue;
Double maxValue;
Double minValue;
Double replenishPerHour;
Double targetFullness4NextStopAfter;
Double usagePerHour;
Double usagePerStop;
Double usagePerTravelHour;
Double usagePerTravelKm;
Double
worktimeHoursBasedCostPerRefill;
Integer maxNbReplenishes;
List<String>
replenishJobGroups4ExplicitSearch;
String replenishTypeId;
}
18.1.4.5.14 ODLVehicleServiceRadius
Appears in:
model.data.vehicles[].definition.serviceRadius
class ODLVehicleServiceRadius{
Double costFixed;
Double costPerSquareViolation;
Double costPerViolation;
Double hardRadius;
Double softRadius;
GeoJSONPolygon hardGeoJSONPolygon;
ODLLatLong
coordinate;
ODLMultiStopLogicType
multiStopLogic;
ODLServiceRadiusType
type;
}
enum ODLMultiStopLogicType{
MIN,
SUM,
}
enum ODLServiceRadiusType{
HOURS,
KM,
POLYGON,
}
18.1.4.5.15 ODLVehicleStart
Appears in:
model.data.vehicles[].definition.start
class ODLVehicleStart{
Double costFixed;
Double
costPerTotalPostDispatchKmAtStop;
Double extraTravelTimeHours;
Double sequenceConstraint;
Integer relativeSequenceConstraint;
List<ODLFromStopGroupCosts>
fromStopCosts;
Long[] onboardQuantityChange;
Long
durationMillis; // Stop duration in milliseconds
Map<String,Number>
namedVals; // Named values are used in user functions.
Map<String,String>
properties; // User-defined key-values never read by optimiser, use to store own notes etc.
ODLLatLong
coordinate;
ODLParking
parking;
ODLParking
secondaryTravelParking;
ODLStopPlacementOption
placementRestriction;
ODLStopSharedCostAndDuration
sharedCostDuration;
ODLStopType
type;
ODLUserFunctionsOnStop
userFunctions;
ODLWrongDirectionRule[]
wrongDirectionRules;
String _id;
String
closeTime; // Date-time stored in a string.
String
depotId2PreventRevisitWithOnBoards;
String depotId4MultiTripRules;
String
lateTime; // Date-time stored in a string.
String
openTime; // Date-time stored in a string.
TreeSet<String> stopGroups;
}
18.1.4.6 ODLVehicleLock
Appears in:
model.data.vehicles[].lock
class ODLVehicleLock{
List<ODLJobLock>
jobLocks;
ODLVehicleLockState
state;
}
enum ODLVehicleLockState{
NO_MORE_DELIVERIES,
UNLOCKED,
}
18.1.4.6.1 ODLJobLock
Appears in:
model.data.vehicles[].lock.jobLocks[]
class ODLJobLock{
String jobId;
}
18.2 ODLOptimiserPlan
class ODLOptimiserPlan{
List<ODLJob>
unplannedJobs;
List<ODLNotLoadAnalysis4Job>
unplannedAnalysis;
List<ODLVehiclePlan>
vehiclePlans;
ODLPlanStatistics
statistics;
}
18.2.1 ODLNotLoadAnalysis4Job
Appears in:
plan.unplannedAnalysis[]
class ODLNotLoadAnalysis4Job{
List<String> details;
String jobId;
TreeSet<String> reasons;
}
18.2.2 ODLPlanStatistics
Appears in:
plan.statistics
class ODLPlanStatistics{
Double cost;
Integer altPlanSourceIndx;
Integer nbNotLoadJobs;
Integer nbRoutes;
Long nbOptBursts;
Map<String,Double>
optimiserCostBreakdown;
ODLPlanQualityStatistics
totalTimes;
String source;
}
18.2.2.1 ODLPlanQualityStatistics
Appears in:
plan.statistics.totalTimes
class ODLPlanQualityStatistics{
Double[] lexicographicCost;
Double cost;
Double latenessSeconds;
Double
noLocationOperationTimeSeconds;
Double
onBoardSecondsOverDirectBasedLimit;
Double operationTimeSeconds;
Double travelMetres;
Double travelSeconds;
Double waitTimeSeconds;
Integer usedVehicles;
}
18.2.3 ODLVehicleLockWithVid
class ODLVehicleLockWithVid{
List<ODLJobLock>
jobLocks;
ODLVehicleLockState
state;
String vehicleId;
}
18.2.4 ODLVehiclePlan
Appears in:
plan.vehiclePlans[]
class ODLVehiclePlan{
Boolean impossibleVehicle;
GeoJSONGeom
dispatchedIncompleteGeomToFirstStop;
GeoJSONGeom geomToFirstStop;
List<ODLOptimisedDelay>
optimisedDelays;
List<ODLPlannedStop>
dispatchedIncompleteStops;
List<ODLPlannedStop>
plannedStops;
ODLHasTimeAndCoord
dispatchedIncompleteStartPoint;
ODLPlannedEndPoint
planEndPoint;
ODLPlannedStartPoint
planStartPoint;
ODLRouteQualityStatistics
timeStatistics;
ODLRouteQualityStatistics
timeStatisticsInclDispatchedIncomplete;
String vehicleId;
}
18.2.4.1 ODLHasTimeAndCoord
Appears in:
plan.vehiclePlans[].dispatchedIncompleteStartPoint
class ODLHasTimeAndCoord{
ODLLatLong
coordinate;
String
time; // Date-time stored in a string.
}
18.2.4.2 ODLOptimisedDelay
Appears in:
plan.vehiclePlans[].optimisedDelays[]
class ODLOptimisedDelay{
Integer parallelOperatorIndex;
String
end; // Date-time stored in a string.
String
start; // Date-time stored in a string.
}
18.2.4.3 ODLPlannedEndPoint
Appears in:
plan.vehiclePlans[].planEndPoint
class ODLPlannedEndPoint{
Double cumulativeTravelKm;
Double latenessHours;
Double travelHoursBefore;
Double travelKmBefore;
Map<String,Double>
enrouteUserVarsAfter;
Map<String,Double>
enrouteValsAfter;
Map<String,Double>
replnValsAfter;
Map<String,Double>
sequenceBasedStateUserVarsAfter;
ODLTravelModeCode
travelMode;
String
arrival; // Date-time stored in a string.
String
arrivalTimeB4ParkExclDistConfPark; // Date-time stored in a string.
String
complete; // Date-time stored in a string.
String
leaveAfter; // Date-time stored in a string.
String
start; // Date-time stored in a string.
}
18.2.4.4 ODLPlannedStartPoint
Appears in:
plan.vehiclePlans[].planStartPoint
class ODLPlannedStartPoint{
Map<String,Double>
enrouteUserVarsAfter;
Map<String,Double>
enrouteValsAfter;
Map<String,Double>
replnValsAfter;
Map<String,Double>
sequenceBasedStateUserVarsAfter;
ODLLatLong
coordinate;
String
time; // Date-time stored in a string.
}
18.2.4.5 ODLPlannedStop
Appears in:
plan.vehiclePlans[].plannedStops[]
class ODLPlannedStop{
GeoJSONGeom geomToNextStop;
Map<String,Double>
enrouteUserVarsAfter;
Map<String,Double>
enrouteValsAfter;
Map<String,Double>
replnValsAfter;
Map<String,Double>
sequenceBasedStateUserVarsAfter;
Map<String,String>
stopProperties;
ODLLatLong
return2VehicleCoord;
ODLTimeEstimates4Stop
timeEstimates;
ODLTravelModeCode
travelMode;
String
earliestDispatch; // Date-time stored in a string.
}
enum ODLTravelModeCode{
P, // Primary travel model, e.g. driving
S, // Secondary travel mode, e.g. walking
}
18.2.4.5.1 ODLTimeEstimates4Stop
Appears in:
plan.vehiclePlans[].plannedStops[].timeEstimates
class ODLTimeEstimates4Stop{
Double cumulativeTravelKm;
Double latenessHours;
Double travelHoursBefore;
Double travelKmBefore;
String
arrival; // Date-time stored in a string.
String
arrivalTimeB4ParkExclDistConfPark; // Date-time stored in a string.
String
complete; // Date-time stored in a string.
String
leaveAfter; // Date-time stored in a string.
String
start; // Date-time stored in a string.
}
18.2.4.6 ODLRouteQualityStatistics
Appears in:
plan.vehiclePlans[].timeStatistics
class ODLRouteQualityStatistics{
Double[] lexicographicCost;
Double cost;
Double latenessSeconds;
Double maxWorkingTimeSeconds;
Double
noLocationOperationTimeSeconds;
Double
onBoardSecondsOverDirectBasedLimit;
Double operationTimeSeconds;
Double travelMetres;
Double travelSeconds;
Double waitTimeSeconds;
Integer usedVehicles;
List<ODLContiguousIsland>
contiguousIslands;
Map<String,Double>
optimiserCostBreakdown;
}
18.2.4.6.1 ODLContiguousIsland
Appears in:
plan.vehiclePlans[].timeStatistics.contiguousIslands[]
class ODLContiguousIsland{
List<String> stopIds;
}
18.3 ODLPlanningQuery
class ODLPlanningQuery{
Boolean keepPlan;
Integer resultsLimit;
List<ODLJob>
jobs;
List<ODLMetricIncreaseTolerance>
tolerances;
Map<String,String>
properties; // User-defined key-values never read by optimiser, use to store own notes etc.
ODLETARequest
ETARequest;
ODLHardTWFeasibleSearch
hardTWRangeRequest;
ODLHighLevelOptimiserCPUBudget
overrideCPUBudget;
ODLMatrixRequestType1
matrixRequest;
ODLMatrixRequestType2
matrixRequestType2;
ODLQueryType
queryType;
ODLRouteGeometryAccuracy
routeGeometryAccuracy;
String _id;
}
enum ODLQueryType{
ETA,
HARD_TW_RANGE,
MATRIX,
MATRIX_REQUEST_TYPE_2,
STANDARD,
}
enum ODLRouteGeometryAccuracy{
HIGH,
NO_GEOMETRY,
RAW,
STD,
}
18.3.1 ODLETARequest
Appears in:
query.ETARequest
class ODLETARequest{
List<ODLCompactVehiclePlan>
plans;
ODLModelConfiguration
configuration;
ODLModelData
data;
}
18.3.1.1 ODLCompactVehiclePlan
Appears in:
query.ETARequest.plans[]
class ODLCompactVehiclePlan{
Map<String,String>
properties; // User-defined key-values never read by optimiser, use to store own notes etc.
String _id;
}
18.3.2 ODLHardTWFeasibleSearch
Appears in:
query.hardTWRangeRequest
class ODLHardTWFeasibleSearch{
Long lowerLimitMillis;
Long searchToleranceMillis;
Long upperLimitMillis;
TreeSet<String> vehicleFilter;
}
18.3.3 ODLMatrixRequestType1
Appears in:
query.matrixRequest
class ODLMatrixRequestType1{
Boolean includeDest2Origins;
List<ODLMatrixRequestLocation>
froms;
List<ODLMatrixRequestLocation>
tos;
List<String>
distanceProfileIds;
List<String> timesUTC;
}
18.3.3.1 ODLMatrixRequestLocation
class ODLMatrixRequestLocation{
Double latitude;
Double longitude;
String id;
String
roadName; // Setting road name is optional but can improve accuracy
}
18.3.4 ODLMatrixRequestType2
Appears in:
query.matrixRequestType2
class ODLMatrixRequestType2{
String
departureTimeUTC; // Date-time stored in a string.
String distancesProfileid;
}
18.3.5 ODLMetricIncreaseTolerance
Appears in:
query.tolerances[]
class ODLMetricIncreaseTolerance{
Double tolerance;
ODLPlanQualityMetricType
type;
}
enum ODLPlanQualityMetricType{
LATENESS_SECONDS,
TIME_SECONDS,
TOTAL_COST,
TRAVEL_TIME_SECONDS,
USED_VEHICLES,
WAITING_TIME_SECONDS,
}
18.4 ODLPlanningQueryResult
class ODLPlanningQueryResult{
List<ODLJobPlanningQueryResult>
costSortedResults;
List<ODLMatrixTimeProfileResult>
matrix;
Map<String,String>
properties; // User-defined key-values never read by optimiser, use to store own notes etc.
ODLHardTWRequestResult
hardTWRangeResult;
ODLOptimiserPlan
ETAResult;
ODLQueryProcessingStatus
processedStatus;
String _id;
String errorMessage;
byte[]
matrixRequestType2ZippedTabSeparatedMatrix;
}
enum ODLQueryProcessingStatus{
COMPLETE,
ERROR,
NOT_FOUND,
STARTED,
WAITING,
}
18.4.1 ODLHardTWRequestResult
Appears in:
queryResult.hardTWRangeResult
class ODLHardTWRequestResult{
ODLJobPlanningQueryResult
after;
ODLJobPlanningQueryResult
before;
ODLJobPlanningQueryResult
original;
}
18.4.2 ODLJobAcceptanceState
class ODLJobAcceptanceState{
ODLJobAcceptanceStateType
state;
String jobId;
}
enum ODLJobAcceptanceStateType{
ACCEPTED,
JOB_NOT_FOUND,
NO_ACCEPTANCE_REQUEST,
PENDING,
REJECTED,
}
18.4.3 ODLJobPlanningQueryResult
Appears in:
queryResult.costSortedResults[]
class ODLJobPlanningQueryResult{
Integer rank;
List<ODLPlannedStop>
timings;
ODLJob
job;
ODLOptimiserPlan
plan;
ODLPlanQualityStatistics
estimatedChange;
ODLVehicle
selected;
String failureReason;
String textDescription;
}
18.4.4 ODLMatrixTimeProfileResult
Appears in:
queryResult.matrix[]
class ODLMatrixTimeProfileResult{
List<ODLMatrixQueryResultElement>
rows;
String distancesProfileId;
String
time; // Date-time stored in a string.
}
18.4.4.1 ODLMatrixQueryResultElement
Appears in:
queryResult.matrix[].rows[]
class ODLMatrixQueryResultElement{
Integer m;
Integer s;
String f;
String t;
}
18.5 ODLCountResponse
class ODLCountResponse{
Long count;
}