[snee] r1373 committed - multitude of changes, including ...

0 views
Skip to first unread message

sn...@googlecode.com

unread,
May 21, 2013, 8:10:10 AM5/21/13
to snee-...@googlegroups.com
Revision: 1373
Author: alan.bar...@gmail.com
Date: Tue May 21 05:09:34 2013
Log: multitude of changes, including
1. the collate system for the lifetime results from condor.
2. The reintergration of the active node cluster in the logical network.
3. fixes the bug where tupels were being dubled per iteration.
4. fixed the bug with overlays failing to run though many node failures
5. fixed the node adaptation strategy so that it doesnt repsond if theres
no nodes to replace the failure, but can still operate with current states.
6. fixes that should have killed the loss of output connections on sibling
nodes.

Might be a stable version

MAY work for agrregations and joins, but not tested
http://code.google.com/p/snee/source/detail?r=1373

Added:

/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/java/uk/ac/manchester/snee/client/utils/CollateResultsForLifetime.java

/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/java/uk/ac/manchester/snee/client/utils/CollateResultsForTuples.java

/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/resources/condorDone/TTX4-DemoNoiseTrace.txt

/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/resources/condorDone/casino-lab.txt
Deleted:

/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/java/uk/ac/manchester/snee/client/utils/collateResults.java
Modified:

/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/java/uk/ac/manchester/snee/client/CondorReliableChannelClient.java

/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/java/uk/ac/manchester/snee/client/RelibaleChannelClient.java

/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/java/uk/ac/manchester/snee/client/utils/CondorScriptGenerator.java

/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/java/uk/ac/manchester/snee/client/utils/Distance.java

/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/java/uk/ac/manchester/snee/client/utils/Klevel.java

/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/java/uk/ac/manchester/snee/client/utils/Query.java

/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/java/uk/ac/manchester/snee/client/utils/Seed.java

/branches/alan_2012_07_19_unreliableChannels/snee-core/src/main/java/uk/ac/manchester/cs/snee/common/SNEEPropertyNames.java

/branches/alan_2012_07_19_unreliableChannels/snee-core/src/main/java/uk/ac/manchester/cs/snee/compiler/iot/AgendaIOT.java

/branches/alan_2012_07_19_unreliableChannels/snee-core/src/main/java/uk/ac/manchester/cs/snee/compiler/iot/IOT.java

/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/common/StrategyAbstract.java

/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/executer/Executer.java

/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/failednodestrategies/logicaloverlaynetwork/LogicalOverlayStrategy.java

/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/failednodestrategies/logicaloverlaynetwork/logicaloverlaynetworkgenerator/LogicalOverlayGenerator.java

/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/failednodestrategies/logicaloverlaynetwork/logicaloverlaynetworkgenerator/LogicalOverlayNetwork.java

/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/Planner.java

/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/costbenifitmodel/model/channel/CPMModel.java

/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/costbenifitmodel/model/channel/ChannelModel.java

/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/costbenifitmodel/model/channel/ChannelModelSite.java

/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/unreliablechannels/LogicalOverlayNetworkHierarchy.java

/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/unreliablechannels/UnreliableChannelAgenda.java

=======================================
--- /dev/null
+++
/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/java/uk/ac/manchester/snee/client/utils/CollateResultsForLifetime.java
Tue May 21 05:09:34 2013
@@ -0,0 +1,369 @@
+package uk.ac.manchester.snee.client.utils;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+
+import uk.ac.manchester.cs.snee.compiler.costmodels.HashMapList;
+
+public class CollateResultsForLifetime
+{
+
+ private static String sep = System.getProperty("file.separator");
+
+ public static void main(String [] args)
+ {
+ try
+ {
+ File root = new File("/mnt/usb/1st1/EdgeLifetime/");
+ HashMap<String, Query> data = new HashMap<String, Query>();
+ File[] listedFiles = root.listFiles();
+ int max = listedFiles.length;
+ for(int counter = 0; counter < max; counter++)
+ {
+ File folder = listedFiles[counter];
+ if(folder.isDirectory())
+ {
+ String[] firstBits = folder.toString().split("/");
+ String fileName = firstBits[firstBits.length -1];
+
+ // Process extractor = Runtime.getRuntime().exec(new String("tar
-xf /local/BigSubmit/" + fileName + "/output.tgz"));
+ // extractor.waitFor();
+
+ String[] bits = fileName.split("\\.");
+ File outputTuplesFile = null;
+ outputTuplesFile = new File(folder.toString() + sep + "out.txt");
+ BufferedReader in = new BufferedReader(new
FileReader(outputTuplesFile));
+ ArrayList<String> tuples = locateCorrectArrayList(data, bits);
+ System.out.println("reading in file for "+ bits[0]);
+ readInData(in, tuples);
+ in.close();
+ }
+ }
+
+ System.out.println("starting output");
+ outputData(data);
+ }
+ catch(Exception e)
+ {
+ System.out.println(e.getMessage());
+ e.printStackTrace();
+ }
+ }
+
+ private static void outputData( HashMap<String, Query> data)
+ throws IOException
+ {
+ HashMap<String, Query> averagedData = new HashMap<String, Query>();
+ File distanceOutput = null;
+ File output = new File("/local/output");
+ output.mkdir();
+ Iterator<String> queryKeysIterator = data.keySet().iterator();
+ while(queryKeysIterator.hasNext())
+ {
+ String queryKey = queryKeysIterator.next();
+ Query query = new Query(new HashMap<String, Distance>());
+ averagedData.put(queryKey, query);
+ File queryOutput = new File(output.toString() + sep + queryKey);
+ queryOutput.mkdir();
+ HashMap<String, Distance> distances = data.get(queryKey).getData();
+ Iterator<String> distanceKeys = distances.keySet().iterator();
+ while(distanceKeys.hasNext())
+ {
+ String distanceKey = distanceKeys.next();
+ Distance d = new Distance(new HashMap<String, Klevel>());
+ query.getData().put(distanceKey, d);
+ distanceOutput = new File(queryOutput.toString() + sep +
distanceKey);
+ distanceOutput.mkdir();
+ HashMap<String, Klevel> kLevels =
distances.get(distanceKey).getData();
+ Iterator<String> klevelKeys = kLevels.keySet().iterator();
+ while(klevelKeys.hasNext())
+ {
+ String kKey = klevelKeys.next();
+ Klevel k = new Klevel(new HashMap<String, Seed>());
+ d.getData().put(kKey, k);
+ absorbSeeds(kKey, kLevels, distanceOutput, k);
+ }
+ }
+ }
+ data = null;
+ ArrayList<String> queryKeys = new
ArrayList<String>(averagedData.keySet());
+ Collections.sort(queryKeys);
+ queryKeysIterator = queryKeys.iterator();
+ while(queryKeysIterator.hasNext())
+ {
+ String queryKey = queryKeysIterator.next();
+ File queryOutput = new File(output.toString() + sep + queryKey);
+ HashMap<String, Distance> distances =
averagedData.get(queryKey).getData();
+ Iterator<String> distanceKeys = distances.keySet().iterator();
+ while(distanceKeys.hasNext())
+ {
+ String distanceKey = distanceKeys.next();
+ distanceOutput = new File(queryOutput.toString() + sep +
distanceKey);
+ HashMap<String, Klevel> kLevels =
distances.get(distanceKey).getData();
+ outputAveragedKLevel(kLevels, distanceOutput);
+ }
+ outputCollectedFile(distances,output, queryKey);
+ }
+
+
+ }
+
+ private static void outputCollectedFile(HashMap<String, Distance>
distances,
+ File output, String queryKey)
+ throws IOException
+ {
+ Iterator<String> distanceKeys = distances.keySet().iterator();
+ while(distanceKeys.hasNext())
+ {
+ while(distanceKeys.hasNext())
+ {
+ String distanceKey = distanceKeys.next();
+ BufferedWriter out = new BufferedWriter(new
FileWriter(output.toString() + sep + distanceKey, true));
+ HashMap<String, Klevel> kLevels =
distances.get(distanceKey).getData();
+ ArrayList<String> kkeys = new ArrayList<String>(kLevels.keySet());
+ Collections.sort(kkeys);
+ Iterator<String> keysIterator = kkeys.iterator();
+ while(keysIterator.hasNext())
+ {
+ String kKey = keysIterator.next();
+ Klevel k = kLevels.get(kKey);
+ Seed kAvergaeTuples = k.getData().get(kKey);
+ DecimalFormat format = new DecimalFormat("#.##");
+ if(kAvergaeTuples.getaAverage().get(0) != 0)
+ out.write(queryKey + " " + kKey + " " +
format.format(kAvergaeTuples.getaAverage().get(0)) + " " +
+ format.format(kAvergaeTuples.getoAverage().get(0))
+ "\n");
+ }
+ out.flush();
+ out.close();
+ }
+ }
+ }
+
+ private static void absorbSeeds(String kKey, HashMap<String, Klevel>
kLevels,
+ File distanceOutput, Klevel averagedK)
+ throws IOException
+ {
+ HashMapList<String, Double> allTuples = new HashMapList<String,
Double>();
+ Integer maxValues = 0;
+
+ HashMap<String, Seed> seeds = kLevels.get(kKey).getData();
+ Iterator<String> seedKeys = seeds.keySet().iterator();
+ File kLevel = new File(distanceOutput.toString() + sep + kKey);
+ kLevel.mkdir();
+
+ boolean first = true;
+ while(seedKeys.hasNext())
+ {
+ String seedKey = seedKeys.next();
+ ArrayList<String> tuples = seeds.get(seedKey).getTuples();
+ allTuples.addWithDuplicates("o", Double.parseDouble(tuples.get(0)));
+ allTuples.addWithDuplicates("a", Double.parseDouble(tuples.get(1)));
+ }
+
+ outputAveragedTuples(allTuples, maxValues, kLevel, averagedK, kKey);
+ }
+
+ private static void outputAveragedKLevel(HashMap<String, Klevel> ks,
File outputFolder)
+ throws IOException
+ {
+ BufferedWriter outTop = new BufferedWriter(new
FileWriter(outputFolder.toString() + sep + "percentages"));
+ Iterator<String> kKeys = ks.keySet().iterator();
+ while(kKeys.hasNext())
+ {
+ String kKey = kKeys.next();
+ Klevel k = ks.get(kKey);
+ File kLevel = new File(outputFolder.toString() + sep + kKey);
+ BufferedWriter out = new BufferedWriter(new
FileWriter(kLevel.toString() + sep + "percentages"));
+ Seed kAvergaeTuples = k.getData().get(kKey);
+ DecimalFormat format = new DecimalFormat("#.##");
+ out.write(kKey + " " +
format.format(kAvergaeTuples.getaAverage().get(0)) + " " +
+ format.format(kAvergaeTuples.getoAverage().get(0)) + "\n");
+ out.flush();
+ out.close();
+ }
+ }
+
+ private static void outputAveragedTuples(HashMapList<String, Double>
allTuples,
+ Integer maxValues, File
kLevelOutput,
+ Klevel k, String kKey)
+ throws IOException
+ {
+ Iterator<String> keys = allTuples.keySet().iterator();
+ ArrayList<Double> oAveragedTuples = new ArrayList<Double>(50);
+ ArrayList<Double> aAveragedTuples = new ArrayList<Double>(50);
+
+ while(keys.hasNext())
+ {
+ String key = keys.next();
+ Double average = 0.0;
+ Iterator<Double> tuples = allTuples.get(key).iterator();
+ while(tuples.hasNext())
+ {
+ Double tuple = tuples.next();
+ average += tuple;
+ }
+ average = average / allTuples.get(key).size();
+ //double SD = findStandardDeviation(allTuples.get(key));
+
+ if(key.equals("o"))
+ {
+ oAveragedTuples.add(average);
+ // oSDTuples.set(index, SD);
+ }
+ else if(key.equals("a"))
+ {
+ aAveragedTuples.add(average);
+ // aSDTuples.set(index, SD);
+ }
+ }
+ Seed average = new Seed();
+ average.setaAverage(aAveragedTuples);
+ average.setoAverage(oAveragedTuples);
+ average.setMax(maxValues);
+ k.getData().put(kKey, average);
+
+
+ BufferedWriter out = new BufferedWriter(new
FileWriter(kLevelOutput.toString() + sep + "avergaedTuples"));
+ Iterator<Double> adata = aAveragedTuples.iterator();
+ Iterator<Double> odata = oAveragedTuples.iterator();
+ adata.next();
+ odata.next();
+ int counter = 1;
+ DecimalFormat format = new DecimalFormat("#.##");
+ while(adata.hasNext())
+ {
+ Double a = adata.next();
+ Double o = odata.next();
+ out.write(counter + " " + maxValues + " " + format.format(o) + " " +
format.format(a) + "\n");
+ }
+ out.flush();
+ out.close();
+
+
+ }
+
+ private static void readInData(BufferedReader in, ArrayList<String>
tuples)
+ throws IOException
+ {
+ String line = null;
+ while((line = in.readLine()) != null)
+ {
+ if(line.contains("new robust"))
+ {
+ String [] results = line.split(" = ");
+ tuples.add(results[1]);
+ }
+ }
+ if(tuples.size() == 0)
+ {
+ tuples.add("0.0");
+ tuples.add("0.0");
+ }
+ }
+
+ private static ArrayList<String> locateCorrectArrayList(HashMap<String,
Query> data, String[] bits)
+ {
+ Query query = data.get(bits[0]);
+ if(query == null)
+ {
+ query = new Query(new HashMap<String, Distance>());
+ data.put(bits[0], query);
+ Distance d = new Distance(new HashMap<String, Klevel>());
+ String key = null;
+ if(bits.length == 4)
+ key = "1.0";
+ else
+ key = bits[3] + "." + bits[4];
+ query.getData().put(key, d);
+ Klevel k = new Klevel(new HashMap<String, Seed>());
+ key = bits[1];
+ d.getData().put(key, k);
+ Seed s = new Seed();
+ key = bits[2];
+ k.getData().put(key, s);
+ return s.getTuples();
+ }
+ else
+ {
+ String key = null;
+ if(bits.length == 4)
+ key = "1.0";
+ else
+ key = bits[3] + "." + bits[4];
+ Distance d = query.getData().get(key);
+ if(d == null)
+ {
+ d = new Distance(new HashMap<String, Klevel>());
+ query.getData().put(key, d);
+ key = "";
+ Klevel k = new Klevel(new HashMap<String, Seed>());
+ key = bits[1];
+ d.getData().put(key, k);
+ Seed s = new Seed();
+ key = bits[2];
+ k.getData().put(key, s);
+ return s.getTuples();
+ }
+ else
+ {
+ key = bits[1];
+ Klevel k = d.getData().get(key);
+ if(k ==null)
+ {
+ k = new Klevel(new HashMap<String, Seed>());
+ key = bits[1];
+ d.getData().put(key, k);
+ Seed s = new Seed();
+ key = bits[2];
+ k.getData().put(key, s);
+ return s.getTuples();
+ }
+ else
+ {
+ Seed s = new Seed();
+ key = bits[2];
+ k.getData().put(key, s);
+ return s.getTuples();
+ }
+ }
+ }
+ }
+
+ public static double findStandardDeviation(ArrayList<Integer> array)
+ {
+ double mean = findMean(array);
+ double d1 = 0;
+ double d2 = 0;
+ double sum = 0;
+ for(int i = 0; i < array.size(); i++)
+ {
+ d2 = (mean - array.get(i))*(mean - array.get(i));
+ d1 = d2 + d1;
+ }
+ return Math.sqrt((d1/(array.size()-1)));
+ }
+
+ public static double findMean(ArrayList<Integer> array)
+ {
+ double total = 0;
+ for(int i = 0; i < array.size(); i++)
+ {
+ total = total + array.get(i);
+ }
+ return total/array.size();
+ }
+
+
+
+
+}
=======================================
--- /dev/null
+++
/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/java/uk/ac/manchester/snee/client/utils/CollateResultsForTuples.java
Tue May 21 05:09:34 2013
@@ -0,0 +1,550 @@
+package uk.ac.manchester.snee.client.utils;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+
+import uk.ac.manchester.cs.snee.compiler.costmodels.HashMapList;
+
+public class CollateResultsForTuples
+{
+
+ private static String sep = System.getProperty("file.separator");
+
+ public static void main(String [] args)
+ {
+ try
+ {
+ File root = new File("/local/ChannelJoin/");
+ HashMap<String, Query> data = new HashMap<String, Query>();
+ File[] listedFiles = root.listFiles();
+ int max = listedFiles.length;
+ for(int counter = 0; counter < max; counter++)
+ {
+ File folder = listedFiles[counter];
+ if(folder.isDirectory())
+ {
+ String[] firstBits = folder.toString().split("/");
+ String fileName = firstBits[firstBits.length -1];
+
+ // Process extractor = Runtime.getRuntime().exec(new String("tar
-xf /local/BigSubmit/" + fileName + "/output.tgz"));
+ // extractor.waitFor();
+
+ String[] bits = fileName.split("\\.");
+ File outputTuplesFile = null;
+ if(bits.length == 4)
+ {
+ outputTuplesFile = new File(folder.toString() + sep
+ "output/" + bits[0] + sep+
+ "AutonomicManData" + sep
+ "executer" + sep +
+ "1.0" + sep + "tupleOutput");
+ }
+ else
+ {
+ outputTuplesFile = new File(folder.toString() + sep
+ "output/" + bits[0] + sep +
+ "AutonomicManData" + sep
+ "executer" + sep + bits[3] +
+ "." + bits[4] + sep
+ "tupleOutput");
+ }
+ if(outputTuplesFile.exists())
+ {
+ BufferedReader in = new BufferedReader(new
FileReader(outputTuplesFile));
+ ArrayList<String> tuples = locateCorrectArrayList(data, bits);
+ System.out.println("reading in file for "+ bits[0]);
+ readInData(in, tuples);
+ in.close();
+ }
+ }
+ }
+
+ System.out.println("starting output");
+ outputData(data);
+ }
+ catch(Exception e)
+ {
+ System.out.println(e.getMessage());
+ e.printStackTrace();
+ }
+ }
+
+ private static void outputData( HashMap<String, Query> data)
+ throws IOException
+ {
+ HashMap<String, Query> averagedData = new HashMap<String, Query>();
+ File distanceOutput = null;
+ File output = new File("/local/output");
+ output.mkdir();
+ Iterator<String> queryKeys = data.keySet().iterator();
+ while(queryKeys.hasNext())
+ {
+ String queryKey = queryKeys.next();
+ Query query = new Query(new HashMap<String, Distance>());
+ averagedData.put(queryKey, query);
+ File queryOutput = new File(output.toString() + sep + queryKey);
+ queryOutput.mkdir();
+ HashMap<String, Distance> distances = data.get(queryKey).getData();
+ Iterator<String> distanceKeys = distances.keySet().iterator();
+ while(distanceKeys.hasNext())
+ {
+ String distanceKey = distanceKeys.next();
+ Distance d = new Distance(new HashMap<String, Klevel>());
+ query.getData().put(distanceKey, d);
+ distanceOutput = new File(queryOutput.toString() + sep +
distanceKey);
+ distanceOutput.mkdir();
+ HashMap<String, Klevel> kLevels =
distances.get(distanceKey).getData();
+ Iterator<String> klevelKeys = kLevels.keySet().iterator();
+ while(klevelKeys.hasNext())
+ {
+ String kKey = klevelKeys.next();
+ Klevel k = new Klevel(new HashMap<String, Seed>());
+ d.getData().put(kKey, k);
+ absorbSeeds(kKey, kLevels, distanceOutput, k);
+ }
+ }
+ }
+ data = null;
+ queryKeys = averagedData.keySet().iterator();
+ while(queryKeys.hasNext())
+ {
+ String queryKey = queryKeys.next();
+ File queryOutput = new File(output.toString() + sep + queryKey);
+ HashMap<String, Distance> distances =
averagedData.get(queryKey).getData();
+ Iterator<String> distanceKeys = distances.keySet().iterator();
+ while(distanceKeys.hasNext())
+ {
+ String distanceKey = distanceKeys.next();
+ distanceOutput = new File(queryOutput.toString() + sep +
distanceKey);
+ HashMap<String, Klevel> kLevels =
distances.get(distanceKey).getData();
+ outputAveragedKLevel(kLevels, distanceOutput);
+ }
+ }
+
+
+ }
+
+ private static void absorbSeeds(String kKey, HashMap<String, Klevel>
kLevels,
+ File distanceOutput, Klevel averagedK)
+ throws IOException
+ {
+ HashMapList<String, Integer> allTuples = new HashMapList<String,
Integer>();
+ Integer maxValues = 0;
+
+ HashMap<String, Seed> seeds = kLevels.get(kKey).getData();
+ Iterator<String> seedKeys = seeds.keySet().iterator();
+ File kLevel = new File(distanceOutput.toString() + sep + kKey);
+ kLevel.mkdir();
+
+ boolean first = true;
+ while(seedKeys.hasNext())
+ {
+ String seedKey = seedKeys.next();
+ ArrayList<String> tuples = seeds.get(seedKey).getTuples();
+ Iterator<String> tupleIterator = tuples.iterator();
+ while(tupleIterator.hasNext())
+ {
+ String tupleLine = tupleIterator.next();
+ String [] bits = tupleLine.split(" ");
+ if(first)
+ {
+ maxValues = Integer.parseInt(bits[1]);
+ first = false;
+ }
+ allTuples.addWithDuplicates("o-" + bits[0],
Integer.parseInt(bits[2]));
+ allTuples.addWithDuplicates("a-" + bits[0],
Integer.parseInt(bits[3]));
+ allTuples.addWithDuplicates("oat-" + bits[0],
Integer.parseInt(bits[5]));
+ allTuples.addWithDuplicates("aat-" + bits[0],
Integer.parseInt(bits[4]));
+ }
+ }
+
+ outputAveragedTuples(allTuples, maxValues, kLevel, averagedK, kKey);
+ }
+
+ private static void outputAveragedKLevel(HashMap<String, Klevel> ks,
File outputFolder)
+ throws IOException
+ {
+ ArrayList<Double> oPercentage = new ArrayList<Double>();
+ for(int index =0; index <6; index ++)
+ oPercentage.add(null);
+ ArrayList<Double> aPercentage = new ArrayList<Double>();
+ for(int index =0; index <6; index ++)
+ aPercentage.add(null);
+ ArrayList<Double> oCPercentage = new ArrayList<Double>();
+ for(int index =0; index <6; index ++)
+ oCPercentage.add(null);
+ ArrayList<Double> aCPercentage = new ArrayList<Double>();
+ for(int index =0; index <6; index ++)
+ aCPercentage.add(null);
+
+ BufferedWriter outTop = new BufferedWriter(new
FileWriter(outputFolder.toString() + sep + "percentages"));
+ Iterator<String> kKeys = ks.keySet().iterator();
+ while(kKeys.hasNext())
+ {
+ String kKey = kKeys.next();
+ Klevel k = ks.get(kKey);
+ File kLevel = new File(outputFolder.toString() + sep + kKey);
+ BufferedWriter out = new BufferedWriter(new
FileWriter(kLevel.toString() + sep + "percentages"));
+ Seed kAvergaeTuples = k.getData().get(kKey);
+ Iterator<Double> tuples = kAvergaeTuples.getoAverage().iterator();
+ tuples.next();
+ while(tuples.hasNext())
+ {
+ Double tuple = tuples.next();
+ oPercentage.set(Integer.parseInt(kKey),(tuple /
kAvergaeTuples.getMax()) * 100);
+ }
+ tuples = kAvergaeTuples.getaAverage().iterator();
+ tuples.next();
+ while(tuples.hasNext())
+ {
+ Double tuple = tuples.next();
+ aPercentage.set(Integer.parseInt(kKey),(tuple /
kAvergaeTuples.getMax()) * 100);
+ }
+ tuples = kAvergaeTuples.getaAAverage().iterator();
+ tuples.next();
+ while(tuples.hasNext())
+ {
+ Double tuple = tuples.next();
+ aCPercentage.set(Integer.parseInt(kKey),(tuple /
(kAvergaeTuples.getMax() * 9)) * 100);
+ }
+ tuples = kAvergaeTuples.getoAAverage().iterator();
+ tuples.next();
+ while(tuples.hasNext())
+ {
+ Double tuple = tuples.next();
+ oCPercentage.set(Integer.parseInt(kKey),(tuple /
(kAvergaeTuples.getMax() * 9)) * 100);
+ }
+
+
+ DecimalFormat format = new DecimalFormat("#.##");
+ out.write(kKey + " " +
format.format(oPercentage.get(Integer.parseInt(kKey))) + " " +
+ format.format(aPercentage.get(Integer.parseInt(kKey)))
+ "\n");
+ out.flush();
+ out.close();
+ }
+
+ Iterator<Double> oiterator = oPercentage.iterator();
+ Iterator<Double> aiterator = aPercentage.iterator();
+ Iterator<Double> oCiterator = oCPercentage.iterator();
+ Iterator<Double> aCiterator = aCPercentage.iterator();
+ oiterator.next();
+ oiterator.next();
+ aiterator.next();
+ aiterator.next();
+ oCiterator.next();
+ oCiterator.next();
+ aCiterator.next();
+ aCiterator.next();
+
+ int index = 2;
+ while(oiterator.hasNext())
+ {
+ Double o = oiterator.next();
+ if(o == null)
+ o = 0.0;
+ Double a = aiterator.next();
+ if(a == null)
+ a = 0.0;
+ Double oA = oCiterator.next();
+ if(oA == null)
+ oA = 0.0;
+ Double aA = aCiterator.next();
+ if(aA == null)
+ aA = 0.0;
+ DecimalFormat format = new DecimalFormat("#.##");
+ outTop.write(index + " " + format.format(o) + " " + format.format(a)
+ " " + format.format(oA) +
+ " " + format.format(aA) + "\n");
+ index++;
+ }
+ outTop.flush();
+ outTop.close();
+ }
+
+ private static void outputAveragedTuples(HashMapList<String, Integer>
allTuples,
+ Integer maxValues, File
kLevelOutput,
+ Klevel k, String kKey)
+ throws IOException
+ {
+ Iterator<String> keys = allTuples.keySet().iterator();
+ ArrayList<Double> oAveragedTuples = new ArrayList<Double>(50);
+ ArrayList<Double> aAveragedTuples = new ArrayList<Double>(50);
+ ArrayList<Double> oSDTuples = new ArrayList<Double>(50);
+ ArrayList<Double> aSDTuples = new ArrayList<Double>(50);
+ ArrayList<Double> aAGConTuples = new ArrayList<Double>(50);
+ ArrayList<Double> oAGConTuples = new ArrayList<Double>(50);
+ ArrayList<Double> oAggSDTuples = new ArrayList<Double>(50);
+ ArrayList<Double> aAggSDTuples = new ArrayList<Double>(50);
+ for(int index = 0; index <= 50; index++)
+ {
+ oAveragedTuples.add(null);
+ aAveragedTuples.add(null);
+ oSDTuples.add(null);
+ aSDTuples.add(null);
+ aAGConTuples.add(null);
+ oAGConTuples.add(null);
+ oAggSDTuples.add(null);
+ aAggSDTuples.add(null);
+ }
+
+ while(keys.hasNext())
+ {
+ String key = keys.next();
+ String [] bits = key.split("-");
+ int index = Integer.parseInt(bits[1]);
+ Double average = 0.0;
+ Iterator<Integer> tuples = allTuples.get(key).iterator();
+ while(tuples.hasNext())
+ {
+ Integer tuple = tuples.next();
+ average += tuple;
+ }
+ average = average / allTuples.get(key).size();
+ double SD = findStandardDeviation(allTuples.get(key));
+
+ if(bits[0].equals("o"))
+ {
+ oAveragedTuples.set(index, average);
+ oSDTuples.set(index, SD);
+ }
+ else if(bits[0].equals("a"))
+ {
+ aAveragedTuples.set(index, average);
+ aSDTuples.set(index, SD);
+ }
+ else if(bits[0].equals("oat"))
+ {
+ oAGConTuples.set(index, average);
+ oAggSDTuples.set(index, SD);
+ }
+ else
+ {
+ aAGConTuples.set(index, average);
+ aAggSDTuples.set(index, SD);
+ }
+
+ }
+ Seed average = new Seed();
+ average.setaAverage(aAveragedTuples);
+ average.setoAverage(oAveragedTuples);
+ average.setaAAverage(aAGConTuples);
+ average.setoAAverage(oAGConTuples);
+ average.setMax(maxValues);
+ k.getData().put(kKey, average);
+
+
+ BufferedWriter out = new BufferedWriter(new
FileWriter(kLevelOutput.toString() + sep + "avergaedTuples"));
+ Iterator<Double> adata = aAveragedTuples.iterator();
+ Iterator<Double> odata = oAveragedTuples.iterator();
+ adata.next();
+ odata.next();
+ int counter = 1;
+ DecimalFormat format = new DecimalFormat("#.##");
+ while(adata.hasNext())
+ {
+ Double a = adata.next();
+ Double o = odata.next();
+ out.write(counter + " " + maxValues + " " + format.format(o) + " " +
format.format(a) + "\n");
+ }
+ out.flush();
+ out.close();
+
+ out = new BufferedWriter(new FileWriter(kLevelOutput.toString() + sep
+ "SDTuples"));
+ adata = aSDTuples.iterator();
+ odata = oSDTuples.iterator();
+ adata.next();
+ odata.next();
+ counter = 1;
+ while(adata.hasNext())
+ {
+ Double a = adata.next();
+ Double o = odata.next();
+ out.write(counter + " " + maxValues + " " + format.format(o) + " " +
format.format(a) + "\n");
+ }
+ double aAverageSD = 0.0;
+ double oAverageSD = 0.0;
+ Iterator<Double> tuples = aSDTuples.iterator();
+ tuples.next();
+
+ while(tuples.hasNext())
+ {
+ Double tuple = tuples.next();
+ aAverageSD += tuple;
+ }
+ aAverageSD = aAverageSD / aSDTuples.size();
+ tuples = oSDTuples.iterator();
+ tuples.next();
+ while(tuples.hasNext())
+ {
+ Double tuple = tuples.next();
+ oAverageSD += tuple;
+ }
+ oAverageSD = oAverageSD / oSDTuples.size();
+
+ out.write(format.format(oAverageSD) + " " + format.format(aAverageSD)
+ "\n");
+ out.flush();
+ out.close();
+
+ out = new BufferedWriter(new FileWriter(kLevelOutput.toString() + sep
+ "SDAggTuples"));
+ adata = aAggSDTuples.iterator();
+ odata = oAggSDTuples.iterator();
+ adata.next();
+ odata.next();
+ counter = 1;
+ while(adata.hasNext())
+ {
+ Double a = adata.next();
+ Double o = odata.next();
+ out.write(counter + " " + maxValues + " " + format.format(o) + " " +
format.format(a) + "\n");
+ }
+ aAverageSD = 0.0;
+ oAverageSD = 0.0;
+ tuples = aAggSDTuples.iterator();
+ tuples.next();
+
+ while(tuples.hasNext())
+ {
+ Double tuple = tuples.next();
+ aAverageSD += tuple;
+ }
+ aAverageSD = aAverageSD / aSDTuples.size();
+ tuples = oSDTuples.iterator();
+ tuples.next();
+ while(tuples.hasNext())
+ {
+ Double tuple = tuples.next();
+ oAverageSD += tuple;
+ }
+ oAverageSD = oAverageSD / oSDTuples.size();
+
+ out.write(format.format(oAverageSD) + " " + format.format(aAverageSD)
+ "\n");
+ out.flush();
+ out.close();
+
+ out = new BufferedWriter(new FileWriter(kLevelOutput.toString() + sep
+ "AggAvergaedTuples"));
+ adata = aAGConTuples.iterator();
+ odata = oAGConTuples.iterator();
+ adata.next();
+ odata.next();
+ counter = 1;
+ format = new DecimalFormat("#.##");
+ while(adata.hasNext())
+ {
+ Double a = adata.next();
+ Double o = odata.next();
+ out.write(counter + " " + maxValues + " " + format.format(o) + " " +
format.format(a) + "\n");
+ }
+ out.flush();
+ out.close();
+
+
+ }
+
+ private static void readInData(BufferedReader in, ArrayList<String>
tuples)
+ throws IOException
+ {
+ String line = null;
+ while((line = in.readLine()) != null)
+ {
+ tuples.add(line);
+ }
+ }
+
+ private static ArrayList<String> locateCorrectArrayList(HashMap<String,
Query> data, String[] bits)
+ {
+ Query query = data.get(bits[0]);
+ if(query == null)
+ {
+ query = new Query(new HashMap<String, Distance>());
+ data.put(bits[0], query);
+ Distance d = new Distance(new HashMap<String, Klevel>());
+ String key = null;
+ if(bits.length == 4)
+ key = "1.0";
+ else
+ key = bits[3] + "." + bits[4];
+ query.getData().put(key, d);
+ Klevel k = new Klevel(new HashMap<String, Seed>());
+ key = bits[1];
+ d.getData().put(key, k);
+ Seed s = new Seed();
+ key = bits[2];
+ k.getData().put(key, s);
+ return s.getTuples();
+ }
+ else
+ {
+ String key = null;
+ if(bits.length == 4)
+ key = "1.0";
+ else
+ key = bits[3] + "." + bits[4];
+ Distance d = query.getData().get(key);
+ if(d == null)
+ {
+ d = new Distance(new HashMap<String, Klevel>());
+ query.getData().put(key, d);
+ key = "";
+ Klevel k = new Klevel(new HashMap<String, Seed>());
+ key = bits[1];
+ d.getData().put(key, k);
+ Seed s = new Seed();
+ key = bits[2];
+ k.getData().put(key, s);
+ return s.getTuples();
+ }
+ else
+ {
+ key = bits[1];
+ Klevel k = d.getData().get(key);
+ if(k ==null)
+ {
+ k = new Klevel(new HashMap<String, Seed>());
+ key = bits[1];
+ d.getData().put(key, k);
+ Seed s = new Seed();
+ key = bits[2];
+ k.getData().put(key, s);
+ return s.getTuples();
+ }
+ else
+ {
+ Seed s = new Seed();
+ key = bits[2];
+ k.getData().put(key, s);
+ return s.getTuples();
+ }
+ }
+ }
+ }
+
+ public static double findStandardDeviation(ArrayList<Integer> array)
+ {
+ double mean = findMean(array);
+ double d1 = 0;
+ double d2 = 0;
+ double sum = 0;
+ for(int i = 0; i < array.size(); i++)
+ {
+ d2 = (mean - array.get(i))*(mean - array.get(i));
+ d1 = d2 + d1;
+ }
+ return Math.sqrt((d1/(array.size()-1)));
+ }
+
+ public static double findMean(ArrayList<Integer> array)
+ {
+ double total = 0;
+ for(int i = 0; i < array.size(); i++)
+ {
+ total = total + array.get(i);
+ }
+ return total/array.size();
+ }
+
+
+
+
+}
=======================================
--- /dev/null
+++
/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/resources/condorDone/TTX4-DemoNoiseTrace.txt
Tue May 21 05:09:34 2013
File is too large to display a diff.
=======================================
--- /dev/null
+++
/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/resources/condorDone/casino-lab.txt
Tue May 21 05:09:34 2013
File is too large to display a diff.
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/java/uk/ac/manchester/snee/client/utils/collateResults.java
Thu May 2 05:06:41 2013
+++ /dev/null
@@ -1,550 +0,0 @@
-package uk.ac.manchester.snee.client.utils;
-
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.text.DecimalFormat;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-
-import uk.ac.manchester.cs.snee.compiler.costmodels.HashMapList;
-
-public class collateResults
-{
-
- private static String sep = System.getProperty("file.separator");
-
- public static void main(String [] args)
- {
- try
- {
- File root = new File("/local/ChannelJoin/");
- HashMap<String, Query> data = new HashMap<String, Query>();
- File[] listedFiles = root.listFiles();
- int max = listedFiles.length;
- for(int counter = 0; counter < max; counter++)
- {
- File folder = listedFiles[counter];
- if(folder.isDirectory())
- {
- String[] firstBits = folder.toString().split("/");
- String fileName = firstBits[firstBits.length -1];
-
- // Process extractor = Runtime.getRuntime().exec(new String("tar
-xf /local/BigSubmit/" + fileName + "/output.tgz"));
- // extractor.waitFor();
-
- String[] bits = fileName.split("\\.");
- File outputTuplesFile = null;
- if(bits.length == 4)
- {
- outputTuplesFile = new File(folder.toString() + sep
+ "output/" + bits[0] + sep+
- "AutonomicManData" + sep
+ "executer" + sep +
- "1.0" + sep + "tupleOutput");
- }
- else
- {
- outputTuplesFile = new File(folder.toString() + sep
+ "output/" + bits[0] + sep +
- "AutonomicManData" + sep
+ "executer" + sep + bits[3] +
- "." + bits[4] + sep
+ "tupleOutput");
- }
- if(outputTuplesFile.exists())
- {
- BufferedReader in = new BufferedReader(new
FileReader(outputTuplesFile));
- ArrayList<String> tuples = locateCorrectArrayList(data, bits);
- System.out.println("reading in file for "+ bits[0]);
- readInData(in, tuples);
- in.close();
- }
- }
- }
-
- System.out.println("starting output");
- outputData(data);
- }
- catch(Exception e)
- {
- System.out.println(e.getMessage());
- e.printStackTrace();
- }
- }
-
- private static void outputData( HashMap<String, Query> data)
- throws IOException
- {
- HashMap<String, Query> averagedData = new HashMap<String, Query>();
- File distanceOutput = null;
- File output = new File("/local/output");
- output.mkdir();
- Iterator<String> queryKeys = data.keySet().iterator();
- while(queryKeys.hasNext())
- {
- String queryKey = queryKeys.next();
- Query query = new Query(new HashMap<String, Distance>());
- averagedData.put(queryKey, query);
- File queryOutput = new File(output.toString() + sep + queryKey);
- queryOutput.mkdir();
- HashMap<String, Distance> distances = data.get(queryKey).getData();
- Iterator<String> distanceKeys = distances.keySet().iterator();
- while(distanceKeys.hasNext())
- {
- String distanceKey = distanceKeys.next();
- Distance d = new Distance(new HashMap<String, Klevel>());
- query.getData().put(distanceKey, d);
- distanceOutput = new File(queryOutput.toString() + sep +
distanceKey);
- distanceOutput.mkdir();
- HashMap<String, Klevel> kLevels =
distances.get(distanceKey).getData();
- Iterator<String> klevelKeys = kLevels.keySet().iterator();
- while(klevelKeys.hasNext())
- {
- String kKey = klevelKeys.next();
- Klevel k = new Klevel(new HashMap<String, Seed>());
- d.getData().put(kKey, k);
- absorbSeeds(kKey, kLevels, distanceOutput, k);
- }
- }
- }
- data = null;
- queryKeys = averagedData.keySet().iterator();
- while(queryKeys.hasNext())
- {
- String queryKey = queryKeys.next();
- File queryOutput = new File(output.toString() + sep + queryKey);
- HashMap<String, Distance> distances =
averagedData.get(queryKey).getData();
- Iterator<String> distanceKeys = distances.keySet().iterator();
- while(distanceKeys.hasNext())
- {
- String distanceKey = distanceKeys.next();
- distanceOutput = new File(queryOutput.toString() + sep +
distanceKey);
- HashMap<String, Klevel> kLevels =
distances.get(distanceKey).getData();
- outputAveragedKLevel(kLevels, distanceOutput);
- }
- }
-
-
- }
-
- private static void absorbSeeds(String kKey, HashMap<String, Klevel>
kLevels,
- File distanceOutput, Klevel averagedK)
- throws IOException
- {
- HashMapList<String, Integer> allTuples = new HashMapList<String,
Integer>();
- Integer maxValues = 0;
-
- HashMap<String, Seed> seeds = kLevels.get(kKey).getData();
- Iterator<String> seedKeys = seeds.keySet().iterator();
- File kLevel = new File(distanceOutput.toString() + sep + kKey);
- kLevel.mkdir();
-
- boolean first = true;
- while(seedKeys.hasNext())
- {
- String seedKey = seedKeys.next();
- ArrayList<String> tuples = seeds.get(seedKey).getTuples();
- Iterator<String> tupleIterator = tuples.iterator();
- while(tupleIterator.hasNext())
- {
- String tupleLine = tupleIterator.next();
- String [] bits = tupleLine.split(" ");
- if(first)
- {
- maxValues = Integer.parseInt(bits[1]);
- first = false;
- }
- allTuples.addWithDuplicates("o-" + bits[0],
Integer.parseInt(bits[2]));
- allTuples.addWithDuplicates("a-" + bits[0],
Integer.parseInt(bits[3]));
- allTuples.addWithDuplicates("oat-" + bits[0],
Integer.parseInt(bits[5]));
- allTuples.addWithDuplicates("aat-" + bits[0],
Integer.parseInt(bits[4]));
- }
- }
-
- outputAveragedTuples(allTuples, maxValues, kLevel, averagedK, kKey);
- }
-
- private static void outputAveragedKLevel(HashMap<String, Klevel> ks,
File outputFolder)
- throws IOException
- {
- ArrayList<Double> oPercentage = new ArrayList<Double>();
- for(int index =0; index <6; index ++)
- oPercentage.add(null);
- ArrayList<Double> aPercentage = new ArrayList<Double>();
- for(int index =0; index <6; index ++)
- aPercentage.add(null);
- ArrayList<Double> oCPercentage = new ArrayList<Double>();
- for(int index =0; index <6; index ++)
- oCPercentage.add(null);
- ArrayList<Double> aCPercentage = new ArrayList<Double>();
- for(int index =0; index <6; index ++)
- aCPercentage.add(null);
-
- BufferedWriter outTop = new BufferedWriter(new
FileWriter(outputFolder.toString() + sep + "percentages"));
- Iterator<String> kKeys = ks.keySet().iterator();
- while(kKeys.hasNext())
- {
- String kKey = kKeys.next();
- Klevel k = ks.get(kKey);
- File kLevel = new File(outputFolder.toString() + sep + kKey);
- BufferedWriter out = new BufferedWriter(new
FileWriter(kLevel.toString() + sep + "percentages"));
- Seed kAvergaeTuples = k.getData().get(kKey);
- Iterator<Double> tuples = kAvergaeTuples.getoAverage().iterator();
- tuples.next();
- while(tuples.hasNext())
- {
- Double tuple = tuples.next();
- oPercentage.set(Integer.parseInt(kKey),(tuple /
kAvergaeTuples.getMax()) * 100);
- }
- tuples = kAvergaeTuples.getaAverage().iterator();
- tuples.next();
- while(tuples.hasNext())
- {
- Double tuple = tuples.next();
- aPercentage.set(Integer.parseInt(kKey),(tuple /
kAvergaeTuples.getMax()) * 100);
- }
- tuples = kAvergaeTuples.getaAAverage().iterator();
- tuples.next();
- while(tuples.hasNext())
- {
- Double tuple = tuples.next();
- aCPercentage.set(Integer.parseInt(kKey),(tuple /
(kAvergaeTuples.getMax() * 9)) * 100);
- }
- tuples = kAvergaeTuples.getoAAverage().iterator();
- tuples.next();
- while(tuples.hasNext())
- {
- Double tuple = tuples.next();
- oCPercentage.set(Integer.parseInt(kKey),(tuple /
(kAvergaeTuples.getMax() * 9)) * 100);
- }
-
-
- DecimalFormat format = new DecimalFormat("#.##");
- out.write(kKey + " " +
format.format(oPercentage.get(Integer.parseInt(kKey))) + " " +
- format.format(aPercentage.get(Integer.parseInt(kKey)))
+ "\n");
- out.flush();
- out.close();
- }
-
- Iterator<Double> oiterator = oPercentage.iterator();
- Iterator<Double> aiterator = aPercentage.iterator();
- Iterator<Double> oCiterator = oCPercentage.iterator();
- Iterator<Double> aCiterator = aCPercentage.iterator();
- oiterator.next();
- oiterator.next();
- aiterator.next();
- aiterator.next();
- oCiterator.next();
- oCiterator.next();
- aCiterator.next();
- aCiterator.next();
-
- int index = 2;
- while(oiterator.hasNext())
- {
- Double o = oiterator.next();
- if(o == null)
- o = 0.0;
- Double a = aiterator.next();
- if(a == null)
- a = 0.0;
- Double oA = oCiterator.next();
- if(oA == null)
- oA = 0.0;
- Double aA = aCiterator.next();
- if(aA == null)
- aA = 0.0;
- DecimalFormat format = new DecimalFormat("#.##");
- outTop.write(index + " " + format.format(o) + " " + format.format(a)
+ " " + format.format(oA) +
- " " + format.format(aA) + "\n");
- index++;
- }
- outTop.flush();
- outTop.close();
- }
-
- private static void outputAveragedTuples(HashMapList<String, Integer>
allTuples,
- Integer maxValues, File
kLevelOutput,
- Klevel k, String kKey)
- throws IOException
- {
- Iterator<String> keys = allTuples.keySet().iterator();
- ArrayList<Double> oAveragedTuples = new ArrayList<Double>(50);
- ArrayList<Double> aAveragedTuples = new ArrayList<Double>(50);
- ArrayList<Double> oSDTuples = new ArrayList<Double>(50);
- ArrayList<Double> aSDTuples = new ArrayList<Double>(50);
- ArrayList<Double> aAGConTuples = new ArrayList<Double>(50);
- ArrayList<Double> oAGConTuples = new ArrayList<Double>(50);
- ArrayList<Double> oAggSDTuples = new ArrayList<Double>(50);
- ArrayList<Double> aAggSDTuples = new ArrayList<Double>(50);
- for(int index = 0; index <= 50; index++)
- {
- oAveragedTuples.add(null);
- aAveragedTuples.add(null);
- oSDTuples.add(null);
- aSDTuples.add(null);
- aAGConTuples.add(null);
- oAGConTuples.add(null);
- oAggSDTuples.add(null);
- aAggSDTuples.add(null);
- }
-
- while(keys.hasNext())
- {
- String key = keys.next();
- String [] bits = key.split("-");
- int index = Integer.parseInt(bits[1]);
- Double average = 0.0;
- Iterator<Integer> tuples = allTuples.get(key).iterator();
- while(tuples.hasNext())
- {
- Integer tuple = tuples.next();
- average += tuple;
- }
- average = average / allTuples.get(key).size();
- double SD = findStandardDeviation(allTuples.get(key));
-
- if(bits[0].equals("o"))
- {
- oAveragedTuples.set(index, average);
- oSDTuples.set(index, SD);
- }
- else if(bits[0].equals("a"))
- {
- aAveragedTuples.set(index, average);
- aSDTuples.set(index, SD);
- }
- else if(bits[0].equals("oat"))
- {
- oAGConTuples.set(index, average);
- oAggSDTuples.set(index, SD);
- }
- else
- {
- aAGConTuples.set(index, average);
- aAggSDTuples.set(index, SD);
- }
-
- }
- Seed average = new Seed();
- average.setaAverage(aAveragedTuples);
- average.setoAverage(oAveragedTuples);
- average.setaAAverage(aAGConTuples);
- average.setoAAverage(oAGConTuples);
- average.setMax(maxValues);
- k.getData().put(kKey, average);
-
-
- BufferedWriter out = new BufferedWriter(new
FileWriter(kLevelOutput.toString() + sep + "avergaedTuples"));
- Iterator<Double> adata = aAveragedTuples.iterator();
- Iterator<Double> odata = oAveragedTuples.iterator();
- adata.next();
- odata.next();
- int counter = 1;
- DecimalFormat format = new DecimalFormat("#.##");
- while(adata.hasNext())
- {
- Double a = adata.next();
- Double o = odata.next();
- out.write(counter + " " + maxValues + " " + format.format(o) + " " +
format.format(a) + "\n");
- }
- out.flush();
- out.close();
-
- out = new BufferedWriter(new FileWriter(kLevelOutput.toString() + sep
+ "SDTuples"));
- adata = aSDTuples.iterator();
- odata = oSDTuples.iterator();
- adata.next();
- odata.next();
- counter = 1;
- while(adata.hasNext())
- {
- Double a = adata.next();
- Double o = odata.next();
- out.write(counter + " " + maxValues + " " + format.format(o) + " " +
format.format(a) + "\n");
- }
- double aAverageSD = 0.0;
- double oAverageSD = 0.0;
- Iterator<Double> tuples = aSDTuples.iterator();
- tuples.next();
-
- while(tuples.hasNext())
- {
- Double tuple = tuples.next();
- aAverageSD += tuple;
- }
- aAverageSD = aAverageSD / aSDTuples.size();
- tuples = oSDTuples.iterator();
- tuples.next();
- while(tuples.hasNext())
- {
- Double tuple = tuples.next();
- oAverageSD += tuple;
- }
- oAverageSD = oAverageSD / oSDTuples.size();
-
- out.write(format.format(oAverageSD) + " " + format.format(aAverageSD)
+ "\n");
- out.flush();
- out.close();
-
- out = new BufferedWriter(new FileWriter(kLevelOutput.toString() + sep
+ "SDAggTuples"));
- adata = aAggSDTuples.iterator();
- odata = oAggSDTuples.iterator();
- adata.next();
- odata.next();
- counter = 1;
- while(adata.hasNext())
- {
- Double a = adata.next();
- Double o = odata.next();
- out.write(counter + " " + maxValues + " " + format.format(o) + " " +
format.format(a) + "\n");
- }
- aAverageSD = 0.0;
- oAverageSD = 0.0;
- tuples = aAggSDTuples.iterator();
- tuples.next();
-
- while(tuples.hasNext())
- {
- Double tuple = tuples.next();
- aAverageSD += tuple;
- }
- aAverageSD = aAverageSD / aSDTuples.size();
- tuples = oSDTuples.iterator();
- tuples.next();
- while(tuples.hasNext())
- {
- Double tuple = tuples.next();
- oAverageSD += tuple;
- }
- oAverageSD = oAverageSD / oSDTuples.size();
-
- out.write(format.format(oAverageSD) + " " + format.format(aAverageSD)
+ "\n");
- out.flush();
- out.close();
-
- out = new BufferedWriter(new FileWriter(kLevelOutput.toString() + sep
+ "AggAvergaedTuples"));
- adata = aAGConTuples.iterator();
- odata = oAGConTuples.iterator();
- adata.next();
- odata.next();
- counter = 1;
- format = new DecimalFormat("#.##");
- while(adata.hasNext())
- {
- Double a = adata.next();
- Double o = odata.next();
- out.write(counter + " " + maxValues + " " + format.format(o) + " " +
format.format(a) + "\n");
- }
- out.flush();
- out.close();
-
-
- }
-
- private static void readInData(BufferedReader in, ArrayList<String>
tuples)
- throws IOException
- {
- String line = null;
- while((line = in.readLine()) != null)
- {
- tuples.add(line);
- }
- }
-
- private static ArrayList<String> locateCorrectArrayList(HashMap<String,
Query> data, String[] bits)
- {
- Query query = data.get(bits[0]);
- if(query == null)
- {
- query = new Query(new HashMap<String, Distance>());
- data.put(bits[0], query);
- Distance d = new Distance(new HashMap<String, Klevel>());
- String key = null;
- if(bits.length == 4)
- key = "1.0";
- else
- key = bits[3] + "." + bits[4];
- query.getData().put(key, d);
- Klevel k = new Klevel(new HashMap<String, Seed>());
- key = bits[1];
- d.getData().put(key, k);
- Seed s = new Seed();
- key = bits[2];
- k.getData().put(key, s);
- return s.getTuples();
- }
- else
- {
- String key = null;
- if(bits.length == 4)
- key = "1.0";
- else
- key = bits[3] + "." + bits[4];
- Distance d = query.getData().get(key);
- if(d == null)
- {
- d = new Distance(new HashMap<String, Klevel>());
- query.getData().put(key, d);
- key = "";
- Klevel k = new Klevel(new HashMap<String, Seed>());
- key = bits[1];
- d.getData().put(key, k);
- Seed s = new Seed();
- key = bits[2];
- k.getData().put(key, s);
- return s.getTuples();
- }
- else
- {
- key = bits[1];
- Klevel k = d.getData().get(key);
- if(k ==null)
- {
- k = new Klevel(new HashMap<String, Seed>());
- key = bits[1];
- d.getData().put(key, k);
- Seed s = new Seed();
- key = bits[2];
- k.getData().put(key, s);
- return s.getTuples();
- }
- else
- {
- Seed s = new Seed();
- key = bits[2];
- k.getData().put(key, s);
- return s.getTuples();
- }
- }
- }
- }
-
- public static double findStandardDeviation(ArrayList<Integer> array)
- {
- double mean = findMean(array);
- double d1 = 0;
- double d2 = 0;
- double sum = 0;
- for(int i = 0; i < array.size(); i++)
- {
- d2 = (mean - array.get(i))*(mean - array.get(i));
- d1 = d2 + d1;
- }
- return Math.sqrt((d1/(array.size()-1)));
- }
-
- public static double findMean(ArrayList<Integer> array)
- {
- double total = 0;
- for(int i = 0; i < array.size(); i++)
- {
- total = total + array.get(i);
- }
- return total/array.size();
- }
-
-
-
-
-}
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/java/uk/ac/manchester/snee/client/CondorReliableChannelClient.java
Thu May 2 05:06:41 2013
+++
/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/java/uk/ac/manchester/snee/client/CondorReliableChannelClient.java
Tue May 21 05:09:34 2013
@@ -134,6 +134,8 @@

SNEEProperties.setSetting(SNEEPropertyNames.RUN_AVRORA_SIMULATOR, "FALSE");

SNEEProperties.setSetting(SNEEPropertyNames.WSN_MANAGER_INITILISE_FRAMEWORKS, "FALSE");

SNEEProperties.setSetting(SNEEPropertyNames.WSN_MANAGER_UNRELIABLE_CHANNELS_NOISEMODEL, "TTX4-DemoNoiseTrace.txt");
+
SNEEProperties.setSetting(SNEEPropertyNames.WSN_MANAGER_UNRELIABLE_CHANNELS_RESILIENTLEVEL, "2");
+
SNEEProperties.setSetting(SNEEPropertyNames.WSN_MANAGER_K_ACTIVE_LEVEL, "2");

control.addQuery(_query, _queryParams, seed, distanceConverter);
getController().close();
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/java/uk/ac/manchester/snee/client/RelibaleChannelClient.java
Fri Mar 22 04:35:43 2013
+++
/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/java/uk/ac/manchester/snee/client/RelibaleChannelClient.java
Tue May 21 05:09:34 2013
@@ -40,9 +40,9 @@
{

private static String sep = System.getProperty("file.separator");
- private static int queryid =30;
+ private static int queryid =5;
protected static int testNo = 1;
- protected static int kResil = 2;
+ protected static int kResil = 5;
private static int max = 90;
private static File testFolder = new
File("src/main/resources/condorchecks");
private static File sneetestFolder = new File("condorchecks");
@@ -216,7 +216,7 @@
// {
//get query & schemas
// String currentQuery = queryIterator.next();
- // String currentQuery = "SELECT RSTREAM AVG(anow.x) as qx FROM A[NOW]
anow ;";
+ // String currentQuery = "SELECT RSTREAM AVG(anow.x) as qx FROM A[NOW]
anow ;";
String currentQuery = "SELECT RSTREAM anow.x as qx FROM A[NOW] anow ;";
// String currentQuery = "SELECT RSTREAM anow.x as qx FROM A[NOW]
anow,(SELECT bnow.x as sq1x FROM B[NOW] bnow, C[NOW] cnow WHERE
bnow.x=cnow.x) sq1 WHERE anow.x=sq1.sq1x;";
// String currentQuery = "SELECT RSTREAM sq1.sq1x as qx FROM (SELECT
anow.x as sq1x FROM A[NOW] anow, B[NOW] bnow WHERE anow.x=bnow.x) sq1,
(SELECT cnow.x as sq2x FROM C[NOW] cnow, D[NOW] dnow WHERE cnow.x=dnow.x)
sq2 WHERE sq1.sq1x=sq2.sq2x;";
@@ -278,6 +278,8 @@

SNEEProperties.setSetting(SNEEPropertyNames.RUN_AVRORA_SIMULATOR, "FALSE");

SNEEProperties.setSetting(SNEEPropertyNames.RUN_AVRORA_SIMULATOR, "FALSE");

SNEEProperties.setSetting(SNEEPropertyNames.WSN_MANAGER_INITILISE_FRAMEWORKS, "FALSE");
+
SNEEProperties.setSetting(SNEEPropertyNames.WSN_MANAGER_K_ACTIVE_LEVEL, "2");
+
SNEEProperties.setSetting(SNEEPropertyNames.WSN_MANAGER_UNRELIABLE_CHANNELS_RESILIENTLEVEL, "2");

control.addQuery(_query, _queryParams, new Long(0), new Double(1.0));
getController().close();
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/java/uk/ac/manchester/snee/client/utils/CondorScriptGenerator.java
Wed Mar 6 09:21:27 2013
+++
/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/java/uk/ac/manchester/snee/client/utils/CondorScriptGenerator.java
Tue May 21 05:09:34 2013
@@ -36,7 +36,8 @@
seeds.add(new Long(35));
seeds.add(new Long(40));
seeds.add(new Long(45));
-
validIds.addAll(Arrays.asList(1,2,3,4,5,6,30,31,32,33,34,36,60,62,64,67,68));
+ validIds.addAll(Arrays.asList(1,2,3,4,5,6));
+ // ,30,31,32,33,34,36,60,62,64,67,68));

File condorFile = new File("condor");
if(!condorFile.exists())
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/java/uk/ac/manchester/snee/client/utils/Distance.java
Fri Mar 1 10:09:26 2013
+++
/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/java/uk/ac/manchester/snee/client/utils/Distance.java
Tue May 21 05:09:34 2013
@@ -1,6 +1,7 @@
package uk.ac.manchester.snee.client.utils;

import java.util.HashMap;
+import java.util.Iterator;

public class Distance
{
@@ -20,5 +21,17 @@
{
return data;
}
+
+ public String toString()
+ {
+ String output = "";
+ Iterator<String> keys = data.keySet().iterator();
+ while(keys.hasNext())
+ {
+ String key = keys.next();
+ output = output.concat(data.get(key).toString() + ":");
+ }
+ return output;
+ }

}
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/java/uk/ac/manchester/snee/client/utils/Klevel.java
Fri Mar 1 10:09:26 2013
+++
/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/java/uk/ac/manchester/snee/client/utils/Klevel.java
Tue May 21 05:09:34 2013
@@ -1,6 +1,7 @@
package uk.ac.manchester.snee.client.utils;

import java.util.HashMap;
+import java.util.Iterator;

public class Klevel
{
@@ -20,4 +21,16 @@
{
return data;
}
+
+ public String toString()
+ {
+ String output = "";
+ Iterator<String> keys = data.keySet().iterator();
+ while(keys.hasNext())
+ {
+ String key = keys.next();
+ output = output.concat(data.get(key).toString() + ":");
+ }
+ return output;
+ }
}
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/java/uk/ac/manchester/snee/client/utils/Query.java
Fri Mar 1 10:09:26 2013
+++
/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/java/uk/ac/manchester/snee/client/utils/Query.java
Tue May 21 05:09:34 2013
@@ -1,6 +1,7 @@
package uk.ac.manchester.snee.client.utils;

import java.util.HashMap;
+import java.util.Iterator;

public class Query
{
@@ -21,6 +22,16 @@
return data;
}

-
+ public String toString()
+ {
+ String output = "";
+ Iterator<String> keys = data.keySet().iterator();
+ while(keys.hasNext())
+ {
+ String key = keys.next();
+ output = output.concat(data.get(key).toString() + ":");
+ }
+ return output;
+ }

}
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/java/uk/ac/manchester/snee/client/utils/Seed.java
Wed Mar 13 03:48:31 2013
+++
/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/java/uk/ac/manchester/snee/client/utils/Seed.java
Tue May 21 05:09:34 2013
@@ -1,6 +1,7 @@
package uk.ac.manchester.snee.client.utils;

import java.util.ArrayList;
+import java.util.Iterator;

public class Seed
{
@@ -75,6 +76,13 @@
{
return aAAverage;
}
+
+ public String toString()
+ {
+ String output = tuples.toString();
+ output =
output.concat("|"+this.getaAverage()+"|"+this.getoAverage()+"|"+this.aAAverage+"|"+this.oAAverage);
+ return output;
+ }


}
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/snee-core/src/main/java/uk/ac/manchester/cs/snee/common/SNEEPropertyNames.java
Thu May 2 05:06:41 2013
+++
/branches/alan_2012_07_19_unreliableChannels/snee-core/src/main/java/uk/ac/manchester/cs/snee/common/SNEEPropertyNames.java
Tue May 21 05:09:34 2013
@@ -330,6 +330,8 @@
public static final String WSN_MANAGER_EXECUTOR_EDGE_LIFE
= "wsn_manager.executor.edge.lifetime";

public static final String WSN_MANAGER_SUCCESSOR_NODE_FAILURES
= "wsn_manager.successor_nodeFailureCount";
+
+ public static final String WSN_MANAGER_K_ACTIVE_LEVEL
= "wsn_manager.executor.edge.activeLevel";

}

=======================================
---
/branches/alan_2012_07_19_unreliableChannels/snee-core/src/main/java/uk/ac/manchester/cs/snee/compiler/iot/AgendaIOT.java
Fri Mar 1 10:09:26 2013
+++
/branches/alan_2012_07_19_unreliableChannels/snee-core/src/main/java/uk/ac/manchester/cs/snee/compiler/iot/AgendaIOT.java
Tue May 21 05:09:34 2013
@@ -831,7 +831,7 @@
if (currentNode.getOutputs().length > 0)
{
final HashSet<InstanceExchangePart> tuplesToSend = new
HashSet<InstanceExchangePart>();
- final Iterator<InstanceExchangePart> exchCompIter =
iot.getExchangeOperatorsThoughInputs(currentNode).iterator();
+ final Iterator<InstanceExchangePart> exchCompIter =
iot.getExchangeOperatorsThoughSiteMapping(currentNode).iterator();
//TODO fix to use instance exchange parts.
while (exchCompIter.hasNext())
{
@@ -979,6 +979,8 @@
public CommunicationTask getCommunicationTaskBetween(Node child, Node
parent)
{
final Iterator<Task> taskIter = this.taskIterator((Site)child);
+ if(taskIter == null)
+ return null;
while(taskIter.hasNext())
{
Task task = taskIter.next();
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/snee-core/src/main/java/uk/ac/manchester/cs/snee/compiler/iot/IOT.java
Fri Mar 22 04:35:43 2013
+++
/branches/alan_2012_07_19_unreliableChannels/snee-core/src/main/java/uk/ac/manchester/cs/snee/compiler/iot/IOT.java
Tue May 21 05:09:34 2013
@@ -182,7 +182,7 @@
*/
public ArrayList<InstanceOperator> getOpInstances(Site site)
{
- return this.siteToOpInstMap.get(site);
+ return siteToOpInstMap.get(site);
}


@@ -1046,9 +1046,14 @@

public ArrayList<InstanceOperator> getOpInstancesInSpecialOrder(Site
site)
{
+ ArrayList<InstanceOperator> siteOperatorList;
+
if(this.getOpInstances(site, TraversalOrder.PRE_ORDER, true).size() ==
0)
- return this.getOpInstances(site, TraversalOrder.PRE_ORDER, true);
- ArrayList<InstanceOperator> siteOperatorList
=this.getOpInstances(site, TraversalOrder.PRE_ORDER, true);
+ siteOperatorList = this.getOpInstances(site);
+ else
+ siteOperatorList = this.getOpInstances(site,
TraversalOrder.PRE_ORDER, true);
+ if(siteOperatorList.size() == 0)
+ return siteOperatorList;
Iterator<InstanceOperator> operatorIterator =
siteOperatorList.iterator();
final ArrayList<InstanceOperator> operatorList = new
ArrayList<InstanceOperator>();
while(operatorIterator.hasNext())
@@ -1089,7 +1094,7 @@
if(inOp instanceof InstanceExchangePart)
{
InstanceExchangePart exOp = (InstanceExchangePart) inOp;
- if(exOp.getSourceFrag().getSite().getID().equals(currentSiteID))
+ if(exOp.getSite().getID().equals(currentSiteID))
{
this.doTransvesalIteratorSpeical(inOp, site, operatorList);
}
@@ -1108,7 +1113,8 @@
site, operatorList);

}
- operatorList.add(instanceOperator);
+ if(!operatorList.contains(instanceOperator))
+ operatorList.add(instanceOperator);
}
}
}
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/common/StrategyAbstract.java
Wed Dec 5 07:03:43 2012
+++
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/common/StrategyAbstract.java
Tue May 21 05:09:34 2013
@@ -308,8 +308,15 @@
//needs to distinguqise between sink and other nodes

if(!failedSite.getID().equals(oldAgenda.getIOT().getRT().getRoot().getID()))
{
- failedSite =
oldAgenda.getTransmissionTask(failedSite).getDestNode();
- commTimeOld = oldAgenda.getCommunicationTaskBetween(failedSite,
parent);
+ try
+ {
+ failedSite =
oldAgenda.getTransmissionTask(failedSite).getDestNode();
+ commTimeOld = oldAgenda.getCommunicationTaskBetween(failedSite,
parent);
+ }
+ catch(Exception e)
+ {
+ return false;
+ }
}
else
{
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/executer/Executer.java
Thu May 2 05:06:41 2013
+++
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/executer/Executer.java
Tue May 21 05:09:34 2013
@@ -10,6 +10,10 @@
import java.util.Iterator;
import java.util.List;

+import org.apache.log4j.Logger;
+
+import com.rits.cloning.Cloner;
+
import uk.ac.manchester.cs.snee.common.SNEEConfigurationException;
import uk.ac.manchester.cs.snee.common.SNEEProperties;
import uk.ac.manchester.cs.snee.common.SNEEPropertyNames;
@@ -24,10 +28,12 @@
import uk.ac.manchester.cs.snee.manager.common.AutonomicManagerComponent;
import uk.ac.manchester.cs.snee.manager.common.RunTimeSite;
import
uk.ac.manchester.cs.snee.manager.failednodestrategies.logicaloverlaynetwork.LogicalOverlayStrategy;
+import
uk.ac.manchester.cs.snee.manager.failednodestrategies.logicaloverlaynetwork.logicaloverlaynetworkgenerator.LogicalOverlayNetwork;
import uk.ac.manchester.cs.snee.manager.planner.Storage;
import
uk.ac.manchester.cs.snee.manager.planner.costbenifitmodel.model.channel.ChannelModel;
import
uk.ac.manchester.cs.snee.manager.planner.costbenifitmodel.model.channel.ChannelModelSite;
import
uk.ac.manchester.cs.snee.manager.planner.costbenifitmodel.model.channel.ChannelModelUtils;
+import
uk.ac.manchester.cs.snee.manager.planner.costbenifitmodel.model.channel.NoiseModel;
import
uk.ac.manchester.cs.snee.manager.planner.unreliablechannels.LogicalOverlayNetworkHierarchy;
import
uk.ac.manchester.cs.snee.manager.planner.unreliablechannels.RobustSensorNetworkQueryPlan;
import uk.ac.manchester.cs.snee.metadata.schema.SchemaMetadataException;
@@ -133,7 +139,7 @@
new CardinalityEstimatedCostModel(rQEP.getUnreliableAgenda(),
rQEP.getRT(), rQEP.getIOT());
model.runModel();
// fixed iterations
- numberOfIterations = 50;
+ numberOfIterations = 5;
HashMapList<String, RunTimeSite> sitesEnergyValues = new
HashMapList<String, RunTimeSite>();
//cycle though iterations
for(int iteration = 0; iteration < numberOfIterations; iteration ++)
@@ -200,7 +206,7 @@
{
Integer numberOfIterations =
Integer.parseInt(SNEEProperties.getSetting(

SNEEPropertyNames.WSN_MANAGER_UNRELIABLE_CHANNELS_SIMULATION_ITERATIONS));
- numberOfIterations = 50;
+ numberOfIterations = 5;
channelModel.setPacketModel(false);
HashMapList<String, RunTimeSite> sitesEnergyValues = new
HashMapList<String, RunTimeSite>();
for(int iteration = 0; iteration < numberOfIterations; iteration ++)
@@ -357,10 +363,11 @@
distanceFactorFolder.mkdir();
File robustFolder = new File(distanceFactorFolder.toString() + sep
+ "robust");
robustFolder.mkdir();
+ NoiseModel nModel = new NoiseModel(network,
manager.getCostsParamters(), seed);
ChannelModel channelModel =
new ChannelModel(rQEP.getLogicalOverlayNetwork(),
rQEP.getUnreliableAgenda(),
manager.getWsnTopology().getMaxNodeID(),
manager.getWsnTopology(),
- manager.getCostsParamters(), robustFolder, seed,
true);
+ manager.getCostsParamters(), robustFolder, seed,
true, nModel);
simulateRunOfRQEP(rQEP, channelModel);
LogicalOverlayNetworkHierarchy skelOverlay =
new LogicalOverlayNetworkHierarchy(rQEP.getLogicalOverlayNetwork(),
@@ -370,7 +377,7 @@
channelModel =
new ChannelModel(skelOverlay, qep.getAgendaIOT(),
manager.getWsnTopology().getMaxNodeID(),
manager.getWsnTopology(),
- manager.getCostsParamters(), staticFolder, seed,
false);
+ manager.getCostsParamters(), staticFolder, seed,
false, nModel);
simulateRunOfQEP(qep, channelModel, skelOverlay);
writeResultsToFile(distanceFactorFolder);
cleardataStores();
@@ -389,16 +396,23 @@
File robustFolder = new File(distanceFactorFolder.toString() + sep
+ "lifetimeEstimate");
robustFolder.mkdir();

- double overallRQEPShortestLifetime =
calculateOverallRQEPShortestLifetime(rQEP, robustFolder, seed);
+ Cloner cloner = new Cloner();
+ cloner.dontClone(Logger.class);
+
+ RobustSensorNetworkQueryPlan ClonedrQEP = cloner.deepClone(rQEP);
this.runningSites = manager.getCopyOfRunningSites();
- double overallQEPShortestLifetime =
calculateOverallQEPShortestLifetime(qep, robustFolder, seed, rQEP);
+ double overallQEPShortestLifetime =
calculateOverallQEPShortestLifetime(qep, robustFolder, seed, rQEP);
+ this.runningSites = manager.getCopyOfRunningSites();
+ this.network = manager.getWsnTopology();
+ double overallRQEPShortestLifetime =
calculateOverallRQEPShortestLifetime(ClonedrQEP, robustFolder, seed);

String queryid = manager.getQueryID();
DecimalFormat format = new DecimalFormat("#.##");
- BufferedWriter out = new BufferedWriter(new FileWriter(new
File(robustFolder.toString() + sep + "lifetimes")));
double overallQEPShortestLifetimeA = overallQEPShortestLifetime /
(rQEP.getUnreliableAgenda().getDeliveryTime_ms() / 1000);
double overallRQEPShortestLifetimeA = overallRQEPShortestLifetime /
(rQEP.getUnreliableAgenda().getDeliveryTime_ms() / 1000);
- out.write(queryid + " " + format.format(overallQEPShortestLifetimeA)
+ " " + format.format(overallRQEPShortestLifetimeA));
+ System.out.println(queryid + " " +
format.format(overallQEPShortestLifetimeA) + " " +
format.format(overallRQEPShortestLifetimeA));
+ BufferedWriter out = new BufferedWriter(new FileWriter(new
File(this.executerOutputFolder.toString() + sep + "lifetimes")));
+ out.write(queryid + " " + format.format(overallQEPShortestLifetimeA)
+ " " + format.format(overallRQEPShortestLifetimeA));
out.flush();
out.close();
return new Storage(overallRQEPShortestLifetime,
overallQEPShortestLifetime);
@@ -432,16 +446,20 @@
LogicalOverlayStrategy logicalOverlayGenerator = new
LogicalOverlayStrategy(this.manager, this._metadata,

this.manager.get_metadataManager());
logicalOverlayGenerator.initilise(QEP, 1);
-
+ LogicalOverlayNetworkHierarchy skelOverlay =
+ new
LogicalOverlayNetworkHierarchy(logicalOverlayGenerator.getLogicalOverlay(),
+ QEP, manager.getWsnTopology());
+ LogicalOverlayNetwork tempOverlay =
logicalOverlayGenerator.getLogicalOverlay();
+ NoiseModel nModel = new NoiseModel(network,
manager.getCostsParamters(), seed);
while(alive)
{
- LogicalOverlayNetworkHierarchy skelOverlay =
- new
LogicalOverlayNetworkHierarchy(logicalOverlayGenerator.getLogicalOverlay(),
+ skelOverlay =
+ new LogicalOverlayNetworkHierarchy(tempOverlay,
QEP, manager.getWsnTopology());
- ChannelModel channelModel =
- new ChannelModel(skelOverlay, QEP.getAgendaIOT(),
- manager.getWsnTopology().getMaxNodeID(),
manager.getWsnTopology(),
- manager.getCostsParamters(), robustFolder, seed,
false);
+ ChannelModel channelModel =
+ new ChannelModel(skelOverlay, QEP.getAgendaIOT(),
+ manager.getWsnTopology().getMaxNodeID(),
manager.getWsnTopology(),
+ manager.getCostsParamters(), robustFolder, seed,
false, nModel);
ArrayList<RunTimeSite> qepCostAveragesQeps = simulateRunOfQEP(QEP,
channelModel, skelOverlay);
Iterator<RunTimeSite> newQEPCostIterator =
qepCostAveragesQeps.iterator();
while(newQEPCostIterator.hasNext())
@@ -500,6 +518,9 @@
else
{
QEP = result.get(0).getNewQep();
+ logicalOverlayGenerator.getLogicalOverlay().setQep(QEP);
+ logicalOverlayGenerator.update(result.get(0));
+ tempOverlay = logicalOverlayGenerator.getLogicalOverlay();
shortestLifetime = Double.MAX_VALUE;
}
}
@@ -534,12 +555,13 @@
boolean alive = true;
ArrayList<String> globalFailedNodes = new ArrayList<String>();
double overallRQEPShortestLifetime = 0;
+ NoiseModel Nmodel = new NoiseModel(network,
manager.getCostsParamters(), seed);
while(alive)
{
ChannelModel channelModel =
new ChannelModel(rQEP.getLogicalOverlayNetwork(),
rQEP.getUnreliableAgenda(),
manager.getWsnTopology().getMaxNodeID(),
manager.getWsnTopology(),
- manager.getCostsParamters(), robustFolder, seed,
true);
+ manager.getCostsParamters(), robustFolder, seed,
true, Nmodel);
ArrayList<RunTimeSite> qepCostAveragesResilentQeps =
simulateRunOfRQEP(rQEP, channelModel);
//correct energy model values
Iterator<RunTimeSite> newQEPCostIterator =
qepCostAveragesResilentQeps.iterator();
@@ -587,9 +609,10 @@
updateSitesEnergyLevels(shortestLifetime, globalFailedNodes);
overallRQEPShortestLifetime += (shortestLifetime * agendaLength);
globalFailedNodes.add(failedSite);
+ System.out.println("node " + failedSite);
if(rQEP.getLogicalOverlayNetwork().canAdapt(failedSite, rQEP))
{
- System.out.println("node " + failedSite);
+ System.out.println("adapting");
ArrayList<String> failedNodeIDs = new ArrayList<String>();
failedNodeIDs.add(failedSite);
LogicalOverlayStrategy logicalOverlayGenerator =
@@ -607,6 +630,7 @@
}
else
{
+ System.out.println("not adapting");
alive = false;
}
}
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/failednodestrategies/logicaloverlaynetwork/LogicalOverlayStrategy.java
Thu May 2 05:06:41 2013
+++
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/failednodestrategies/logicaloverlaynetwork/LogicalOverlayStrategy.java
Tue May 21 05:09:34 2013
@@ -271,7 +271,7 @@
private boolean isThereACluster(String primary,
LogicalOverlayNetwork overlay)
{
- if(overlay.getEquivilentNodes(primary).size() != 0)
+
if(overlay.getEquivilentNodes(overlay.getClusterHeadFor(primary)).size() !=
0)
return true;
else
return false;
@@ -413,10 +413,13 @@
while(eqivExchangeIterator.hasNext())
{
InstanceExchangePart eqPart = eqivExchangeIterator.next();
- if(exOpInst.getID().equals(eqPart.getNext().getID()))
+ if(eqPart != null && eqPart.getNext() != null && exOpInst !=
null)
{
- exOpInst.setPreviousExchange(eqPart);
- exOpInst.addInput(eqPart);
+ if(exOpInst.getID().equals(eqPart.getNext().getID()))
+ {
+ exOpInst.setPreviousExchange(eqPart);
+ exOpInst.addInput(eqPart);
+ }
}
}
}
@@ -513,10 +516,10 @@
{
IOT newIOT = clonedIOT;
newIOT.setID("new iot");
- IOTUtils utils = new IOTUtils(newIOT,
currentQEP.getCostParameters());
- utils.disconnectExchanges();
+ // IOTUtils utils = new IOTUtils(newIOT,
currentQEP.getCostParameters());
+ // utils.disconnectExchanges();
// newIOT.setDAF(utils.convertToDAF());
- utils.reconnectExchanges();
+ //utils.reconnectExchanges();
new IOTUtils(clonedIOT,
overlay.getQep().getCostParameters()).exportAsDotFileWithFrags(localFolder.toString()
+ sep + "iotAfterReconnect", "iot with eqiv nodes", true);
//new
DAFUtils(newIOT.getDAF()).exportAsDotFile(localFolder.toString() + sep
+ "daf");
new LogicalOverlayNetworkUtils().exportAsADotFile(clonedIOT,
overlay, localFolder.toString() + sep + "iot with overlay after disconnect
and reconnect");
@@ -575,27 +578,46 @@
{
String failedNodeID = failedNodeIDsIterator.next();
Site failedSite =
cloner.deepClone(overlay.getQep().getRT().getSite(failedNodeID));
-
- String equivilentNodeID =
- retrieveNewClusterHead(failedNodeID,
-
currentRoutingTree.getSite(failedNodeID).getInputsList(),
-
currentRoutingTree.getSite(failedNodeID).getOutput(0), overlay);
- //sort out adaptation data structs.
- adapt.addActivatedSite(equivilentNodeID);
- Iterator<Node> redirectedNodesIterator =
overlay.getQep().getRT().getSite(failedNodeID).getInputsList().iterator();
- while(redirectedNodesIterator.hasNext())
+ if(overlay.getClusterHeadFor(failedNodeID).equals(failedNodeID))
{
- adapt.addRedirectedSite(redirectedNodesIterator.next().getID());
+ String equivilentNodeID =
+ retrieveNewClusterHead(failedNodeID,
+
currentRoutingTree.getSite(failedNodeID).getInputsList(),
+
currentRoutingTree.getSite(failedNodeID).getOutput(0), overlay);
+ //sort out adaptation data structs.
+ adapt.addActivatedSite(equivilentNodeID);
+ Iterator<Node> redirectedNodesIterator =
overlay.getQep().getRT().getSite(failedNodeID).getInputsList().iterator();
+ while(redirectedNodesIterator.hasNext())
+ {
+ adapt.addRedirectedSite(redirectedNodesIterator.next().getID());
+ }
+ //rewire routing tree
+ rewireRoutingTree(failedNodeID, equivilentNodeID,
currentRoutingTree);
+ new
RTUtils(currentRoutingTree).exportAsDOTFile(localFolder.toString() + sep
+ "new RT");
+ new LogicalOverlayNetworkUtils().exportAsADotFile(clonedIOT,
overlay, localFolder.toString() + sep + "iot with overlay Before nodes ");
+ //rewire children
+ rewireOperators(clonedIOT, failedNodeID, equivilentNodeID,
overlay.getQep().getIOT(), failedSite);
+ new LogicalOverlayNetworkUtils().exportAsADotFile(clonedIOT,
overlay, localFolder.toString() + sep + "iot with overlay after nodes");
+ overlay.updateClusters(failedNodeID, equivilentNodeID);
+ cleanNodes(clonedIOT, failedNodeID);
}
- //rewire routing tree
- rewireRoutingTree(failedNodeID, equivilentNodeID,
currentRoutingTree);
- new
RTUtils(currentRoutingTree).exportAsDOTFile(localFolder.toString() + sep
+ "new RT");
- new LogicalOverlayNetworkUtils().exportAsADotFile(clonedIOT,
overlay, localFolder.toString() + sep + "iot with overlay Before nodes ");
- //rewire children
- rewireOperators(clonedIOT, failedNodeID, equivilentNodeID,
overlay.getQep().getIOT(), failedSite);
- new LogicalOverlayNetworkUtils().exportAsADotFile(clonedIOT,
overlay, localFolder.toString() + sep + "iot with overlay after nodes");
- overlay.updateClusters(failedNodeID, equivilentNodeID);
- cleanNodes(clonedIOT, failedNodeID);
+ else
+ {
+ String overlayClusterHead =
overlay.getClusterHeadFor(failedNodeID);
+ String equivilentNodeID =
+ retrieveNewClusterHead(failedNodeID,
+
currentRoutingTree.getSite(overlayClusterHead).getInputsList(),
+
currentRoutingTree.getSite(overlayClusterHead).getOutput(0), overlay);
+ if(equivilentNodeID != null)
+ {
+ overlay.updateClusters(failedNodeID, equivilentNodeID);
+ }
+ else
+ {
+ overlay.removeNode(failedNodeID);
+ }
+ cleanNodes(clonedIOT, failedNodeID);
+ }
}
new IOTUtils(clonedIOT,
overlay.getQep().getCostParameters()).exportAsDotFileWithFrags(localFolder.toString()
+ sep + "iot", "iot with eqiv nodes", true);

=======================================
---
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/failednodestrategies/logicaloverlaynetwork/logicaloverlaynetworkgenerator/LogicalOverlayGenerator.java
Fri Feb 15 10:30:48 2013
+++
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/failednodestrategies/logicaloverlaynetwork/logicaloverlaynetworkgenerator/LogicalOverlayGenerator.java
Tue May 21 05:09:34 2013
@@ -26,7 +26,11 @@
import uk.ac.manchester.cs.snee.manager.common.StrategyIDEnum;
import uk.ac.manchester.cs.snee.manager.planner.Planner;
*/
+import uk.ac.manchester.cs.snee.manager.common.Adaptation;
+import uk.ac.manchester.cs.snee.manager.common.RunTimeSite;
+import uk.ac.manchester.cs.snee.manager.common.StrategyIDEnum;
import
uk.ac.manchester.cs.snee.manager.failednodestrategies.logicaloverlaynetwork.LogicalOverlayStrategy;
+import uk.ac.manchester.cs.snee.manager.planner.Planner;
//import
uk.ac.manchester.cs.snee.manager.planner.costbenifitmodel.model.Model;
import uk.ac.manchester.cs.snee.metadata.MetadataManager;
import uk.ac.manchester.cs.snee.metadata.schema.SchemaMetadataException;
@@ -196,6 +200,8 @@
LogicalOverlayNetwork first = setsOfLogicalOverlays.get(0);
transferQEPsToCandiates(first, qepID);
new LogicalOverlayGeneratorUtils().storeOverlayAsText(first,
localFolder);
+ // Double lifetime = determineMinumalLifetime(first,
failedNodeStrategyLocal);
+ // System.out.println((lifetime / 1024) );
return first;
}

@@ -210,7 +216,7 @@
* @throws OptimizationException
* @throws IOException
* @throws SNEEConfigurationException
- *//*
+ */
private Double determineMinumalLifetime(LogicalOverlayNetwork
currentOverlay,
LogicalOverlayStrategy
failedNodeStrategyLocal)
throws IOException, OptimizationException, SchemaMetadataException,
@@ -232,7 +238,7 @@
Planner planner = new Planner(manager, _metadata, _metadataManager,
runningSites, outputFolder);
planner.assessOverlayCosts(outputFolder, overlayOTAProgramCost,
currentOverlay, failedNodeStrategyLocal);
return overlayOTAProgramCost.getLifetimeEstimate();
- }*/
+ }

