Optimization Properties

Setting properties will influence the way the Optimizer is finding a solution to a problem set. By default, the optimization properties are tuned to solve most of the use-cases. It is recommended to keep the default properties as much as possible. However, some properties need to be set. Especially, properties that influence the runtime or the filtering ability of the Optimizer are set usually on startup and are adjusted to meet the user requirements.

Setting properties

Setting properties is done before the optimization starts, like:

  private static void addProperties(IOptimization opti) {

     // Create an empty properties object
    Properties props = new Properties();

    props.setProperty("JOpt.Algorithm.PreOptimization.SA.NumIterations", "10000");
    props.setProperty("JOptExitCondition.JOptGenerationCount", "2000");

    // Adding the properties to the optimization
    opti.addElement(props);
  }

Properties that should be adjusted

Key Default Value Allowed Values Description
JOpt.NumCPUCores 4 [] NumCPUCores defines the number of cores JOpt will use.
JOptExitCondition.
JOptGenerationCount
5000 [] After a certain number of generation JOpt terminates the Optimization
JOpt.Algorithm.PreOptimization.
SA.NumIterations
150000 [] SA.NumIterations defines the number of iterations for simulated annealing.

Further, optimization weights might be tuned to achieve the desired outcome.

Overview of available properties

Category: General Setup

Key Default Value Allowed Values Description
JOpt.PropertyChecker.
ShowWarnings
TRUE [TRUE, FALSE] Property for enabling and disabling the output of the property checker.
JOpt.NumCPUCores 4 [] NumCPUCores defines the number of cores JOpt will use.
JOpt.UnlocatedIdleTime FALSE [TRUE, FALSE] True: Idle time is not arising at a particular node.
JOpt.plausibility.doInputCheck TRUE [TRUE, FALSE] Property to turn on the structural integrity of the system created or user-provided initial solution.
JOpt.plausibility.
doInputCheck.doCapacityCheck
TRUE [TRUE, FALSE] In case doInputCheck is true, this setting can disable the capacity check of the available workingHours vs. the necessary total duration of all nodes.
JOpt.IntermediateStage.
ThrowResults
FALSE [TRUE, FALSE] Do we want to have a result after each Optimization stage?
JOpt.PlausibilityGuard.
PropertyChecker.Active
TRUE [TRUE, FALSE] TRUE: The property checker is activated (default behavior).

Category: Construction

Key Default Value Allowed Values Description
JOpt.Assisted TRUE [TRUE, FALSE] Turning on or off the assisted constructor. The assisted constructor is creating a starting solution for JOpt.

Category: Pre-Optimization

Key Default Value Allowed Values Description
JOpt.Algorithm.PreOptimization.
SA.NumIterations
150000 [] SA.NumIterations defines the number of iterations for simulated annealing.
JOpt.Algorithm.PreOptimization.
SA.StartingTemperature
10.0 [] SA.StartingTemperature defines the starting temperature for simulated annealing.
JOpt.Algorithm.PreOptimization.
SA.CoolingRate
0.999985 [] SA.CoolingRate defines the cooling of simulated annealing after each iteration.
JOpt.Algorithm.PreOptimization.
SA.NumRepetions
1 [] SA.NumRepetions defines the number of cycles for simulated annealing.

Category: Genetic Setup

Key Default Value Allowed Values Description
JOptExitCondition.
JOptGenerationCount
5000 [] After a certain number of generation JOpt terminates the Optimization

Category: Optimization Weights

Key Default Value Allowed Values Description
JOptWeight.TimeWindow 1.0 [] JOpt weight for 'timeWindow' during the Optimization. A higher value results in a higher Optimization cost penalty for violating a time window of a node.
JOptWeight.
ResourceRadiusDrivingDistance
1.0 [] JOpt weight for 'distance' radius during the Optimization. If a maximal driving radius (distance) for a certain resource is defined as a soft constraint, a higher value of this property results in a higher cost penalty if the resource is violating its maximal allowed radius.
JOptWeight.
ResourceRadiusDrivingTime
1.0 [] JOpt weight for 'driving time' radius during the Optimization.If a maximal driving radius (time) for a certain resource is defined as a soft constraint, a higher value of this property results in a higher cost penalty if the resource is violating its maximal allowed radius.
JOptWeight.TimeWindow.
TimeWindowEarlyFactor
10.0 [] JOpt weight for 'TimeWindowEarlyFactor' during the Optimization. If a resource is early at a node (creating idle time) an Optimization cost is assigned taking this value as cost multiplier.
JOptWeight.TimeWindow.
TimeWindowLateFactor
100.0 [] JOpt weight for 'TimeWindowLateFactor' during the Optimization.
JOptWeight.TimeWindow.
ServiceHours
10.0 [] JOpt weight for meeting 'ServiceHours' during the Optimization.
JOptWeight.TimeWindow.
TimeWindowEarlyFactorAtFirstNode
1.0 [] JOpt weight for 'TimeWindowEarlyFactorAtFirstNode' during the Optimization.
JOptWeight.Relationships 100.0 [] JOpt weight for 'Relationships' during the Optimization.
JOptWeight.TotalDistance 1.0 [] JOpt weight for 'TotalDistance' during the Optimization.
JOptWeight.Capacity 1.0 [] JOpt weight for 'Capacity' during the Optimization.
JOptWeight.
UselessUnloadAllVisitation
1.0 [] JOpt weight for 'UselessUnloadAllVisitation' during the Optimization.
JOptWeight.RouteDistance 1.0 [] JOpt weight for 'RouteDistance' during the Optimization.
JOptWeight.DistanceExceeded 10.0 [] JOpt weight for exceedance of 'RouteDistance' during the Optimization.
JOptWeight.TimeExceeded 100.0 [] JOpt weight for exceedance of 'TimeExceeded' during the Optimization.
JOptWeight.ResourceLocationBias 1.0 [] JOpt weight for 'ResourceLocationBias' during the Optimization. For, the last element of a previous route and the first element of the current route the distance is extracted. The higher this distance is, the more cost will be assigned. Therefore,a global clustering (over different route of the same resource) is motivated.
JOptWeight.RouteTime 1.0 [] JOpt weight for 'RouteTime' during the Optimization.
JOptWeight.TotalTime 1.0 [] JOpt weight for 'TotalTime' during the Optimization.
JOptWeight.ResourceActive 0.0 [] JOpt weight for 'ResourceActive' during the Optimization.
JOptWeight.NodeType 1.0 [] JOpt weight for 'NodeType' during the Optimization.
JOptWeight.PreferableResource 1.0 [] JOpt weight for 'PreferableResource' during the Optimization.
JOptWeight.UnPreferableResource 1.0 [] JOpt weight for 'UnPreferableResource' during the Optimization.
JOptWeight.WorkingTime 5.0 [] JOpt weight for 'WorkingTime' during the Optimization.
JOptWeight.CompactingFactor 1.0 [] JOpt weight for 'CompactingFactor' during the Optimization.
JOptWeight.NodeCompactingFactor 0.0 [] JOpt weight for 'NodeCompactingFactor' during the Optimization. In case a node is visited in time but not at the beginning of its opening hours a cost is arising the later it is visited.
JOptWeight.ZoneCode 10.0 [] JOpt weight for 'ZoneCode' during the Optimization. A higher value results in a higher Optimization cost penalty for violating a ZoneCode of a node.

Category: AutoFilter

Key Default Value Allowed Values Description
JOpt.AutoFilter.
LateArrivalMargin
0 [] No description available
JOpt.AutoFilter.
EarlyArrivalMargin
0 [] No description available
JOpt.AutoFilter.
WorkingHoursExceedMargin
0 [] Margin for overtime in seconds
JOpt.AutoFilter.
RouteDistanceExceedMargin
0 [] Margin for over-distance in meter
JOpt.SelectiveAutoFilter FALSE [TRUE, FALSE] Turns on or off the selective AutoFilter. The selective AutoFilter is able to sort out nodes that are violating the Optimization to often. In addition to this property the desired violations that should be considered need to be defined.
JOpt.SelectiveAutoFilter.
TimeWindow.Early
FALSE [TRUE, FALSE] Nodes that are visited to early in too many Optimization steps are filtered out.
JOpt.SelectiveAutoFilter.
TimeWindow.Late
FALSE [TRUE, FALSE] Nodes that are visited to late in too many Optimization steps are filtered out.
JOpt.SelectiveAutoFilter.
DoubleBooking
FALSE [TRUE, FALSE] Nodes that are potentially double booked in to many Optimization steps are filtered out.
JOpt.SelectiveAutoFilter.
ResourceMismatch
FALSE [TRUE, FALSE] Nodes that are visited to often by wrong resources (either preferred or mandatory) are filtered out.
JOpt.SelectiveAutoFilter.
NodeType
FALSE [TRUE, FALSE] Nodes that are visited by the wrong type of resource are filtered out.
JOpt.SelectiveAutoFilter.
RelationShip
FALSE [TRUE, FALSE] Nodes that have wrong relations to other nodes.
JOpt.SelectiveAutoFilter.
CapacityOverload
FALSE [TRUE, FALSE] Nodes that are causing an overload of the resources are filtered out.
JOpt.SelectiveAutoFilter.
WorkingHoursExceeded
FALSE [TRUE, FALSE] Nodes that are causing a working hours exceedance of a resource are filtered out.
JOpt.SelectiveAutoFilter.
MaximalRouteDistanceExceeded
FALSE [TRUE, FALSE] Nodes that are causing the maximal allowed route distance to be exceeded are filtered out.
JOpt.AutoFilter FALSE [TRUE, FALSE] Turns on or off the AutoFilter. The AutoFilter is able to sort out nodes that are violating the Optimization too often.
JOpt.AutoFilter.
useStrictFilterOnLastExecution
TRUE [TRUE, FALSE] Enables the strict mode for the last execution of the autoFilter.