public class NodeEdgeConnector extends AbstractNodeEdgeConnector
table
of INodeConnectorItem
which hold the two
Strings
of the start and the end location. Each INodeConnectorItem
is describing
for example the time, distance etc. between two nodes.
The INodeConnectorItem
can be populated with realistic data on distance and time
needed between two locations. The time and distance between two locations can be different
depending in which direction you are heading since traffic or route taken might change. If not
populated, air distance and average speed is being used.
The Nodes
are filtered before the INodeconnector
is being populated. If one
Node
is only accessible in December and another one only in January the Optimizer
never puts them in the same Route
and the specific data on the distance between these
Nodes
does not need to be acquired.
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 as fall back solution to bird
// distances.
INodeConnectorItem connectionKoelnOberhausen = new NodeEdgeConnectorItem();
connectionKoelnOberhausen.setFromOptimizationElement(cityKoeln);
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
setNodeConnector(this.myNodeConnector);
Modifier and Type | Class and Description |
---|---|
static class |
NodeEdgeConnector.FlatePlaceOnEarthItem |
Constructor and Description |
---|
NodeEdgeConnector()
The constructor for a
NodeEdgeConnector , which is used to clean up and remove
connections. |
NodeEdgeConnector(IBackupElementConnector backUpConnector)
The constructor for a
NodeEdgeConnector , which is used to clean up and remove
connections. |
Modifier and Type | Method and Description |
---|---|
static double |
angleFromCoordinate(double long1,
double lat1,
double long2,
double lat2) |
Set<String> |
cleanUp(List<IOptimizationElement> presentItems,
List<String> presentIdemIds)
Cleans up the connections table by removing connections with no present items.
|
static double |
distancePlacePlaceFlatEarth(double lon1,
double lat1,
double lon2,
double lat2) |
static double |
distancePlacePlaceFlatEarth(IOptimizationElement e1,
IOptimizationElement e2) |
static NodeEdgeConnector.FlatePlaceOnEarthItem |
distancePlacePlaceFlatEarthPolar(double lon1,
double lat1,
double lon2,
double lat2) |
static double |
distancePlacePlaceHaversine(double lon1,
double lat1,
double lon2,
double lat2) |
INodeConnectorItem |
getNodeConnection(IOptimizationElement fromElement,
IOptimizationElement toElement,
ILogicEntityRoute contextRoute) |
INodeConnectorItem |
getNodeConnection(IOptimizationElement fromElement,
IOptimizationElement toElement,
IResource visitor)
Gets a specific node connection.
|
void |
refactorNodeConnectorConnection(IOptimizationElement oldElement,
IOptimizationElement newElement,
boolean reAddConnections) |
boolean |
removeConnection(IOptimizationElement removeElement)
Removes a connection.
|
boolean |
removeConnection(IOptimizationElement removeElement,
Optional<Set<String>> protectedIdsOpt)
Removes the connection.
|
void |
removeConnectionFromElements(IOptimizationElement removeElement) |
void |
removeConnectionFromElements(IOptimizationElement removeElement,
Set<String> protectedIds) |
attachSeparatedTestConnectionProvider, dropSeparatedTestConnectionProvider, getBackupElementConnector, getExternalConnectionProvider, getNodeConnection, getNodeConnections, getNodeConnectorTable, getSeparatedTestConnectionProvider, hasConnectionToOrFrom, putNodeConnection, putNodeConnection, putNodeConnectionIfNotExisting, putNodeConnectionIfNotExisting, putNodeConnections, putNodeConnectionsIfNotExisting, setBackupElementConnector, setExternalConnectionProvider, setNodeConnections
public NodeEdgeConnector(IBackupElementConnector backUpConnector)
NodeEdgeConnector
, which is used to clean up and remove
connections.backUpConnector
- the iBackupElementConnectorpublic NodeEdgeConnector()
NodeEdgeConnector
, which is used to clean up and remove
connections. The alternative with a IBackupElementConnector
is NodeEdgeConnector(IBackupElementConnector)
.public void removeConnectionFromElements(IOptimizationElement removeElement)
public void removeConnectionFromElements(IOptimizationElement removeElement, Set<String> protectedIds)
public void refactorNodeConnectorConnection(IOptimizationElement oldElement, IOptimizationElement newElement, boolean reAddConnections)
public boolean removeConnection(IOptimizationElement removeElement, Optional<Set<String>> protectedIdsOpt)
INodeEdgeConnector
removeElement
- the remove elementprotectedIdsOpt
- the protected ids optpublic boolean removeConnection(IOptimizationElement removeElement)
INodeEdgeConnector
removeElement
- the remove elementpublic Set<String> cleanUp(List<IOptimizationElement> presentItems, List<String> presentIdemIds)
INodeEdgeConnector
presentItems
- the present items to be keptpresentIdemIds
- the present items ids to be kept.public INodeConnectorItem getNodeConnection(IOptimizationElement fromElement, IOptimizationElement toElement, ILogicEntityRoute contextRoute)
public INodeConnectorItem getNodeConnection(IOptimizationElement fromElement, IOptimizationElement toElement, IResource visitor)
INodeEdgeConnector
fromElement
- the starting IOptimizationElement
of the connectiontoElement
- the termination IOptimizationElement
of the connectionvisitor
- the IResource
visitorpublic static double distancePlacePlaceHaversine(double lon1, double lat1, double lon2, double lat2)
public static double distancePlacePlaceFlatEarth(double lon1, double lat1, double lon2, double lat2)
public static NodeEdgeConnector.FlatePlaceOnEarthItem distancePlacePlaceFlatEarthPolar(double lon1, double lat1, double lon2, double lat2)
public static double angleFromCoordinate(double long1, double lat1, double long2, double lat2)
public static double distancePlacePlaceFlatEarth(IOptimizationElement e1, IOptimizationElement e2)
Copyright © 2017–2023 DNA Evolutions GmbH. All rights reserved.