Skip to content
Snippets Groups Projects
Commit 36d565cc authored by Peter Wagenhuber's avatar Peter Wagenhuber
Browse files

Nloc als eigene klasse und TestNloc zum Testen

parent 3b018817
No related branches found
No related tags found
No related merge requests found
...@@ -9,34 +9,7 @@ public class Nloc { ...@@ -9,34 +9,7 @@ public class Nloc {
private static final int MIN_TIMEDIFF = 6; private static final int MIN_TIMEDIFF = 6;
public static void main(String[] args) { public int getNumberOfDroplets(List<Channel> desiredPath) {
List<Channel> chanlist = getNloc0();
Channel p0 = chanlist.get(chanlist.size() - 2);
List<Channel> mod = getModulesByName(Arrays.asList("m1","m2"), chanlist);
List<List<Channel>> pathlist = getAllPaths(p0, new ArrayList<Channel>());
printPaths(pathlist);
List<Channel> desiredPath = getDesiredPath(mod, pathlist);
System.out.println("Desired Path:");
if (desiredPath.isEmpty()) {
System.out.println("No such Path!");
} else {
printPath(desiredPath);
}
System.out.println("Number of Droplets needed: " + getNumberOfDroplets(desiredPath));
}
public static int getNumberOfDroplets(List<Channel> desiredPath) {
int numOfDroplets = 1; int numOfDroplets = 1;
ListIterator<Channel> iter = desiredPath.listIterator(); ListIterator<Channel> iter = desiredPath.listIterator();
while(iter.hasNext()) { while(iter.hasNext()) {
...@@ -48,11 +21,11 @@ public class Nloc { ...@@ -48,11 +21,11 @@ public class Nloc {
} }
return numOfDroplets; return numOfDroplets;
} }
//public static List<Droplet> generateDropletSequence(List<Channel> path) { public List<Droplet> generateDropletSequence(List<String> modules) {
//} }
public static List<Channel> getDesiredPath(List<Channel> modules, public List<Channel> getDesiredPath(List<Channel> modules,
List<List<Channel>> pathlist) { List<List<Channel>> pathlist) {
List<Channel> found = new ArrayList<Channel>(); List<Channel> found = new ArrayList<Channel>();
for (List<Channel> path : pathlist) { for (List<Channel> path : pathlist) {
...@@ -63,7 +36,7 @@ public class Nloc { ...@@ -63,7 +36,7 @@ public class Nloc {
return found; return found;
} }
public static List<Channel> getModulesByName(List<String> names, public List<Channel> getModulesByName(List<String> names,
List<Channel> chanlist) { List<Channel> chanlist) {
List<Channel> ret = new ArrayList<Channel>(); List<Channel> ret = new ArrayList<Channel>();
for (String name : names) { for (String name : names) {
...@@ -76,27 +49,13 @@ public class Nloc { ...@@ -76,27 +49,13 @@ public class Nloc {
return ret; return ret;
} }
public static void printPath(List<Channel> path) { public List<List<Channel>> getAllPaths(Channel chan, List<Channel> path) {
for (Channel ch : path) {
System.out.print("ID: " + ch.getID() + " ");
}
System.out.println("");
}
public static void printPaths(List<List<Channel>> pathlist) {
System.out.println("Number of paths found: " + pathlist.size());
for (List<Channel> p : pathlist) {
printPath(p);
}
}
public static List<List<Channel>> getAllPaths(Channel chan, List<Channel> path) {
List<List<Channel>> pl = new ArrayList<List<Channel>>(); List<List<Channel>> pl = new ArrayList<List<Channel>>();
getAllPathsRecursive(chan, path, pl); getAllPathsRecursive(chan, path, pl);
return pl; return pl;
} }
public static void getAllPathsRecursive(Channel chan, List<Channel> path, List<List<Channel>> pathlist) { private void getAllPathsRecursive(Channel chan, List<Channel> path, List<List<Channel>> pathlist) {
path.add(chan); path.add(chan);
if (chan.getChildrenList().isEmpty()) { if (chan.getChildrenList().isEmpty()) {
pathlist.add(path); pathlist.add(path);
...@@ -107,87 +66,4 @@ public class Nloc { ...@@ -107,87 +66,4 @@ public class Nloc {
} }
} }
public static List<Channel> getNloc0() {
Channel chan0 = new Channel(6,6);
Channel chan1 = new Channel(8,8);
Channel chan2 = new Channel(9,9);
Channel chan3 = new Channel(11,12);
Channel chan4 = new Channel(19,21);
Channel chan5 = new Channel(5,5);
Channel chan6 = new Channel(8,8);
Channel chan7 = new Channel(9,10);
Channel chan8 = new Channel(25,28);
Module m0 = new Module("m0", 22,10);
Module m1 = new Module("m1", 10,10);
Pump p0 = new Pump();
Sink s0 = new Sink();
List<Channel> chanlist = Arrays.asList(chan0, chan1, chan2, chan3, chan4,
chan5, chan6, chan7, chan8, m0, m1, p0, s0);
p0.addChild(chan0);
chan0.addChild(chan1);
chan1.addChild(chan2);
chan1.addChild(chan3);
chan2.addChild(chan4);
chan3.addChild(chan5);
chan5.addChild(m0);
m0.addChild(chan6);
chan4.addChild(chan7);
chan6.addChild(chan7);
chan7.addChild(m1);
m1.addChild(chan8);
chan8.addChild(s0);
return chanlist;
}
public static List<Channel> getNloc3() {
Channel chan0 = new Channel(6,6);
Channel chan1 = new Channel(8,8);
Channel chan2 = new Channel(9,9);
Channel chan3 = new Channel(11,12);
Channel chan4 = new Channel(19,21);
Channel chan5 = new Channel(5,5);
Channel chan6 = new Channel(8,8);
Channel chan7 = new Channel(9,10);
Channel chan8 = new Channel(25,28);
Channel chan9 = new Channel(25,28);
Channel chan10 = new Channel(25,28);
Module m0 = new Module("m0", 22,10);
Module m1 = new Module("m1", 10,10);
Module m2 = new Module("m2", 22,10);
Module m3 = new Module("m3", 10,10);
Pump p0 = new Pump();
Sink s0 = new Sink();
List<Channel> chanlist = Arrays.asList(chan0, chan1, chan2, chan3, chan4,
chan5, chan6, chan7, chan8, chan9, chan10, m0, m1, m2, m3, p0, s0);
p0.addChild(chan0);
chan0.addChild(chan1);
chan0.addChild(chan2);
chan1.addChild(m0);
m0.addChild(chan3);
chan3.addChild(chan5);
chan2.addChild(m1);
m1.addChild(chan4);
chan4.addChild(chan5);
chan5.addChild(chan6);
chan5.addChild(chan7);
chan6.addChild(m2);
chan7.addChild(m3);
m2.addChild(chan8);
m3.addChild(chan9);
chan8.addChild(chan10);
chan9.addChild(chan10);
chan10.addChild(s0);
return chanlist;
}
} }
package nloc;
public class TestNloc {
public static void main(String[] args) {
List<Channel> chanlist = getNloc0();
Channel p0 = chanlist.get(chanlist.size() - 2);
List<Channel> mod = getModulesByName(Arrays.asList("m1","m2"), chanlist);
List<List<Channel>> pathlist = getAllPaths(p0, new ArrayList<Channel>());
printPaths(pathlist);
List<Channel> desiredPath = getDesiredPath(mod, pathlist);
System.out.println("Desired Path:");
if (desiredPath.isEmpty()) {
System.out.println("No such Path!");
} else {
printPath(desiredPath);
}
System.out.println("Number of Droplets needed: " + getNumberOfDroplets(desiredPath));
}
public static void printPath(List<Channel> path) {
for (Channel ch : path) {
System.out.print("ID: " + ch.getID() + " ");
}
System.out.println("");
}
public static void printPaths(List<List<Channel>> pathlist) {
System.out.println("Number of paths found: " + pathlist.size());
for (List<Channel> p : pathlist) {
printPath(p);
}
}
public static List<Channel> getNloc0() {
Channel chan0 = new Channel(6,6);
Channel chan1 = new Channel(8,8);
Channel chan2 = new Channel(9,9);
Channel chan3 = new Channel(11,12);
Channel chan4 = new Channel(19,21);
Channel chan5 = new Channel(5,5);
Channel chan6 = new Channel(8,8);
Channel chan7 = new Channel(9,10);
Channel chan8 = new Channel(25,28);
Module m0 = new Module("m0", 22,10);
Module m1 = new Module("m1", 10,10);
Pump p0 = new Pump();
Sink s0 = new Sink();
List<Channel> chanlist = Arrays.asList(chan0, chan1, chan2, chan3, chan4,
chan5, chan6, chan7, chan8, m0, m1, p0, s0);
p0.addChild(chan0);
chan0.addChild(chan1);
chan1.addChild(chan2);
chan1.addChild(chan3);
chan2.addChild(chan4);
chan3.addChild(chan5);
chan5.addChild(m0);
m0.addChild(chan6);
chan4.addChild(chan7);
chan6.addChild(chan7);
chan7.addChild(m1);
m1.addChild(chan8);
chan8.addChild(s0);
return chanlist;
}
public static List<Channel> getNloc3() {
Channel chan0 = new Channel(6,6);
Channel chan1 = new Channel(8,8);
Channel chan2 = new Channel(9,9);
Channel chan3 = new Channel(11,12);
Channel chan4 = new Channel(19,21);
Channel chan5 = new Channel(5,5);
Channel chan6 = new Channel(8,8);
Channel chan7 = new Channel(9,10);
Channel chan8 = new Channel(25,28);
Channel chan9 = new Channel(25,28);
Channel chan10 = new Channel(25,28);
Module m0 = new Module("m0", 22,10);
Module m1 = new Module("m1", 10,10);
Module m2 = new Module("m2", 22,10);
Module m3 = new Module("m3", 10,10);
Pump p0 = new Pump();
Sink s0 = new Sink();
List<Channel> chanlist = Arrays.asList(chan0, chan1, chan2, chan3, chan4,
chan5, chan6, chan7, chan8, chan9, chan10, m0, m1, m2, m3, p0, s0);
p0.addChild(chan0);
chan0.addChild(chan1);
chan0.addChild(chan2);
chan1.addChild(m0);
m0.addChild(chan3);
chan3.addChild(chan5);
chan2.addChild(m1);
m1.addChild(chan4);
chan4.addChild(chan5);
chan5.addChild(chan6);
chan5.addChild(chan7);
chan6.addChild(m2);
chan7.addChild(m3);
m2.addChild(chan8);
m3.addChild(chan9);
chan8.addChild(chan10);
chan9.addChild(chan10);
chan10.addChild(s0);
return chanlist;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment