public interface INodeConnectorItem extends Cloneable, Serializable
INodeConnectorItem
holds the two
Strings
of the start and the target location. Each INodeConnectorItem
is describing for example the
time, distance etc. between two IOptimizationElement
and is itself contained within a INodeEdgeConnector
The INodeConnectorItem
can be populated with realistic data of distance and traveling time needed between two locations.
If not populated, missing connection items are created by a IBackupElementConnector
. The generation is
triggered by the INodeEdgeConnector
. By default the DefaultFlatEarthAverageSpeedBackupElementConnector
is used.
Basic Implementation example:
List<INodeConnectorItem> connectionItems = new ArrayList<INodeConnectorItem>();
// Add connections from resources
INodeConnectorItem connectionJackHeilbronn = new NodeEdgeConnectorItem();
connectionJackHeilbronn.setFromOptimizationElement(resourceJackHeilbronn);
connectionJackHeilbronn.setToOptimizationElement(cityHeilbronn);
connectionJackHeilbronn.setDistance(Quantities.getQuantity(2, KILO(METRE)));
connectionJackHeilbronn.setDrivingTime(Duration.ofMinutes(10));
connectionItems.add(connectionJackHeilbronn);
// Add some connection items => The rest will be generated based on a IBackupElementConnector
INodeConnectorItem connectionKoelnOberhausen = new NodeEdgeConnectorItem();
connectionKoelnOberhausen.setFromOptimizationElement(city!oeln);
connectionKoelnOberhausen.setToOptimizationElement(cityOberhausen);
connectionJackHeilbronn.setDistance(Quantities.getQuantity(20, KILO(METRE)));
connectionKoelnOberhausen.doAutoCalculateTime(true); // The time will be calculated based on the provided distance
connectionItems.add(connectionKoelnOberhausen);
INodeConnectorItem connectionOberhausenKoeln = new NodeEdgeConnectorItem();
connectionOberhausenKoeln.setFromOptimizationElement(cityOberhausen);
connectionOberhausenKoeln.setToOptimizationElement(cityKoeln);
connectionJackHeilbronn.setDistance(Quantities.getQuantity(20, KILO(METRE)));
connectionOberhausenKoeln.doAutoCalculateTime( true); // The time will be calculated based on the provided distance
connectionItems.add(connectionOberhausenKoeln);
INodeEdgeConnector myNodeConnector = new NodeEdgeConnector();
// Add items to connector
myNodeConnector.putNodeConnections(connectionItems);
// Set NodeEdgeConnector to an optimization instance
opti.setNodeConnector(this.myNodeConnector);
Modifier and Type | Method and Description |
---|---|
void |
doAutoCalculateTime(boolean isDoAutoCalculateTime)
In case only a distance is provided by a user, the missing driving time information can be calculated
on the fly.
|
long |
getBaseTimeMillis()
Gets the base traveling time in milliseconds.
|
long |
getBaseTimeMillis(Instant time)
Gets the driving time as function of time.
|
IConnectionByTimeStore |
getConnectionByTimeStore()
Gets the
IConnectionByTimeStore of a connection. |
double |
getDistanceMeter()
Gets the distance in meters.
|
double |
getDistanceMeter(Instant time)
Gets the distance as function of time.
|
IOptimizationElement |
getFromOptimizationElement()
Gets the
optimization element (usually a Node ) from which the connection starts. |
Optional<INodeConnectorItem> |
getShiftedCopy(INodeConnectorItem deltaItem) |
Optional<INodeConnectorItem> |
getShiftedCopy(ReducedNodeEdgeConnectorItem deltaItem) |
long |
getTimeMillis(IResource visitor)
Gets the traveling time in milliseconds correct for potential visitor modifications.
|
long |
getTimeMillis(IResource visitor,
Instant time)
Gets the driving time as function of time.
|
IOptimizationElement |
getToOptimizationElement()
Gets the
optimization element (usually a Node ) at which the connection ends. |
boolean |
isCreatedOnTheFly()
Checks if the
connection is created on the fly in case the connection is
not found in the INodeEdgeConnector which means it was created on the fly by its
IBackupElementConnector . |
boolean |
isDoAutoCalculateTime()
Checks if the driving time has to be approximated by calculation because only distance but no exact driving time has been provided
by the user.
|
void |
setConnectionByTimeStore(IConnectionByTimeStore connectionByTimeStore)
|
void |
setDistance(javax.measure.Quantity<javax.measure.quantity.Length> distance)
Sets
distance of the specific connection . |
void |
setDistanceMeter(double distanceMeter)
Deprecated.
please use
setDistance(Quantity) instead |
void |
setDrivingTime(Duration time)
Sets the
driving time of that specific connection . |
void |
setFromOptimizationElement(IOptimizationElement fromOptimizationElement)
Sets the
optimization element (usually a Node ) from which the connection starts. |
void |
setIsCreatedOnTheFly(boolean isCreatedOnTheFly)
Marks the
connection as created on the fly in case the connection is not found
in the INodeEdgeConnector which means it was created on the fly by its IBackupElementConnector . |
void |
setTimeMillis(long timeMillis)
Deprecated.
please use
setDrivingTime(Duration) instead |
void |
setToOptimizationElement(IOptimizationElement toOptimizationElement)
Sets the
optimization element (usually a Node ) at which the connection ends. |
double getDistanceMeter()
long getTimeMillis(IResource visitor)
visitor
- the visitorlong getBaseTimeMillis()
double getDistanceMeter(Instant time)
IConnectionByTimeStore
is
present an input Instant will be used to extract the corresponding value. In case no
store is present, the instant time is ignored.
Internally, when the distance information of the connection is requested, the departure time of the from element is used as input.
time
- the instant timelong getTimeMillis(IResource visitor, Instant time)
IConnectionByTimeStore
is
present an input Instant will be used to extract the corresponding value. In case no
store is present, the instant time is ignored.
Internally, when the driving time information of the connection is requested, the departure time of the from element is used as input.
visitor
- the visitortime
- the instant timelong getBaseTimeMillis(Instant time)
IConnectionByTimeStore
is
present an input Instant will be used to extract the corresponding value. In case no
store is present, the instant time is ignored.
Internally, when the driving time information of the connection is requested, the departure time of the from element is used as input.
time
- the instant timevoid setDistance(javax.measure.Quantity<javax.measure.quantity.Length> distance)
distance
of the specific connection
.distance
- Quantity of the distance to be setvoid setDrivingTime(Duration time)
driving time
of that specific connection
.
Please note that the same connection
in the other direction can have a different
driving time
.
time
- the duration of the driving time@Deprecated void setDistanceMeter(double distanceMeter)
setDistance(Quantity)
instead
Sets the distance
of a connection
in meters.
distanceMeter
- the double distance in meter to be set@Deprecated void setTimeMillis(long timeMillis)
setDrivingTime(Duration)
instead
Sets the duration
of a connection
in milliseconds.
timeMillis
- the long milliseconds to be setIConnectionByTimeStore getConnectionByTimeStore()
IConnectionByTimeStore
of a connection. In case the driving
time is a function of the clock-time itself a connection store can be defined.
For example, using a certain connection during a rushhour at a Monday morning
takes longer compared to a Sunday afternoon.
Further, the distance can be also modeled as a function of time, for example if another path is taken depending on the time.
void setConnectionByTimeStore(IConnectionByTimeStore connectionByTimeStore)
NodeEdgeConnectorItem.connectionByTimeStore
. In case the driving
time is a function of the clock-time itself a connection store can be defined.
For example, using a certain connection during a rushhour at a Monday morning
takes longer compared to a Sunday afternoon.connectionByTimeStore
- the iConnectionByTimeStoreIOptimizationElement getFromOptimizationElement()
optimization element
(usually a Node
) from which the connection
starts.void setFromOptimizationElement(IOptimizationElement fromOptimizationElement)
optimization element
(usually a Node
) from which the connection
starts.fromOptimizationElement
- the iOptimizationElement to be setIOptimizationElement getToOptimizationElement()
optimization element
(usually a Node
) at which the connection
ends.void setToOptimizationElement(IOptimizationElement toOptimizationElement)
optimization element
(usually a Node
) at which the connection
ends.toOptimizationElement
- the iOptimizationElement to be setvoid setIsCreatedOnTheFly(boolean isCreatedOnTheFly)
connection
as created on the fly
in case the connection
is not found
in the INodeEdgeConnector
which means it was created on the fly by its IBackupElementConnector
.isCreatedOnTheFly
- the boolean to be setboolean isCreatedOnTheFly()
connection
is created on the fly
in case the connection
is
not found in the INodeEdgeConnector
which means it was created on the fly by its
IBackupElementConnector
.void doAutoCalculateTime(boolean isDoAutoCalculateTime)
isDoAutoCalculateTime
- the boolean to be setboolean isDoAutoCalculateTime()
doAutoCalculateTime(boolean)
Optional<INodeConnectorItem> getShiftedCopy(INodeConnectorItem deltaItem)
Optional<INodeConnectorItem> getShiftedCopy(ReducedNodeEdgeConnectorItem deltaItem)
Copyright © 2017–2023 DNA Evolutions GmbH. All rights reserved.