/**
* checks the level of resilience in each cluster, returns false if any
one of them meets specified levels
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/failednodestrategies/logicaloverlaynetwork/logicaloverlaynetworkgenerator/LogicalOverlayNetwork.java
Wed Dec 5 07:03:43 2012
+++
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/failednodestrategies/logicaloverlaynetwork/logicaloverlaynetworkgenerator/LogicalOverlayNetwork.java
Tue May 21 05:09:34 2013
@@ -242,6 +242,9 @@
*/
public void updateCluster(String head, String newHead)
{
+ if(head.equals("27"))
+ System.out.println();
+
ArrayList<String> candidates = clusters.get(head);
candidates.remove(newHead);
clusters.remove(head);
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/Planner.java
Thu May 2 05:06:41 2013
+++
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/Planner.java
Tue May 21 05:09:34 2013
@@ -474,7 +474,7 @@
// this._metadataManager.getCostParameters());

boolean runTupleSim =
SNEEProperties.getBoolSetting(SNEEPropertyNames.WSN_MANAGER_EXECUTOR_EDGE_TUPLES);
- runTupleSim = true;
+ runTupleSim = false;
if(runTupleSim)
{
manager.simulateRunOfRQEP(rQEP, qep, seed, distanceConverter);
@@ -483,14 +483,14 @@
// assessor.assessOverlayChoice(storage, runningSites,
rQEP.getLogicalOverlayNetwork(),
// local, channelModel);
boolean runLifeSim =
SNEEProperties.getBoolSetting(SNEEPropertyNames.WSN_MANAGER_EXECUTOR_EDGE_LIFE);
- runLifeSim = false;
+ runLifeSim = true;
if(runLifeSim)
{
Storage storage =
manager.calculateLifetimeDifferenceFromDeployments(rQEP, qep, seed,
distanceConverter);
System.out.println("new robust lifetime = " +
(storage.getRobustLifetime() /
(rQEP.getUnreliableAgenda().getDeliveryTime_ms()
/ 1000)));
- System.out.println("new robust lifetime = " +
+ System.out.println("new lifetime = " +
(storage.getNaiveLifetime() /
(rQEP.getUnreliableAgenda().getDeliveryTime_ms() / 1000)));
}
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/costbenifitmodel/model/channel/CPMModel.java
Fri Mar 22 04:35:43 2013
+++
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/costbenifitmodel/model/channel/CPMModel.java
Tue May 21 05:09:34 2013
@@ -369,10 +369,27 @@
while((line = in.readLine()) != null)
{
if(successfulConvert(line));
- experimentalNoiseMeasurements.add(Integer.parseInt(line));
+ boolean success = tryToReadValue(line,
experimentalNoiseMeasurements);
}
}

+ private boolean tryToReadValue(String line,
+ ArrayList<Integer> experimentalNoiseMeasurements2)
+ {
+ try
+ {
+ experimentalNoiseMeasurements.add(Integer.parseInt(line));
+ return true;
+ }
+ catch(Exception e)
+ {
+ Double noiseVal = Double.parseDouble(line);
+ experimentalNoiseMeasurements.add(noiseVal.intValue());
+ return true;
+ }
+
+ }
+
/**
* checks if the text can be converted into a double
* @param line
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/costbenifitmodel/model/channel/ChannelModel.java
Mon Mar 4 09:34:19 2013
+++
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/costbenifitmodel/model/channel/ChannelModel.java
Tue May 21 05:09:34 2013
@@ -20,10 +20,12 @@
import uk.ac.manchester.cs.snee.compiler.iot.InstanceFragment;
import uk.ac.manchester.cs.snee.compiler.iot.InstanceFragmentTask;
import uk.ac.manchester.cs.snee.compiler.iot.InstanceOperator;
+import uk.ac.manchester.cs.snee.compiler.queryplan.Agenda;
import uk.ac.manchester.cs.snee.compiler.queryplan.CommunicationTask;
import uk.ac.manchester.cs.snee.compiler.queryplan.Fragment;
import uk.ac.manchester.cs.snee.compiler.queryplan.FragmentTask;
import uk.ac.manchester.cs.snee.compiler.queryplan.RadioOnTask;
+import uk.ac.manchester.cs.snee.compiler.queryplan.SensorNetworkQueryPlan;
import uk.ac.manchester.cs.snee.compiler.queryplan.SleepTask;
import uk.ac.manchester.cs.snee.compiler.queryplan.Task;
import uk.ac.manchester.cs.snee.compiler.queryplan.TraversalOrder;
@@ -93,16 +95,20 @@

public ChannelModel(LogicalOverlayNetworkHierarchy logicaloverlayNetwork,
AgendaIOT agenda, int networkSize, Topology network,
- CostParameters costs, File executorFolder, Long seed, boolean
packetID)
+ CostParameters costs, File executorFolder, Long seed, boolean
packetID,
+ NoiseModel noiseModel)
throws SNEEConfigurationException, IOException
{
- this.agendaIOT = agenda;
+ if(agenda instanceof UnreliableChannelAgenda)
+ this.agenda = (UnreliableChannelAgenda) agenda;
+ else
+ this.agendaIOT = agenda;
this.executorFolder = executorFolder;
this.costs = costs;
this.logicaloverlayNetwork = logicaloverlayNetwork;
setupEmptyArray(networkSize + 1);
createChannelSites(packetID);
- noiseModel = new NoiseModel(network, costs, seed);
+ this.noiseModel = noiseModel;

}
/**
@@ -191,7 +197,8 @@
else if(cTask.getMode() == CommunicationTask.TRANSMIT && runable)
{
ChannelModelSite source =
channelModel.get(Integer.parseInt(cTask.getSourceID()));
-
+ if(source == null)
+ System.out.println();
if(source.receivedACK())
{
cTask.setRan(false);
@@ -225,6 +232,8 @@
else if(cTask.getMode() == CommunicationTask.ACKTRANSMIT &&
runable)
{
ChannelModelSite site =
channelModel.get(Integer.parseInt(cTask.getDestID()));
+ if(site == null || cTask == null)
+ System.out.println();
if(site.needToTransmitAckTo(cTask.getSourceID()))
{
cTask.setRan(true);
@@ -281,10 +290,10 @@
siteTasks = this.agendaIOT.getTasks().get(site);
}

- //not within the QEP. so no cost
+ //not within the QEP. so idle cost
if(siteTasks == null)
{
- return 0;
+ return getCPUEnergy(new Long(0));
}
for (int i=0; i<siteTasks.size(); i++)
{
@@ -548,6 +557,8 @@
String siteID = siteIDIterator.next();
Integer siteIDInt = Integer.parseInt(siteID);
String clusterHeadID =
logicaloverlayNetwork.getClusterHeadFor(siteID);
+ if(logicaloverlayNetwork.getQep().getRT().getSite(clusterHeadID) ==
null)
+ System.out.println();
Iterator<Node> inputNodes =

logicaloverlayNetwork.getQep().getRT().getSite(clusterHeadID).getInputsList().iterator();
HashMap<String, Integer> expectedPackets = new HashMap<String,
Integer>();
@@ -564,13 +575,19 @@
task = agendaIOT.getTransmissionTask(agendaInput);
else
task = agenda.getTransmissionTask(agendaInput);
- int packetsToRecieve = task.getMaxPacektsTransmitted();
+ int packetsToRecieve;
+ if(task == null) //simple agenda, so sibligns dont have tasks
+ packetsToRecieve = 0;
+ else
+ packetsToRecieve = task.getMaxPacektsTransmitted();
expectedPackets.put(input.getID(), packetsToRecieve);
Iterator<String> equivNodes =

logicaloverlayNetwork.getActiveEquivilentNodes(input.getID()).iterator();
while(equivNodes.hasNext())
{
String equivNode = equivNodes.next();
+ if(equivNode.equals("14"))
+ System.out.println();
Node agendaEquivInput = null;
if(agenda == null)
agendaEquivInput = agendaIOT.getSiteByID(equivNode);
@@ -580,10 +597,18 @@
task = agendaIOT.getTransmissionTask(agendaEquivInput);
else
task = agenda.getTransmissionTask(agendaEquivInput);
- packetsToRecieve = task.getMaxPacektsTransmitted();
+ if(task == null)
+ {
+ packetsToRecieve = 0;
+ }
+ else
+ {
+ packetsToRecieve = task.getMaxPacektsTransmitted();
+ }
expectedPackets.put(equivNode, packetsToRecieve);
}
}
+

if(logicaloverlayNetwork.getQep().getRT().getRoot().getID().equals(clusterHeadID))
{//root node with delivery operator, doesnt have a cluster, but
needs a channel model site
ChannelModelSite site = null;
@@ -618,20 +643,9 @@
else //your a sibling in the logical overlay to the cluster head.
{
expectedPackets = new HashMap<String, Integer>();
- if(agenda == null)
+ if(agenda == null)// your in a simple agenda, and so sibling
dont do anything
{
- //siblings only receive packets from cluster head and other
siblings
- Site clusterHeadSite =
this.agendaIOT.getSiteByID(clusterHeadID);
- int packetsTransmittedByClusterHead =
-
this.agendaIOT.getTransmissionTask(clusterHeadSite).getMaxPacektsTransmitted();
- expectedPackets.put(clusterHeadID,
packetsTransmittedByClusterHead);
- Iterator<String> siblings =
-
this.logicaloverlayNetwork.getActiveEquivilentNodes(clusterHeadID).iterator();
- while(siblings.hasNext())
- {
- expectedPackets.put(siblings.next(),
packetsTransmittedByClusterHead);
- }
-
+ //siblings only receive packets from cluster head and other
siblings
site = new ChannelModelSite(expectedPackets, siteID,
logicaloverlayNetwork,

logicaloverlayNetwork.getPriority(siteID),

agendaIOT.getTasks().get(agendaIOT.getSiteByID(siteID)),
@@ -714,8 +728,31 @@
while(siteIterator.hasNext())
{
Site site = siteIterator.next();
+ if(site == null || site.getID() == null)
+ System.out.println();
+ if(this.channelModel.get(Integer.parseInt(site.getID())) == null)
+ System.out.println();

this.channelModel.get(Integer.parseInt(site.getID())).determineAggregationContribution(site.getID());
}
return ChannelModelSite.getTuplesParticipatingInAggregation();
}
+ public void setQEP(SensorNetworkQueryPlan qEP)
+ {
+ this.logicaloverlayNetwork.setQep(qEP);
+
+ }
+ public void setLogicalOverlayNetwork(
+ LogicalOverlayNetworkHierarchy logicalOverlayNetwork)
+ {
+ this.logicaloverlayNetwork = logicalOverlayNetwork;
+
+ }
+ public void setAgendaIOT(UnreliableChannelAgenda agendaIOT)
+ {
+ this.agenda =agendaIOT;
+ }
+ public void setAgendaIOT(AgendaIOT agenda)
+ {
+ this.agendaIOT = agenda;
+ }
}
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/costbenifitmodel/model/channel/ChannelModelSite.java
Thu May 2 05:06:41 2013
+++
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/costbenifitmodel/model/channel/ChannelModelSite.java
Tue May 21 05:09:34 2013
@@ -92,6 +92,7 @@
this.priority = position;
this.beta = beta;
ChannelModelSite.costs = costs;
+ if(tasks != null)
this.tasks.addAll(tasks);
this.model = model;
usePacketIDs = packetID;
@@ -161,7 +162,9 @@
{
String EquivNode = equivNodesIterator.next();
ArrayList<Boolean> equivPackets = arrivedPackets.get(EquivNode);
- if(equivPackets.get(counter))
+ if(equivPackets.size() <= counter)
+ found = false;
+ else if(equivPackets.get(counter))
found = true;
}
if(!found)
@@ -346,10 +349,12 @@
public ArrayList<Integer> transmittablePackets(IOT IOT)
throws OptimizationException, SchemaMetadataException,
TypeMappingException
{
- if(!ranAlready)
- {
- ranAlready = true;
Site site = IOT.getSiteFromID(siteID);
+ this.packetIds.clear();
+ this.transmitableWindows.clear();
+
+ if(siteID.equals("1"))
+ System.out.println();
ArrayList<InstanceOperator> operators =
IOT.getOpInstancesInSpecialOrder(site);
Iterator<InstanceOperator> operatorIterator = operators.iterator();
HashMap<String, Integer> currentPacketCount = new HashMap<String,
Integer>();
@@ -380,7 +385,7 @@
{
rPacketCount = 0;
}
- boolean isleaf =
exOp.getSourceFrag().containsOperatorType(SensornetAcquireOperator.class);
+ boolean isleaf = exOp.getSourceFrag().isLeaf();
int outputPackets = this.tupleToPacketConversion(tuples,
previousOp, exOp, cPacketCount);
addToPacketCounts(outputPackets, cPacketCount, isleaf,
packetIds);

@@ -538,7 +543,6 @@
}
}
}
- }
return packetIds;
}

@@ -684,9 +688,11 @@
{
Boolean recieved = receivedPacketIterator.next();
int oldtupleRatio = tupleRatio;
+ if(op == null || op.getLastPacketTupleCount() == null)
+ System.out.println();
if(counter == receivedPackets.size() -1)
{
- tupleRatio = op.getLastPacketTupleCount();
+ tupleRatio = op.getLastPacketTupleCount();
}
for(int index = 1; index <= tupleRatio; index++)
{
@@ -788,7 +794,7 @@
{
String EquivNode = EquivNodes.next();
ArrayList<Boolean> equivPackets =
arrivedPackets.get(EquivNode);
- if(equivPackets.get(counter))
+ if(equivPackets.size() > counter && equivPackets.get(counter))
{
reducedPackets.add(true);
updated = true;
@@ -814,13 +820,23 @@
throws SchemaMetadataException, TypeMappingException
{
int tupleSize = 0;
+ boolean foundAcquire = false;
+ while(!(op instanceof InstanceExchangePart) && !foundAcquire)
+ {
+ if(op.getSensornetOperator() instanceof SensornetAcquireOperator)
+ foundAcquire = true;
+ else
+ op = (InstanceOperator) op.getInput(0);
+ }

- while(!(op instanceof InstanceExchangePart))
+
+ if(foundAcquire)
+ tupleSize = op.getSensornetOperator().getPhysicalTupleSize();
+ else
{
- op = (InstanceOperator) op.getInput(0);
+ InstanceExchangePart exOp = (InstanceExchangePart) op;
+ tupleSize =
exOp.getSourceFrag().getRootOperator().getSensornetOperator().getPhysicalTupleSize();
}
- InstanceExchangePart exOp = (InstanceExchangePart) op;
- tupleSize =
exOp.getSourceFrag().getRootOperator().getSensornetOperator().getPhysicalTupleSize();
int maxMessagePayloadSize = costs.getMaxMessagePayloadSize();
int payloadOverhead =0;
if(this.usePacketIDs)
@@ -902,6 +918,8 @@
}
else
{
+ if(op ==null || op.getSensornetOperator() == null)
+ System.out.println();
tupleSize = op.getSensornetOperator().getPhysicalTupleSize();
}
int maxMessagePayloadSize = costs.getMaxMessagePayloadSize();
@@ -1182,7 +1200,9 @@
{
String EquivNode = EquivNodes.next();
ArrayList<Boolean> equivPackets =
arrivedPackets.get(EquivNode);
- if(equivPackets.get(counter))
+ if(equivPackets.size() <= counter)
+ packetRecieved = false;
+ else if(equivPackets.get(counter))
packetRecieved = true;
}
}
@@ -1199,8 +1219,6 @@
counter++;
packetRecieved = false;
}
- if(packetsRecieved == 0)
- System.out.println();
return packetsRecieved;
}

@@ -1293,7 +1311,9 @@
{
String EquivNode = EquivNodes.next();
ArrayList<Boolean> equivPackets =
arrivedPackets.get(EquivNode);
- if(equivPackets.get(counter))
+ if(equivPackets.size() <= counter)
+ packetRecieved = false;
+ else if(equivPackets.get(counter))
packetRecieved = true;
}
}
@@ -1329,6 +1349,8 @@
ArrayList<Integer> packetIDs = new ArrayList<Integer>();
String key = this.overlayNetwork.getClusterHeadFor(siteID);
ArrayList<Boolean> packets = arrivedPackets.get(key);
+ if(packets == null)
+ System.out.println();
Iterator<Boolean> packetIterator = packets.iterator();
int counter = 0;
while(packetIterator.hasNext())
@@ -1374,6 +1396,8 @@
throws SchemaMetadataException, TypeMappingException
{
Site site = overlayNetwork.getQep().getIOT().getSiteFromID(siteId);
+ if(site == null)
+ System.out.println();
ArrayList<InstanceOperator> operators =
overlayNetwork.getQep().getIOT().getOpInstances(site,
TraversalOrder.POST_ORDER, true);
Iterator<InstanceOperator> operatorIterator = operators.iterator();
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/unreliablechannels/LogicalOverlayNetworkHierarchy.java
Fri Mar 22 04:35:43 2013
+++
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/unreliablechannels/LogicalOverlayNetworkHierarchy.java
Tue May 21 05:09:34 2013
@@ -156,7 +156,7 @@
if(k < resilientLevel)
throw new SNEEConfigurationException("cannot support a resilient level
above the minimal level defined as k");
if(resilientLevel <= 0)
- resilientLevel = 1;
+ resilientLevel = 1;
keys = logicaloverlayNetwork.getClusters().keySet().iterator();
while(keys.hasNext())
{
@@ -184,7 +184,8 @@
while(keys.hasNext())
{
String key = keys.next();
- this.addClusterNode(key, key);
+ this.addClusterNode(key,logicalOverlay.getClusters().get(key));
+
}
id = "HierarchyBasedOverlay";

@@ -197,20 +198,37 @@
if(k < resilientLevel)
throw new SNEEConfigurationException("cannot support a resilient level
above the minimal level defined as k");
if(resilientLevel <= 0)
- resilientLevel = 1;
+ resilientLevel = 1;
keys = logicalOverlay.getClusters().keySet().iterator();
while(keys.hasNext())
{
String key = keys.next();
- this.activeClusters.add(key, key);
+ this.addActiveClusters(key, logicalOverlay.getClusters().get(key));
}
keys = logicalOverlay.getClusters().keySet().iterator();
while(keys.hasNext())
{
String key = keys.next();
this.activeClustersPriority.put(key, 1);
+ Iterator<String> eqivNodeIterator =
logicalOverlay.getClusters().get(key).iterator();
+ int counter = 2;
+ while(eqivNodeIterator.hasNext())
+ {
+ this.activeClustersPriority.put(eqivNodeIterator.next(),counter);
+ counter++;
+ }
} // TODO Auto-generated constructor stub
}
+
+ private void addActiveClusters(String key, ArrayList<String> equivNodes)
+ {
+ this.activeClusters.addAll(key, equivNodes);
+ if(equivNodes.isEmpty())
+ {
+ this.activeClusters.add(key, "");
+ this.activeClusters.remove(key, "");
+ }
+ }

private HashMap<String, Integer> getActiveClustersOriginalPriority()
{
@@ -235,9 +253,11 @@
/**
* creates the list of nodes that will paritcipate with the unreliable
channel model.
* Is goverened by the resilient level
+ * @throws SNEEConfigurationException
+ * @throws NumberFormatException
*/
@SuppressWarnings("unchecked")
- private void selectActiveNodes()
+ private void selectActiveNodes() throws NumberFormatException,
SNEEConfigurationException
{
this.activeClusters = new HashMapList<String, String>();
this.activeClustersPriority = new HashMap<String, Integer>();
@@ -262,8 +282,9 @@
priority ++;
ArrayList<String> equivNodes =
this.getInactiveCluster(clusterHeadID);
equivNodes = (ArrayList<String>) equivNodes.clone();
- int leftOverResilience = resilientLevel -1;
- while(leftOverResilience >= 0)
+ int leftOverResilience = Integer.parseInt(
+
SNEEProperties.getSetting(SNEEPropertyNames.WSN_MANAGER_K_ACTIVE_LEVEL));
+ while(leftOverResilience > 0)
{
String bestID = locateCheapestNode(equivNodes, clusterHeadID);
equivNodes.remove(bestID);
@@ -355,6 +376,11 @@
public void addClusterNode(String primary, ArrayList<String>
equivilentNodes)
{
this.clusters.addAll(primary, equivilentNodes);
+ if(equivilentNodes.isEmpty())
+ {
+ this.clusters.add(primary, "");
+ this.clusters.remove(primary, "");
+ }
}

/**
@@ -422,6 +448,7 @@
{
String key = keyIterator.next();
clusters.remove(key, removal);
+ activeClusters.remove(key, removal);
}
}

@@ -495,19 +522,21 @@
{
ArrayList<String> candiates = new ArrayList<String>();
ArrayList<String> activeSet = this.getActiveEquivilentNodes(key);
- Iterator<String> clusterSetIterator =
this.getEquivilentNodes(key).iterator();
- while(clusterSetIterator.hasNext())
+ this.cleanCollection(activeSet);
+ ArrayList<String> clusterSet = this.getEquivilentNodes(key);
+ this.cleanCollection(clusterSet);
+ candiates.addAll(clusterSet);
+ Iterator<String> activeSetIterator = activeSet.iterator();
+ while(activeSetIterator.hasNext())
{
- String candidate = clusterSetIterator.next();
- candiates.add(candidate);
+ String activeNode = activeSetIterator.next();
+ candiates.remove(activeNode);
}
- candiates = this.cleanCollection(candiates);
if(candiates.size() == 0)
{
candiates = this.getActiveEquivilentNodes(key);
candiates.remove(key);
}
- candiates.remove(key);
Iterator<String> candiatesIterator = candiates.iterator();
String bestCandiate = null;
double bestCost = Double.MAX_VALUE;
@@ -745,7 +774,9 @@
while(activeNodesFromLogicalNode.hasNext() && !found)
{
String nodeID = activeNodesFromLogicalNode.next();
- if(this.activeClustersPriority.get(nodeID) == priority)
+ if(nodeID == null || activeClustersPriority.get(nodeID) == null)
+ System.out.println();
+ if(activeClustersPriority.get(nodeID) == priority)
{
returnableNodes.add(nodeID);
priority++;
@@ -929,14 +960,19 @@
{
if(failedSite == null)
return false;
- else
- return isThereACluster(failedSite, rQEP.getLogicalOverlayNetwork());
+ else
+ if(isThereACluster(failedSite, rQEP.getLogicalOverlayNetwork()))
+ return true;
+ else
+ return false;
}

private boolean isThereACluster(String failedSite,
LogicalOverlayNetworkHierarchy
logicalOverlayNetwork)
{
- if(logicalOverlayNetwork.getEquivilentNodes(failedSite).size() != 0)
+ ArrayList<String> col =
logicalOverlayNetwork.getEquivilentNodes(logicalOverlayNetwork.getClusterHeadFor(failedSite));
+ boolean isEmpty = col.isEmpty();
+
if(logicalOverlayNetwork.getEquivilentNodes(logicalOverlayNetwork.getClusterHeadFor(failedSite)).size() !=
0)
return true;
else
return false;
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/unreliablechannels/UnreliableChannelAgenda.java
Fri Mar 1 10:09:26 2013
+++
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/unreliablechannels/UnreliableChannelAgenda.java
Tue May 21 05:09:34 2013
@@ -163,7 +163,16 @@
if(!rtSite.getID().equals(root.getID()))
{
if(rtSite.getOutputsList().size() == 0)
+ {
+ Iterator<Node> routingTreeIterator =
this.iot.getRT().getSiteTree().getNodes().iterator();
+ while(routingTreeIterator.hasNext())
+ {
+ Node rtNode = routingTreeIterator.next();
+ if(rtNode.getInputsList().contains(rtSite))
+ rtSite.addOutput(rtNode);
+ }
System.out.println();
+ }
//deal with children links
Site outputSite = (Site) rtSite.getOutput(0);
Iterator<String> eqivNodesIdIterator =
Reply all
Reply to author
Forward
0 new messages