Skip to content
Snippets Groups Projects
Commit 9778355f authored by Johannes Mey's avatar Johannes Mey
Browse files

create minimal models (currently, INJECT and REPAIR are the same)

parent 04d81d27
No related branches found
No related tags found
No related merge requests found
Showing
with 303 additions and 66 deletions
package hu.bme.mit.trainbenchmark.generator.minimal;
import static hu.bme.mit.trainbenchmark.constants.ModelConstants.ELEMENTS;
import static hu.bme.mit.trainbenchmark.constants.ModelConstants.REGION;
import static hu.bme.mit.trainbenchmark.constants.ModelConstants.SWITCH;
import com.google.common.collect.ImmutableMap;
import hu.bme.mit.trainbenchmark.generator.ModelSerializer;
import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfig;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Map;
import hu.bme.mit.trainbenchmark.generator.ModelSerializer;
import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfig;
import static hu.bme.mit.trainbenchmark.constants.ModelConstants.*;
public class MinimalSwitchMonitoredGenerator extends MinimalModelGenerator {
public class MinimalPosLengthRepairGenerator extends MinimalModelGenerator {
public MinimalSwitchMonitoredGenerator(final ModelSerializer<?> serializer, final GeneratorConfig generatorConfig) {
public MinimalPosLengthRepairGenerator(final ModelSerializer<?> serializer, final GeneratorConfig generatorConfig) {
super(serializer, generatorConfig);
}
@Override
protected void buildPatternModel() throws FileNotFoundException, IOException {
final Object region = serializer.createVertex(REGION);
final Object sw = serializer.createVertex(SWITCH);
serializer.createEdge(ELEMENTS, region, sw);
final Map<String, ? extends Object> segmentAttributes = ImmutableMap.of(LENGTH, -1);
final Object segment = serializer.createVertex(SEGMENT, segmentAttributes);
serializer.createEdge(ELEMENTS, region, segment);
}
}
package hu.bme.mit.trainbenchmark.generator.minimal;
import static hu.bme.mit.trainbenchmark.constants.ModelConstants.ELEMENTS;
import static hu.bme.mit.trainbenchmark.constants.ModelConstants.FOLLOWS;
import static hu.bme.mit.trainbenchmark.constants.ModelConstants.MONITORED_BY;
import static hu.bme.mit.trainbenchmark.constants.ModelConstants.REGION;
import static hu.bme.mit.trainbenchmark.constants.ModelConstants.ROUTE;
import static hu.bme.mit.trainbenchmark.constants.ModelConstants.SENSOR;
import static hu.bme.mit.trainbenchmark.constants.ModelConstants.SENSORS;
import static hu.bme.mit.trainbenchmark.constants.ModelConstants.SWITCH;
import static hu.bme.mit.trainbenchmark.constants.ModelConstants.SWITCHPOSITION;
import static hu.bme.mit.trainbenchmark.constants.ModelConstants.TARGET;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Collections;
......@@ -18,12 +7,15 @@ import java.util.Map;
import com.google.common.collect.ImmutableMap;
import hu.bme.mit.trainbenchmark.constants.Position;
import hu.bme.mit.trainbenchmark.generator.ModelSerializer;
import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfig;
public class MinimalRouteSensorGenerator extends MinimalModelGenerator {
import static hu.bme.mit.trainbenchmark.constants.ModelConstants.*;
public class MinimalRouteSensorInjectGenerator extends MinimalModelGenerator {
public MinimalRouteSensorGenerator(final ModelSerializer<?> serializer, final GeneratorConfig generatorConfig) {
public MinimalRouteSensorInjectGenerator(final ModelSerializer<?> serializer, final GeneratorConfig generatorConfig) {
super(serializer, generatorConfig);
}
......@@ -33,14 +25,16 @@ public class MinimalRouteSensorGenerator extends MinimalModelGenerator {
final Object route = serializer.createVertex(ROUTE);
final Object sensor = serializer.createVertex(SENSOR);
final Object sw = serializer.createVertex(SWITCH);
serializer.setAttribute(SWITCH, sw, CURRENTPOSITION, Position.STRAIGHT);
serializer.createEdge(SENSORS, region, sensor);
serializer.createEdge(ELEMENTS, region, sw);
final Map<String, Object> swPOutgoingEdges = ImmutableMap.of(TARGET, sw);
final Map<String, ? extends Object> emptyMap = Collections.emptyMap();
final Object swP = serializer.createVertex(SWITCHPOSITION, emptyMap, swPOutgoingEdges);
final Map<String, Object> swPAttributes = ImmutableMap.of(POSITION, Position.STRAIGHT);
final Object swP = serializer.createVertex(SWITCHPOSITION, swPAttributes, swPOutgoingEdges);
serializer.createEdge(FOLLOWS, route, swP);
serializer.createEdge(MONITORED_BY, sw, sensor);
......
package hu.bme.mit.trainbenchmark.generator.minimal;
import com.google.common.collect.ImmutableMap;
import hu.bme.mit.trainbenchmark.constants.Position;
import hu.bme.mit.trainbenchmark.generator.ModelSerializer;
import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfig;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Collections;
import java.util.Map;
import static hu.bme.mit.trainbenchmark.constants.ModelConstants.*;
public class MinimalRouteSensorRepairGenerator extends MinimalModelGenerator {
public MinimalRouteSensorRepairGenerator(final ModelSerializer<?> serializer, final GeneratorConfig generatorConfig) {
super(serializer, generatorConfig);
}
@Override
protected void buildPatternModel() throws FileNotFoundException, IOException {
final Object region = serializer.createVertex(REGION);
final Object route = serializer.createVertex(ROUTE);
final Object sensor = serializer.createVertex(SENSOR);
final Object sw = serializer.createVertex(SWITCH);
serializer.setAttribute(SWITCH, sw, CURRENTPOSITION, Position.STRAIGHT);
serializer.createEdge(SENSORS, region, sensor);
serializer.createEdge(ELEMENTS, region, sw);
final Map<String, Object> swPOutgoingEdges = ImmutableMap.of(TARGET, sw);
final Map<String, Object> swPAttributes = ImmutableMap.of(POSITION, Position.STRAIGHT);
final Object swP = serializer.createVertex(SWITCHPOSITION, swPAttributes, swPOutgoingEdges);
serializer.createEdge(FOLLOWS, route, swP);
serializer.createEdge(MONITORED_BY, sw, sensor);
}
}
package hu.bme.mit.trainbenchmark.generator.minimal;
import static hu.bme.mit.trainbenchmark.constants.ModelConstants.CONNECTS_TO;
import static hu.bme.mit.trainbenchmark.constants.ModelConstants.ELEMENTS;
import static hu.bme.mit.trainbenchmark.constants.ModelConstants.EXIT;
import static hu.bme.mit.trainbenchmark.constants.ModelConstants.MONITORED_BY;
import static hu.bme.mit.trainbenchmark.constants.ModelConstants.REGION;
import static hu.bme.mit.trainbenchmark.constants.ModelConstants.REQUIRES;
import static hu.bme.mit.trainbenchmark.constants.ModelConstants.ROUTE;
import static hu.bme.mit.trainbenchmark.constants.ModelConstants.SEGMENT;
import static hu.bme.mit.trainbenchmark.constants.ModelConstants.SEMAPHORE;
import static hu.bme.mit.trainbenchmark.constants.ModelConstants.SENSOR;
import static hu.bme.mit.trainbenchmark.constants.ModelConstants.SENSORS;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Collections;
......@@ -20,19 +8,23 @@ import java.util.Map;
import com.google.common.collect.ImmutableMap;
import hu.bme.mit.trainbenchmark.constants.ModelConstants;
import hu.bme.mit.trainbenchmark.constants.Signal;
import hu.bme.mit.trainbenchmark.generator.ModelSerializer;
import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfig;
public class MinimalSemaphoreNeighborGenerator extends MinimalModelGenerator {
import static hu.bme.mit.trainbenchmark.constants.ModelConstants.*;
public class MinimalSemaphoreNeighborInjectGenerator extends MinimalModelGenerator {
public MinimalSemaphoreNeighborGenerator(final ModelSerializer<?> serializer, final GeneratorConfig generatorConfig) {
public MinimalSemaphoreNeighborInjectGenerator(final ModelSerializer<?> serializer, final GeneratorConfig generatorConfig) {
super(serializer, generatorConfig);
}
@Override
protected void buildPatternModel() throws FileNotFoundException, IOException {
protected void buildPatternModel() throws IOException {
final Object region = serializer.createVertex(REGION);
final Object semaphore = serializer.createVertex(SEMAPHORE);
final Map<String, Object> semaphoreAttributes = ImmutableMap.of(SIGNAL, Signal.GO);
final Object semaphore = serializer.createVertex(SEMAPHORE, semaphoreAttributes);
final Map<String, Object> routeOutgoingEdges = ImmutableMap.of(EXIT, semaphore);
final Map<String, ? extends Object> emptyMap = Collections.emptyMap();
......
package hu.bme.mit.trainbenchmark.generator.minimal;
import com.google.common.collect.ImmutableMap;
import hu.bme.mit.trainbenchmark.constants.ModelConstants;
import hu.bme.mit.trainbenchmark.constants.Signal;
import hu.bme.mit.trainbenchmark.generator.ModelSerializer;
import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfig;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Collections;
import java.util.Map;
import static hu.bme.mit.trainbenchmark.constants.ModelConstants.*;
public class MinimalSemaphoreNeighborRepairGenerator extends MinimalModelGenerator {
public MinimalSemaphoreNeighborRepairGenerator(final ModelSerializer<?> serializer, final GeneratorConfig generatorConfig) {
super(serializer, generatorConfig);
}
@Override
protected void buildPatternModel() throws IOException {
final Object region = serializer.createVertex(REGION);
final Map<String, Object> semaphoreAttributes = ImmutableMap.of(SIGNAL, Signal.GO);
final Object semaphore = serializer.createVertex(SEMAPHORE, semaphoreAttributes);
final Map<String, Object> routeOutgoingEdges = ImmutableMap.of(EXIT, semaphore);
final Map<String, ? extends Object> emptyMap = Collections.emptyMap();
final Object route1 = serializer.createVertex(ROUTE, emptyMap, routeOutgoingEdges);
final Object route2 = serializer.createVertex(ROUTE);
final Object sensor1 = serializer.createVertex(SENSOR);
final Object sensor2 = serializer.createVertex(SENSOR);
final Object te1 = serializer.createVertex(SEGMENT);
final Object te2 = serializer.createVertex(SEGMENT);
serializer.createEdge(SENSORS, region, sensor1);
serializer.createEdge(SENSORS, region, sensor2);
serializer.createEdge(ELEMENTS, region, te1);
serializer.createEdge(ELEMENTS, region, te2);
serializer.createEdge(ModelConstants.SEMAPHORES, te1, semaphore);
serializer.createEdge(REQUIRES, route1, sensor1);
serializer.createEdge(REQUIRES, route2, sensor2);
serializer.createEdge(MONITORED_BY, te1, sensor1);
serializer.createEdge(MONITORED_BY, te2, sensor2);
serializer.createEdge(CONNECTS_TO, te1, te2);
}
}
package hu.bme.mit.trainbenchmark.generator.minimal;
import java.io.IOException;
import hu.bme.mit.trainbenchmark.constants.Position;
import hu.bme.mit.trainbenchmark.generator.ModelSerializer;
import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfig;
import static hu.bme.mit.trainbenchmark.constants.ModelConstants.*;
public class MinimalSwitchMonitoredInjectGenerator extends MinimalModelGenerator {
public MinimalSwitchMonitoredInjectGenerator(final ModelSerializer<?> serializer, final GeneratorConfig generatorConfig) {
super(serializer, generatorConfig);
}
@Override
protected void buildPatternModel() throws IOException {
final Object region = serializer.createVertex(REGION);
final Object sw = serializer.createVertex(SWITCH);
serializer.setAttribute(SWITCH, sw, CURRENTPOSITION, Position.STRAIGHT);
serializer.createEdge(ELEMENTS, region, sw);
}
}
package hu.bme.mit.trainbenchmark.generator.minimal;
import hu.bme.mit.trainbenchmark.constants.Position;
import hu.bme.mit.trainbenchmark.generator.ModelSerializer;
import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfig;
import java.io.IOException;
import static hu.bme.mit.trainbenchmark.constants.ModelConstants.*;
public class MinimalSwitchMonitoredRepairGenerator extends MinimalModelGenerator {
public MinimalSwitchMonitoredRepairGenerator(final ModelSerializer<?> serializer, final GeneratorConfig generatorConfig) {
super(serializer, generatorConfig);
}
@Override
protected void buildPatternModel() throws IOException {
final Object region = serializer.createVertex(REGION);
final Object sw = serializer.createVertex(SWITCH);
serializer.setAttribute(SWITCH, sw, CURRENTPOSITION, Position.STRAIGHT);
serializer.createEdge(ELEMENTS, region, sw);
}
}
......@@ -25,12 +25,13 @@ import java.util.Map;
import com.google.common.collect.ImmutableMap;
import hu.bme.mit.trainbenchmark.constants.Position;
import hu.bme.mit.trainbenchmark.generator.ModelSerializer;
import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfig;
public class MinimalSwitchSetGenerator extends MinimalModelGenerator {
public class MinimalSwitchSetInjectGenerator extends MinimalModelGenerator {
public MinimalSwitchSetGenerator(final ModelSerializer<?> serializer, final GeneratorConfig generatorConfig) {
public MinimalSwitchSetInjectGenerator(final ModelSerializer<?> serializer, final GeneratorConfig generatorConfig) {
super(serializer, generatorConfig);
}
......@@ -53,8 +54,8 @@ public class MinimalSwitchSetGenerator extends MinimalModelGenerator {
final Object route = serializer.createVertex(ROUTE, emptyMap, routeOutgoingEdges);
// sw
final Map<String, ? extends Object> swProperties = ImmutableMap.of(CURRENTPOSITION, DIVERGING);
final Object sw = serializer.createVertex(SWITCH, swProperties);
final Object sw = serializer.createVertex(SWITCH);
serializer.setAttribute(SWITCH, sw, CURRENTPOSITION, DIVERGING);
serializer.createEdge(ELEMENTS, region, sw);
......
package hu.bme.mit.trainbenchmark.generator.minimal;
import com.google.common.collect.ImmutableMap;
import hu.bme.mit.trainbenchmark.generator.ModelSerializer;
import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfig;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Collections;
import java.util.Map;
import static hu.bme.mit.trainbenchmark.constants.ModelConstants.*;
import static hu.bme.mit.trainbenchmark.constants.Position.DIVERGING;
import static hu.bme.mit.trainbenchmark.constants.Position.STRAIGHT;
import static hu.bme.mit.trainbenchmark.constants.Signal.GO;
public class MinimalSwitchSetRepairGenerator extends MinimalModelGenerator {
public MinimalSwitchSetRepairGenerator(final ModelSerializer<?> serializer, final GeneratorConfig generatorConfig) {
super(serializer, generatorConfig);
}
@Override
protected void buildPatternModel() throws FileNotFoundException, IOException {
final Object region = serializer.createVertex(REGION);
final Object segment = serializer.createVertex(SEGMENT);
serializer.createEdge(ELEMENTS, region, segment);
// semaphore
final Map<String, ? extends Object> semaphoreProperties = ImmutableMap.of(SIGNAL, GO);
final Object semaphore = serializer.createVertex(SEMAPHORE, semaphoreProperties);
serializer.createEdge(SEMAPHORES, segment, semaphore);
// route
final Map<String, Object> routeOutgoingEdges = ImmutableMap.of(ENTRY, semaphore);
final Map<String, ? extends Object> emptyMap = Collections.emptyMap();
final Object route = serializer.createVertex(ROUTE, emptyMap, routeOutgoingEdges);
// sw
final Object sw = serializer.createVertex(SWITCH);
serializer.setAttribute(SWITCH, sw, CURRENTPOSITION, DIVERGING);
serializer.createEdge(ELEMENTS, region, sw);
// swP
final Map<String, ? extends Object> swPProperties = ImmutableMap.of(POSITION, STRAIGHT);
final Map<String, Object> swPOutgoingEdges = ImmutableMap.of(TARGET, sw);
final Object swP = serializer.createVertex(SWITCHPOSITION, swPProperties, swPOutgoingEdges);
serializer.createEdge(FOLLOWS, route, swP);
}
}
......@@ -23,7 +23,6 @@ import static hu.bme.mit.trainbenchmark.constants.ModelConstants.SWITCH;
import static hu.bme.mit.trainbenchmark.constants.ModelConstants.SWITCHPOSITION;
import static hu.bme.mit.trainbenchmark.constants.ModelConstants.TARGET;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
......@@ -42,26 +41,28 @@ import hu.bme.mit.trainbenchmark.constants.TrainBenchmarkConstants;
import hu.bme.mit.trainbenchmark.generator.ModelGenerator;
import hu.bme.mit.trainbenchmark.generator.ModelSerializer;
import hu.bme.mit.trainbenchmark.generator.config.GeneratorConfig;
import hu.bme.mit.trainbenchmark.generator.config.Scenario;
import hu.bme.mit.trainbenchmark.generator.minimal.*;
public class ScalableModelGenerator extends ModelGenerator {
private static final Map<String, Object> EMPTY_MAP = Collections.<String, Object> emptyMap();
public static final int MAX_SEGMENT_LENGTH = 1000;
private static final int MAX_SEGMENT_LENGTH = 1000;
protected int maxSegments = 5;
protected int maxRoutes;
protected int maxSwitchPositions = 20;
protected int maxSensors = 10;
private int maxSegments = 5;
private int maxRoutes;
private int maxSwitchPositions = 20;
private int maxSensors = 10;
protected int posLengthErrorPercent = 0;
protected int switchSensorErrorPercent = 0;
protected int routeSensorErrorPercent = 0;
protected int semaphoreNeighborErrorPercent = 0;
protected int switchSetErrorPercent = 0;
protected int connectedSegmentsErrorPercent = 0;
private int posLengthErrorPercent = 0;
private int switchSensorErrorPercent = 0;
private int routeSensorErrorPercent = 0;
private int semaphoreNeighborErrorPercent = 0;
private int switchSetErrorPercent = 0;
private int connectedSegmentsErrorPercent = 0;
protected Random random = new Random(TrainBenchmarkConstants.RANDOM_SEED);
private Random random = new Random(TrainBenchmarkConstants.RANDOM_SEED);
public ScalableModelGenerator(final ModelSerializer<?> serializer, final GeneratorConfig generatorConfig) {
super(serializer, generatorConfig);
......@@ -86,6 +87,9 @@ public class ScalableModelGenerator extends ModelGenerator {
switchSensorErrorPercent = 18;
switchSetErrorPercent = 15;
break;
case MINIMAL:
// delegate this later
break;
default:
throw new UnsupportedOperationException("Scenario not supported.");
}
......@@ -98,12 +102,57 @@ public class ScalableModelGenerator extends ModelGenerator {
}
}
protected int nextRandom() {
private int nextRandom() {
return random.nextInt(100);
}
@Override
protected void constructModel() throws FileNotFoundException, IOException {
protected void constructModel() throws IOException {
if (this.gc.getConfigBase().getScenario() == Scenario.MINIMAL) {
switch (this.gc.getConfigBase().getModelType()) {
case CONNECTEDSEGMENTS_INJECT:
new MinimalConnectedSegmentsInjectGenerator(serializer, gc).constructModel();
break;
case POSLENGTH_INJECT:
new MinimalPosLengthInjectGenerator(serializer, gc).constructModel();
break;
case ROUTESENSOR_INJECT:
new MinimalRouteSensorInjectGenerator(serializer, gc).constructModel();
break;
case SEMAPHORENEIGHBOR_INJECT:
new MinimalSemaphoreNeighborInjectGenerator(serializer, gc).constructModel();
break;
case SWITCHMONITORED_INJECT:
new MinimalSwitchMonitoredInjectGenerator(serializer, gc).constructModel();
break;
case SWITCHSET_INJECT:
new MinimalSwitchSetInjectGenerator(serializer, gc).constructModel();
break;
case CONNECTEDSEGMENTS_REPAIR:
new MinimalConnectedSegmentsRepairGenerator(serializer, gc).constructModel();
break;
case POSLENGTH_REPAIR:
new MinimalConnectedSegmentsRepairGenerator(serializer, gc).constructModel();
break;
case ROUTESENSOR_REPAIR:
new MinimalRouteSensorRepairGenerator(serializer, gc).constructModel();
break;
case SEMAPHORENEIGHBOR_REPAIR:
new MinimalSemaphoreNeighborRepairGenerator(serializer, gc).constructModel();
break;
case SWITCHMONITORED_REPAIR:
new MinimalSwitchMonitoredRepairGenerator(serializer, gc).constructModel();
break;
case SWITCHSET_REPAIR:
new MinimalSwitchSetRepairGenerator(serializer, gc).constructModel();
break;
}
return;
}
Object prevSemaphore = null;
Object firstSemaphore = null;
List<Object> firstTracks = null;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment