Commit 681cc6df authored by Tobias Meuser's avatar Tobias Meuser
Browse files

Final version for Springer book

parent d202296e
......@@ -32,6 +32,7 @@ import de.tudarmstadt.maki.simonstrator.api.Time;
import de.tudarmstadt.maki.simonstrator.api.component.ComponentNotAvailableException;
import de.tudarmstadt.maki.simonstrator.api.component.network.NetInterface;
import de.tudarmstadt.maki.simonstrator.api.component.network.NetworkComponent.NetInterfaceName;
import de.tudarmstadt.maki.simonstrator.api.component.sensor.environment.data.RoadProperty;
import de.tudarmstadt.maki.simonstrator.api.component.transition.TransitionEngine;
import de.tudarmstadt.maki.simonstrator.api.component.transport.ConnectivityListener;
import de.tudarmstadt.maki.simonstrator.api.component.vehicular.VehicleInformationComponent;
......@@ -49,6 +50,7 @@ import de.tudarmstadt.maki.simonstrator.api.component.vehicular.information.Road
import de.tudarmstadt.maki.simonstrator.api.component.vehicular.roadnetwork.RoadNetwork;
import de.tudarmstadt.maki.simonstrator.api.component.vehicular.roadnetwork.RoadNetworkEdge;
import de.tudarmstadt.maki.simonstrator.api.component.vehicular.roadnetwork.RoadNetworkRoute;
import de.tudresden.sumo.cmd.Simulation;
public class DefaultCachingComponent implements CachingComponent, ConnectivityListener {
......@@ -62,8 +64,8 @@ public class DefaultCachingComponent implements CachingComponent, ConnectivityLi
private CacheReplacementStrategy _replacementStrategy;
CacheDecisionStrategy _defaultDecisionStrategy;
Map<Class<? extends Object>, CacheDecisionStrategy> _decisionStrategies = new HashMap<>();
private CacheDecisionStrategy _defaultDecisionStrategy;
private Map<Class<? extends Object>, CacheDecisionStrategy> _decisionStrategies = new HashMap<>();
private int _minObservations = 0;
......@@ -267,7 +269,7 @@ public class DefaultCachingComponent implements CachingComponent, ConnectivityLi
}
}
shrinkCache(_maxCacheSize - 1);
shrinkCache(_maxCacheSize);
entries.add(pCacheEntry);
......@@ -277,7 +279,7 @@ public class DefaultCachingComponent implements CachingComponent, ConnectivityLi
}
private void shrinkCache(int maxSize) {
while (maxSize < getTotalCacheSize()) {
while (getTotalCacheSize() > maxSize) {
int maxSizeValue = 0;
List<PointInformation> removedValues = null;
List<PointInformation> removedList = null;
......@@ -295,6 +297,13 @@ public class DefaultCachingComponent implements CachingComponent, ConnectivityLi
}
for (Entry<Object, List<PointInformation>> entry : perPosition.entrySet()) {
if (!((RoadNetworkEdge) entry.getKey()).isActive()) {
removedValues = entry.getValue();
removedList = informationList;
break;
}
if (maxSizeValue < entry.getValue().size()) {
maxSizeValue = entry.getValue().size();
removedValues = entry.getValue();
......
......@@ -31,12 +31,14 @@ import de.tudarmstadt.maki.simonstrator.api.Time;
import de.tudarmstadt.maki.simonstrator.api.component.sensor.environment.data.RoadProperty;
import de.tudarmstadt.maki.simonstrator.api.component.sensor.environment.data.TemporalDependencyMatrix;
import de.tudarmstadt.maki.simonstrator.api.component.sensor.environment.data.VectoralProperty;
import de.tudarmstadt.maki.simonstrator.api.component.sensor.environment.data.aggregation.AggregationInformation;
import de.tudarmstadt.maki.simonstrator.api.component.transition.MechanismState;
import de.tudarmstadt.maki.simonstrator.api.component.transition.TransferState;
import de.tudarmstadt.maki.simonstrator.api.component.vehicular.caching.decision.AbstractCacheDecisionStrategy;
import de.tudarmstadt.maki.simonstrator.api.component.vehicular.caching.decision.CacheDecisionStrategy;
import de.tudarmstadt.maki.simonstrator.api.component.vehicular.caching.decision.CacheDecisionStrategyParameters;
import de.tudarmstadt.maki.simonstrator.api.component.vehicular.caching.decision.CacheSizeAwareCacheDecisionStrategy;
import de.tudarmstadt.maki.simonstrator.api.component.vehicular.information.AggregatedInformation;
import de.tudarmstadt.maki.simonstrator.api.component.vehicular.information.AvailableInformationAttributes;
import de.tudarmstadt.maki.simonstrator.api.component.vehicular.information.PointInformation;
import de.tudarmstadt.maki.simonstrator.api.component.vehicular.information.RoadInformation;
......@@ -112,7 +114,7 @@ public class TTLbasedVectoralCacheDecisionStrategy extends AbstractCacheDecision
if (value instanceof VectoralProperty) {
value = ((VectoralProperty) value).getMostProbableIndex();
}
boolean differentValue = false;
boolean differentValue = true;
if (differentValue) {
List<Integer> possibleValues = new ArrayList<>();
......@@ -145,6 +147,13 @@ public class TTLbasedVectoralCacheDecisionStrategy extends AbstractCacheDecision
}
}
}
if (t instanceof AggregatedInformation) {
AggregationInformation aggregationInformation = ((AggregatedInformation)t).getAggregationInformation();
if (aggregationInformation != null && aggregationInformation.getMinTimestamp() < minTimestamp) {
minTimestamp = aggregationInformation.getMinTimestamp();
}
}
}
VectoralProperty currentProperty = null;
......@@ -156,7 +165,6 @@ public class TTLbasedVectoralCacheDecisionStrategy extends AbstractCacheDecision
double impact = impactFunction.calculateImpact(t);
TemporalDependencyMatrix dependencyMatrix = property.getDependencyMatrix();
dependencyMatrix = modifyDependencyMatrix(dependencyMatrix.age((maxTimestamp - property.getDetectionDate()) / SCALING), impact);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment