[snee] r1370 committed - Fixed successor code so that it can be ran on condor to determine succ...

1 view
Skip to first unread message

sn...@googlecode.com

unread,
Mar 13, 2013, 6:49:09 AM3/13/13
to snee-...@googlegroups.com
Revision: 1370
Author: alan.bar...@gmail.com
Date: Wed Mar 13 03:48:31 2013
Log: Fixed successor code so that it can be ran on condor to determine
successor lifetime given unpredictable node failure.

fixed cpm model so that it uses correct natural order and therfore same
nodes have the same noise model, independant on the level of k.

fixed stopping criteria on tabu and genetic search so that they no longer
exit prematurely (was set for debugging puroses)
http://code.google.com/p/snee/source/detail?r=1370

Modified:

/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/Seed.java

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

/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/resources/condorchecks/query-parameters.xml

/branches/alan_2012_07_19_unreliableChannels/clients/successorClient/src/main/java/uk/ac/manchester/snee/client/SuccessorClient.java

/branches/alan_2012_07_19_unreliableChannels/clients/successorClient/src/main/java/uk/ac/manchester/snee/client/utils/CondorAddtionsForTestLocally.java

/branches/alan_2012_07_19_unreliableChannels/clients/successorClient/src/main/java/uk/ac/manchester/snee/client/utils/CondorScriptGenerator.java

/branches/alan_2012_07_19_unreliableChannels/clients/successorClient/src/main/resources/sniperRealWSN/physicalSchema_query1.xml

/branches/alan_2012_07_19_unreliableChannels/clients/successorClient/src/main/resources/sniperRealWSN/snee1.properties

/branches/alan_2012_07_19_unreliableChannels/snee-core/src/main/java/uk/ac/manchester/cs/snee/compiler/queryplan/RT.java

/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/AutonomicManagerImpl.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/planner/Planner.java

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

/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/costbenifitmodel/RobustChoiceAssessor.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/ChannelModelSite.java

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

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

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

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

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

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

=======================================
---
/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/java/uk/ac/manchester/snee/client/RelibaleChannelClient.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/RelibaleChannelClient.java
Wed Mar 13 03:48:31 2013
@@ -216,8 +216,8 @@
// {
//get query & schemas
// String currentQuery = queryIterator.next();
- 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 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;";

=======================================
---
/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/java/uk/ac/manchester/snee/client/utils/Seed.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/Seed.java
Wed Mar 13 03:48:31 2013
@@ -7,6 +7,8 @@
private ArrayList<String> tuples = new ArrayList<String>();
private ArrayList<Double> oAverage = new ArrayList<Double>();
private ArrayList<Double> aAverage = new ArrayList<Double>();
+ private ArrayList<Double> oAAverage = new ArrayList<Double>();
+ private ArrayList<Double> aAAverage = new ArrayList<Double>();
private Integer max = null;

public Seed()
@@ -53,6 +55,26 @@
{
return max;
}
+
+ public void setoAAverage(ArrayList<Double> oAAverage)
+ {
+ this.oAAverage = oAAverage;
+ }
+
+ public ArrayList<Double> getoAAverage()
+ {
+ return oAAverage;
+ }
+
+ public void setaAAverage(ArrayList<Double> aAAverage)
+ {
+ this.aAAverage = aAAverage;
+ }
+
+ public ArrayList<Double> getaAAverage()
+ {
+ return aAAverage;
+ }


}
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/java/uk/ac/manchester/snee/client/utils/collateResults.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/collateResults.java
Wed Mar 13 03:48:31 2013
@@ -0,0 +1,542 @@
+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/BigSubmit");
+ 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/BigSubmit/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();
+ Double a = aiterator.next();
+ Double oA = oCiterator.next();
+ Double aA = aCiterator.next();
+ 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/resources/condorchecks/query-parameters.xml
Fri Mar 1 10:09:26 2013
+++
/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/resources/condorchecks/query-parameters.xml
Wed Mar 13 03:48:31 2013
@@ -27,8 +27,8 @@
<buffering-factor>
<constraint>
<range>
- <min-val>0</min-val>
- <max-val>2000</max-val>
+ <min-val>5</min-val>
+ <max-val>5</max-val>
</range>
</constraint>
<weighting>1</weighting>
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/clients/successorClient/src/main/java/uk/ac/manchester/snee/client/SuccessorClient.java
Fri Feb 15 10:30:48 2013
+++
/branches/alan_2012_07_19_unreliableChannels/clients/successorClient/src/main/java/uk/ac/manchester/snee/client/SuccessorClient.java
Wed Mar 13 03:48:31 2013
@@ -78,7 +78,7 @@

try
{
- checkRecoveryFile();
+ // checkRecoveryFile();
runIxentsScripts();
//holds all 30 queries produced by python script.
ArrayList<String> queries = new ArrayList<String>();
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/clients/successorClient/src/main/java/uk/ac/manchester/snee/client/utils/CondorAddtionsForTestLocally.java
Fri Mar 1 10:09:26 2013
+++
/branches/alan_2012_07_19_unreliableChannels/clients/successorClient/src/main/java/uk/ac/manchester/snee/client/utils/CondorAddtionsForTestLocally.java
Wed Mar 13 03:48:31 2013
@@ -14,7 +14,7 @@

public static void main(String[] args)
{
- File folder = new File("src/main/resources/condorDone");
+ File folder = new File("src/main/resources/testsNatural");
File[] files = folder.listFiles();
File outFolder = new File("src/main/resources/condorchecks");
outFolder.mkdir();
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/clients/successorClient/src/main/java/uk/ac/manchester/snee/client/utils/CondorScriptGenerator.java
Fri Mar 1 10:09:26 2013
+++
/branches/alan_2012_07_19_unreliableChannels/clients/successorClient/src/main/java/uk/ac/manchester/snee/client/utils/CondorScriptGenerator.java
Wed Mar 13 03:48:31 2013
@@ -14,13 +14,13 @@
{
private static String sep = System.getProperty("file.separator");
private static BufferedWriter out;
- private static File queriesFile = new
File("src/main/resources/testsSize30" + sep + "queries.txt");
+ private static File queriesFile = new
File("src/main/resources/condorDone" + sep + "queries.txt");
private static ArrayList<Integer> validIds = new ArrayList<Integer>();
private static boolean checkIDs = true;

public static void main(String[] args)
{
- validIds.addAll(Arrays.asList(60,62,64,67,68));
+
validIds.addAll(Arrays.asList(2,3,4,5,7,30,31,32,33,34,35,60,61,64,65,67));

File condorFile = new File("condor");
if(!condorFile.exists())
@@ -56,7 +56,6 @@
//make folder for the output to be stored in.
File outputFolder = new File(condorFile.toString() + sep
+ "query" + queryID);
outputFolder.mkdir();
- queryID++;
}
else
{
@@ -68,9 +67,9 @@
//make folder for the output to be stored in.
File outputFolder = new File(condorFile.toString() + sep
+ "query" + queryID);
outputFolder.mkdir();
- queryID++;
}
}
+ queryID++;
}
out.flush();
out.close();
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/clients/successorClient/src/main/resources/sniperRealWSN/physicalSchema_query1.xml
Thu Jun 7 10:09:11 2012
+++
/branches/alan_2012_07_19_unreliableChannels/clients/successorClient/src/main/resources/sniperRealWSN/physicalSchema_query1.xml
Wed Mar 13 03:48:31 2013
@@ -4,8 +4,8 @@

xsi:schemaLocation="http://snee.cs.man.ac.uk/namespace/physical-schema ../schema/physical-schema.xsd ">

<sensor_network name="wsn1">
- <topology>sniperRealWSN/topology.xml</topology>
- <site-resources>sniperRealWSN/res.xml</site-resources>
+ <topology>topology.xml</topology>
+ <site-resources>res.xml</site-resources>
<gateways>0</gateways>
<extents>
<extent name="DetectorA">
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/clients/successorClient/src/main/resources/sniperRealWSN/snee1.properties
Thu Jun 7 10:09:11 2012
+++
/branches/alan_2012_07_19_unreliableChannels/clients/successorClient/src/main/resources/sniperRealWSN/snee1.properties
Wed Mar 13 03:48:31 2013
@@ -54,22 +54,22 @@
compiler.allow_discontinuous_sensing = true

# Location of the logical schema
-logical_schema = sniperRealWSN/logicalSchema_query1.xml
+logical_schema = logicalSchema_query1.xml

# Location of the physical schema
-physical_schema = sniperRealWSN/physicalSchema_query1.xml
+physical_schema = physicalSchema_query1.xml

# Location of the cost parameters file
# TODO: This should be moved to physical schema, as there is potentially
# one set of cost parameters per source.
# FIXME: Should not be a required property
-cost_parameters_file = etc/common/cost-parameters.xml
+cost_parameters_file = cost-parameters.xml

# The name of the file with the types
-types_file = etc/common/Types.xml
+types_file = Types.xml

# The name of the file with the user unit definitions
-units_file = etc/common/units.xml
+units_file = units.xml

# Specifies whether individual images or a single image is sent to WSN
nodes.
sncb.generate_combined_image = false
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/snee-core/src/main/java/uk/ac/manchester/cs/snee/compiler/queryplan/RT.java
Wed Sep 12 07:43:20 2012
+++
/branches/alan_2012_07_19_unreliableChannels/snee-core/src/main/java/uk/ac/manchester/cs/snee/compiler/queryplan/RT.java
Wed Mar 13 03:48:31 2013
@@ -46,6 +46,7 @@
import uk.ac.manchester.cs.snee.metadata.source.sensornet.RadioLink;
import uk.ac.manchester.cs.snee.metadata.source.sensornet.Site;
import uk.ac.manchester.cs.snee.metadata.source.sensornet.Topology;
+import uk.ac.manchester.cs.snee.metadata.source.sensornet.TopologyUtils;

/**
* Class to represent a Routing Tree, data structure used to determine the
@@ -300,7 +301,13 @@
public RadioLink getRadioLink(Site sender, Site receiver)
{
if(network.getRadioLink(sender, receiver) == null)
- return network.getRadioLink(receiver, sender);
+ if(network.getRadioLink(receiver, sender) == null)
+ {
+ System.out.println();
+ return null;
+ }
+ else
+ return network.getRadioLink(receiver, sender);
else
return network.getRadioLink(sender, receiver);
}
@@ -378,4 +385,9 @@
}
return counter;
}
+
+ public void setNetwork(Topology wsnTopology)
+ {
+ this.network = wsnTopology;
+ }
}
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/AutonomicManagerImpl.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/AutonomicManagerImpl.java
Wed Mar 13 03:48:31 2013
@@ -205,7 +205,7 @@
* cleaning method
* @param firstOutputFolder
*/
- public void deleteFileContents(File firstOutputFolder)
+ public static void deleteFileContents(File firstOutputFolder)
{
if(firstOutputFolder.exists())
{
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/executer/Executer.java
Wed Mar 6 09:21:27 2013
+++
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/executer/Executer.java
Wed Mar 13 03:48:31 2013
@@ -150,7 +150,7 @@
tuplesReturnedFromEachTypeOfQEP.addWithDuplicates(type.RQEP,
tuplesReturned);
tuplesReturnedFromEachTypeOfQEP.addWithDuplicates(type.MAX,
maxTuplesReturnable);
tuplesReturnedFromEachTypeOfQEP.addWithDuplicates(type.AGGR,
aggreTuples);
- // ChannelModelUtils utils = new
ChannelModelUtils(channelModel.getChannelModel(),
rQEP.getLogicalOverlayNetwork());
+ // ChannelModelUtils utils = new
ChannelModelUtils(channelModel.getChannelModel(),
rQEP.getLogicalOverlayNetwork());
//utils.plotPacketRates(iteration, executerOutputFolder);
channelModel.clearModel();
rQEP.getLogicalOverlayNetwork().removeClonedData();
@@ -183,6 +183,7 @@
* for a Sensor network query plan
* @param rQEP
* @param channelModel
+ * @param skelOverlay
* @return
* @throws NumberFormatException
* @throws SNEEConfigurationException
@@ -191,7 +192,7 @@
* @throws OptimizationException
*/
public ArrayList<RunTimeSite> simulateRunOfQEP(SensorNetworkQueryPlan
QEP,
- ChannelModel channelModel)
+ ChannelModel channelModel,
LogicalOverlayNetworkHierarchy skelOverlay)
throws NumberFormatException, SNEEConfigurationException,
OptimizationException, SchemaMetadataException, TypeMappingException
{
@@ -214,6 +215,8 @@
aggreTuples =
channelModel.determineAggregationTupleContribtuion(QEP.getIOT());
tuplesReturnedFromEachTypeOfQEP.addWithDuplicates(type.QEP,
tuplesReturned);
tuplesReturnedFromEachTypeOfQEP.addWithDuplicates(type.AGGO,
aggreTuples);
+ // ChannelModelUtils utils = new
ChannelModelUtils(channelModel.getChannelModel(), skelOverlay);
+ // utils.plotPacketRates(iteration, executerOutputFolder);
channelModel.clearModel();
}

@@ -293,7 +296,7 @@
new ChannelModel(skelOverlay, qep.getAgendaIOT(),
manager.getWsnTopology().getMaxNodeID(),
manager.getWsnTopology(),
manager.getCostsParamters(), staticFolder);
- simulateRunOfQEP(qep, channelModel);
+ simulateRunOfQEP(qep, channelModel, skelOverlay);
writeResultsToFile(distanceFactorFolder);
cleardataStores();
}
@@ -320,7 +323,7 @@
new ChannelModel(skelOverlay, qep.getAgendaIOT(),
manager.getWsnTopology().getMaxNodeID(),
manager.getWsnTopology(),
manager.getCostsParamters(), staticFolder);
- simulateRunOfQEP(qep, channelModel);
+ simulateRunOfQEP(qep, channelModel, skelOverlay);
writeResultsToFile(distanceFactorFolder);
cleardataStores();

@@ -366,7 +369,7 @@
new ChannelModel(skelOverlay, qep.getAgendaIOT(),
manager.getWsnTopology().getMaxNodeID(),
manager.getWsnTopology(),
manager.getCostsParamters(), staticFolder, seed,
false);
- simulateRunOfQEP(qep, channelModel);
+ simulateRunOfQEP(qep, channelModel, skelOverlay);
writeResultsToFile(distanceFactorFolder);
cleardataStores();
}
@@ -433,7 +436,7 @@
new ChannelModel(skelOverlay, qep.getAgendaIOT(),
manager.getWsnTopology().getMaxNodeID(),
manager.getWsnTopology(),
manager.getCostsParamters(), robustFolder, seed,
false);
- ArrayList<RunTimeSite> qepCostAveragesQeps = simulateRunOfQEP(QEP,
channelModel);
+ ArrayList<RunTimeSite> qepCostAveragesQeps = simulateRunOfQEP(QEP,
channelModel, skelOverlay);
Iterator<RunTimeSite> newQEPCostIterator =
qepCostAveragesQeps.iterator();
while(newQEPCostIterator.hasNext())
{
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/Planner.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/Planner.java
Wed Mar 13 03:48:31 2013
@@ -474,13 +474,13 @@
// 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);
// assessor.assessOverlayChoice(storage, runningSites,
rQEP.getLogicalOverlayNetwork(),
// local, channelModel);
boolean runLifeSim =
SNEEProperties.getBoolSetting(SNEEPropertyNames.WSN_MANAGER_EXECUTOR_EDGE_LIFE);
- runLifeSim = false;
+ runLifeSim = true;
if(runLifeSim)
manager.calculateLifetimeDifferenceFromDeployments(rQEP, qep, seed,
distanceConverter);
// System.out.println("new robust lifetime = " +
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/costbenifitmodel/ChoiceAssessor.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/planner/costbenifitmodel/ChoiceAssessor.java
Wed Mar 13 03:48:31 2013
@@ -231,7 +231,7 @@
* @throws TypeMappingException
* @throws CodeGenerationException
*/
- public void assessChoice(Adaptation orginal, HashMap<String,
RunTimeSite> runningSites, boolean reset)
+ public boolean assessChoice(Adaptation orginal, HashMap<String,
RunTimeSite> runningSites, boolean reset)
throws
IOException, OptimizationException,
SchemaMetadataException, TypeMappingException,
@@ -271,9 +271,11 @@
System.out.println("reset");
resetRunningSitesAdaptCost();
}
+ return true;
}catch(Exception e)
{
e.printStackTrace();
+ return false;
}
}

=======================================
---
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/costbenifitmodel/RobustChoiceAssessor.java
Mon Nov 26 08:59:46 2012
+++
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/costbenifitmodel/RobustChoiceAssessor.java
Wed Mar 13 03:48:31 2013
@@ -202,7 +202,7 @@
* @throws TypeMappingException
* @throws CodeGenerationException
*/
- public void assessChoice(Adaptation orginal, HashMap<String,
RunTimeSite> runningSites, boolean reset)
+ public boolean assessChoice(Adaptation orginal, HashMap<String,
RunTimeSite> runningSites, boolean reset)
throws
IOException, OptimizationException,
SchemaMetadataException, TypeMappingException,
@@ -242,9 +242,11 @@
System.out.println("reset");
resetRunningSitesAdaptCost();
}
+ return true;
}catch(Exception e)
{
e.printStackTrace();
+ return false;
}
}

=======================================
---
/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 Feb 15 10:30:48 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
Wed Mar 13 03:48:31 2013
@@ -71,14 +71,28 @@
private void setUpCPMModel()
{
Iterator<String> nodeKeyIterator =
this.network.getAllNodes().keySet().iterator();
+ ArrayList<String> nodeIds = new ArrayList<String>();
+ for(int index =0; index <= this.network.getMaxNodeID(); index++)
+ {
+ nodeIds.add(null);
+ }
+ while(nodeKeyIterator.hasNext())
+ {
+ String id = nodeKeyIterator.next();
+ nodeIds.set(Integer.parseInt(id), id);
+ }
+ nodeKeyIterator = nodeIds.iterator();
//add nodes and experimental noise
while(nodeKeyIterator.hasNext())
{
String nodeKey = nodeKeyIterator.next();
- System.out.println("setting up for node " + nodeKey);
- NoiseModelSite noiseNode = noiseModelSites.get(nodeKey);
- createNoiseModel(noiseNode);
- resetNode(noiseNode);
+ if(nodeKey != null)
+ {
+ System.out.println("setting up for node " + nodeKey);
+ NoiseModelSite noiseNode = noiseModelSites.get(nodeKey);
+ createNoiseModel(noiseNode);
+ resetNode(noiseNode);
+ }
}
}

@@ -103,13 +117,27 @@
private void makeNoiseModelNodes()
{
Iterator<String> nodeKeyIterator =
this.network.getAllNodes().keySet().iterator();
+ ArrayList<String> nodeIds = new ArrayList<String>();
+ for(int index =0; index <= this.network.getMaxNodeID(); index++)
+ {
+ nodeIds.add(null);
+ }
+ while(nodeKeyIterator.hasNext())
+ {
+ String id = nodeKeyIterator.next();
+ nodeIds.set(Integer.parseInt(id), id);
+ }
+ nodeKeyIterator = nodeIds.iterator();
//add nodes and experimental noise
while(nodeKeyIterator.hasNext())
{
String nodeKey = nodeKeyIterator.next();
- Node node = this.network.getAllNodes().get(nodeKey);
- NoiseModelSite noiseNode = new NoiseModelSite();
- noiseModelSites.put(node.getID(), noiseNode);
+ if(nodeKey != null)
+ {
+ Node node = this.network.getAllNodes().get(nodeKey);
+ NoiseModelSite noiseNode = new NoiseModelSite();
+ noiseModelSites.put(node.getID(), noiseNode);
+ }
}
}

@@ -528,10 +556,7 @@
return false;
else
{
- if(compare != newIndex)
- return false;
- else
- return true;
+ return true;
}
}

=======================================
---
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/costbenifitmodel/model/channel/ChannelModelSite.java
Wed Mar 6 09:21:27 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
Wed Mar 13 03:48:31 2013
@@ -1406,36 +1406,40 @@
Site inputSite = (Site) inputSites.next();
HashMapList<Integer, Boolean> inputSitesTracker =
ChannelModelSite.aggregationTupleTracker.get(inputSite.getID());
- Iterator<Integer> keys = inputSitesTracker.keySet().iterator();
+ if(inputSitesTracker == null)
+ ChannelModelSite.tuplesParticipatingInAggregation = 0;
+ else
+ {
+ Iterator<Integer> keys = inputSitesTracker.keySet().iterator();
+ while(keys.hasNext())
+ {
+ Integer key = keys.next();
+ ArrayList<Boolean> bools = inputSitesTracker.get(key);
+ Iterator<Boolean> boolIterator = bools.iterator();
+ ArrayList<Boolean> receivedPackets =
reducedArrivedpackets.get(inputSite.getID());
+ Iterator<Boolean> receivedPacketIterator =
receivedPackets.iterator();
+ while(boolIterator.hasNext())
+ {
+ Boolean bool = boolIterator.next();
+ Boolean recieved = receivedPacketIterator.next();
+ if(recieved)
+ currentSitesTracker.addWithDuplicates(key, bool);
+ }
+ }
+ }
+ Iterator<Integer> keys = currentSitesTracker.keySet().iterator();
while(keys.hasNext())
{
Integer key = keys.next();
- ArrayList<Boolean> bools = inputSitesTracker.get(key);
- Iterator<Boolean> boolIterator = bools.iterator();
- ArrayList<Boolean> receivedPackets =
reducedArrivedpackets.get(inputSite.getID());
- Iterator<Boolean> receivedPacketIterator =
receivedPackets.iterator();
- while(boolIterator.hasNext())
+ Iterator<Boolean> values =
currentSitesTracker.get(key).iterator();
+ while(values.hasNext())
{
- Boolean bool = boolIterator.next();
- Boolean recieved = receivedPacketIterator.next();
- if(recieved)
- currentSitesTracker.addWithDuplicates(key, bool);
+ if(values.next())
+ count++;
}
}
}
- Iterator<Integer> keys = currentSitesTracker.keySet().iterator();
- while(keys.hasNext())
- {
- Integer key = keys.next();
- Iterator<Boolean> values = currentSitesTracker.get(key).iterator();
- while(values.hasNext())
- {
- if(values.next())
- count++;
- }
- }
}
-
ChannelModelSite.tuplesParticipatingInAggregation = count;
}

=======================================
---
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/successorrelation/SuccessorRelationManager.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/successorrelation/SuccessorRelationManager.java
Wed Mar 13 03:48:31 2013
@@ -98,7 +98,7 @@
TABUFolder.mkdir();
}
//search though space
- search = new TabuSearch(manager, runningSites, _metadata,
_metadataManager, TABUFolder);
+ search = new TabuSearch(manager.getWsnTopology(), runningSites,
_metadata, _metadataManager, TABUFolder);
SuccessorPath bestSuccessorRelation =
search.findSuccessorsPath(initialPoint);
new SuccessorRelationManagerUtils(this.manager,
successorFolder).writeSuccessorToFile(bestSuccessorRelation.getSuccessorList(), "finalSolution");

@@ -212,7 +212,6 @@
throws IOException
{
BufferedWriter out = new BufferedWriter(new FileWriter(new
File(successorFolder.toString() + sep + "results")));
- Long agendaLength =
bestSuccessorRelation.getSuccessorList().get(0).getQep().getAgendaIOT().getLength_bms(false);
for(int index = 0; index<= 8; index++)
{
Integer successorLifetime = successorLifetimes.get(index);
@@ -221,10 +220,10 @@
successorLifetime = 0;
if(globalLifetime == null)
globalLifetime = 0;
- globalLifetime = new Double(Math.floor(globalLifetime /
agendaLength.intValue())).intValue();
- successorLifetime = new Double(Math.floor(successorLifetime /
agendaLength.intValue())).intValue();
+ globalLifetime = new Double(Math.floor(globalLifetime)).intValue();
+ successorLifetime = new
Double(Math.floor(successorLifetime)).intValue();

- out.write(index + " " + globalLifetime + " " + successorLifetime
+ " \n");
+ out.write(index+1 + " " + globalLifetime + " " + successorLifetime
+ " \n");
}
out.flush();
out.close();
@@ -277,6 +276,7 @@
boolean failed = false;
while(currentNodeFailure <= noNodefails && !failed)
{
+ System.out.println("doing successor relation for node failure " +
currentNodeFailure + " out of "+ noNodefails);
timeOfNodeFailure = (timeOfNodeFailure * currentNodeFailure) -
currentAgendaCycle;

SuccessorLifetimeEnum result =
updateSitesEnergyLevelsForSuccessor(timeOfNodeFailure,
@@ -299,7 +299,8 @@
else
{
SensorNetworkQueryPlan seed = adaptations.get(0).getNewQep();
- TabuSearch search= new TabuSearch(manager, runningSites,
_metadata, _metadataManager, successorFolder);
+ TabuSearch search= new TabuSearch(manager.getWsnTopology(),
runningSites, _metadata,
+ _metadataManager,
successorFolder, failedNodes);
bestSuccessorRelation = search.findSuccessorsPath(seed);
}
currentNodeFailure++;
@@ -318,14 +319,15 @@
else
{
SensorNetworkQueryPlan seed = adaptations.get(0).getNewQep();
- TabuSearch search= new TabuSearch(manager, runningSites,
_metadata, _metadataManager, successorFolder);
+ seed.getRT().setNetwork(cloner.deepClone(deployment));
+ TabuSearch search= new TabuSearch(cloner.deepClone(deployment),
runningSites, _metadata, _metadataManager, successorFolder);
bestSuccessorRelation = search.findSuccessorsPath(seed);
}
currentAgendaCycle += this.failedNode.getLifetime();
}
}
successorLifetimes.add(noNodefails -1,
bestSuccessorRelation.overallSuccessorPathLifetime());
- return failed;
+ return !failed;
}

/**
@@ -421,10 +423,42 @@
currentAgendaCycle += this.failedNode.getLifetime();
}
}
- FailedNodeData failedNode =
firstNodeToFailFromEnergyDepletion(golbalQEP, globalRunningSites);
- globalLifetimes.set(noNodefails -1, new
Double(failedNode.getLifetime() + currentAgendaCycle).intValue());
+ Double lifetime = calculateLifetime(golbalQEP, globalRunningSites,
globalFailedNodes, currentRunDeployment);
+ globalLifetimes.set(noNodefails -1, new Double(new Double(lifetime +
currentAgendaCycle) /
+
(Agenda.bmsToMs(golbalQEP.getAgendaIOT().getLength_bms(false)) /
1000)).intValue());
return !failed;
}
+
+ private Double calculateLifetime(SensorNetworkQueryPlan golbalQEP,
+ HashMap<String, RunTimeSite>
globalRunningSites,
+ ArrayList<String> globalFailedNodes,
Topology currentRunDeployment)
+ throws OptimizationException, SchemaMetadataException,
TypeMappingException, SNEEConfigurationException,
+ NumberFormatException, MalformedURLException,
UnsupportedAttributeTypeException,
+ SourceMetadataException, AgendaException, SNEEException,
TopologyReaderException,
+ MetadataException, SNEEDataSourceException,
CostParametersException, SNCBException,
+ SNEECompilerException
+ {
+ boolean failed = false;
+ double lifetime = 0;
+ do
+ {
+ FailedNodeData failedNode =
firstNodeToFailFromEnergyDepletion(golbalQEP, globalRunningSites);
+ lifetime += failedNode.getLifetime();
+ this.updateSitesEnergyLevelsForGlobal(failedNode.getLifetime(),
globalFailedNodes, globalRunningSites, golbalQEP);
+ ArrayList<String> failedNodes = new ArrayList<String>();
+ failedNodes.add(failedNode.getNode().getID());
+ failedNodes.addAll(globalFailedNodes);
+ List<Adaptation> adaptations =
this.globalAdaptationStrategy.adapt(failedNodes, currentRunDeployment,
golbalQEP);
+ if(adaptations.size() == 0)
+ failed = true;
+ else
+ {
+ golbalQEP = adaptations.get(0).getNewQep();
+ this.updateRunningSites(golbalQEP, globalRunningSites);
+ }
+ }while(!failed);
+ return lifetime;
+ }

/**
* takes a QEP and randomly selects a non-acquire node for failure
@@ -597,7 +631,7 @@
double agendaLength =
Agenda.bmsToMs(QEP.getAgendaIOT().getLength_bms(false))/new Double(1000);
// ms to s
double siteLifetime = (currentEnergySupply / siteEnergyCons) *
agendaLength;
//uncomment out sections to not take the root site into account
- if (site!=QEP.getIOT().getRT().getRoot())
+ if (!site.getID().equals(QEP.getIOT().getRT().getRoot().getID()))
{
if(shortestLifetime > siteLifetime)
{
@@ -625,6 +659,7 @@
throws OptimizationException, SchemaMetadataException,
TypeMappingException,
SNEEConfigurationException
{
+ qep.getAgendaIOT().getIOT().getRT().setNetwork(getWsnTopology());
SiteEnergyModel siteModel = new SiteEnergyModel(qep.getAgendaIOT());
Iterator<Node> siteIter = this.deployment.siteIterator();
while (siteIter.hasNext())
@@ -652,7 +687,7 @@
while(successors.hasNext())
{
Successor currentSuccessor = successors.next();
- if(currentSuccessor.getPreviousAgendaCount() +
currentAgendaCycleCount < shortestLifetime)
+ if(currentSuccessor.getPreviousAgendaCount() < shortestLifetime)
scopedSuccessors.add(currentSuccessor);
}
return scopedSuccessors;
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/successorrelation/alternativegenerator/AlternativeGenerator.java
Fri Aug 17 09:48:15 2012
+++
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/successorrelation/alternativegenerator/AlternativeGenerator.java
Wed Mar 13 03:48:31 2013
@@ -3,6 +3,10 @@
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.logging.Logger;
+
+import com.rits.cloning.Cloner;

import uk.ac.manchester.cs.snee.SNEEException;
import uk.ac.manchester.cs.snee.common.SNEEConfigurationException;
@@ -19,6 +23,7 @@
import uk.ac.manchester.cs.snee.metadata.schema.SchemaMetadataException;
import uk.ac.manchester.cs.snee.metadata.schema.TypeMappingException;
import uk.ac.manchester.cs.snee.metadata.source.SourceMetadataAbstract;
+import uk.ac.manchester.cs.snee.metadata.source.sensornet.Topology;
import uk.ac.manchester.cs.snee.sncb.CodeGenerationException;

public class AlternativeGenerator extends AutonomicManagerComponent
@@ -29,6 +34,8 @@
private File outputFolder;
private SourceMetadataAbstract _metadata;
private MetadataManager _metaManager;
+ private ArrayList<String> failedNodes = new ArrayList<String>();
+ private Topology top;
/**
* constructor
* @param successor
@@ -37,14 +44,27 @@
* @param _metaManager
*/
public AlternativeGenerator(File outputFolder, SourceMetadataAbstract
_metadata,
- AutonomicManagerImpl manager,
MetadataManager _metaManager)
+ Topology top, MetadataManager _metaManager)
{
- this.manager = manager;
+ this.manager = null;
this.outputFolder = outputFolder;
this._metadata = _metadata;
this._metaManager = _metaManager;
+ this.top = top;
}

+ public AlternativeGenerator(File outputFolder, SourceMetadataAbstract
_metadata,
+ Topology top,
+ MetadataManager _metaManager,
ArrayList<String> failedNodes)
+ {
+ this.manager = null;
+ this.outputFolder = outputFolder;
+ this._metadata = _metadata;
+ this._metaManager = _metaManager;
+ this.failedNodes = failedNodes;
+ this.top = top;
+ }
+
/**
* generates a set of alternative qeps by using different decisions from
the snee stack.
* @param aspirationPlusBounds
@@ -80,8 +100,9 @@
private ArrayList<RT> HuristicRouter(PAF paf)
throws NumberFormatException, SNEEConfigurationException
{
+ Topology top = reduceTopology();
CandiateRouter metaRouter =
- new CandiateRouter(this.manager.getWsnTopology(), outputFolder,
+ new CandiateRouter(top, outputFolder,
this.successor.getQep().getDAF().getPAF(),
this._metadata);
return
metaRouter.generateAlternativeRoutingTrees(this.successor.getQep().getQueryName());
}
@@ -91,9 +112,25 @@
throws IOException, SchemaMetadataException, TypeMappingException,
OptimizationException,
CodeGenerationException
{
+ Topology top = reduceTopology();
+
GeneticRouter geneticRouter =
- new GeneticRouter(_metadata,this.manager.getWsnTopology(),
this.successor.getQep().getIOT().getPAF(),
+ new GeneticRouter(_metadata,top,
this.successor.getQep().getIOT().getPAF(),
outputFolder, tabuList, position);
return geneticRouter.generateAlternativeRoutes(candidateRoutes,
this.successor, _metaManager);
}
+
+ private Topology reduceTopology()
+ {
+ Cloner cloner = new Cloner();
+ cloner.dontClone(Logger.class);
+ Topology toplogy = cloner.deepClone(top);
+ Iterator<String> faieldNodeIterator = this.failedNodes.iterator();
+ while(faieldNodeIterator.hasNext())
+ {
+ String failedNodeId = faieldNodeIterator.next();
+ toplogy.removeNodeAndAssociatedEdges(failedNodeId);
+ }
+ return toplogy;
+ }
}
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/successorrelation/alternativegenerator/GeneticRouter.java
Fri Aug 17 09:48:15 2012
+++
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/successorrelation/alternativegenerator/GeneticRouter.java
Wed Mar 13 03:48:31 2013
@@ -37,7 +37,7 @@
private GeneticRouterFitness fitness;
private TABUList tabuList;
private int position;
- private int consecutiveTimesWithoutNewSolutions = 0;
+ private int consecutiveTimesWithoutNewSolutions = 5;
private static final int AllowedNumberOfIterationsWithoutNewSolution = 4;
private GenomeTimeBitMap mapping = null;

@@ -116,6 +116,7 @@
while(eliteIterator.hasNext())
{
Phenome elite = eliteIterator.next();
+ elite.getSuccessor().getQep().getRT().setNetwork(network);
eliteSolutions.add(elite.getSuccessor());
}
}
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/successorrelation/tabu/NeighbourhoodGenerator.java
Fri Aug 17 09:48:15 2012
+++
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/successorrelation/tabu/NeighbourhoodGenerator.java
Wed Mar 13 03:48:31 2013
@@ -16,6 +16,7 @@
import uk.ac.manchester.cs.snee.metadata.schema.SchemaMetadataException;
import uk.ac.manchester.cs.snee.metadata.schema.TypeMappingException;
import uk.ac.manchester.cs.snee.metadata.source.SourceMetadataAbstract;
+import uk.ac.manchester.cs.snee.metadata.source.sensornet.Topology;
import uk.ac.manchester.cs.snee.sncb.CodeGenerationException;

public class NeighbourhoodGenerator
@@ -25,16 +26,25 @@
private AlternativeGenerator neighbourhoodGenerator;


- public NeighbourhoodGenerator(TABUList tabuList, AutonomicManagerImpl
autonomicManager,
+ public NeighbourhoodGenerator(TABUList tabuList, Topology top,
MetadataManager _metaManager,
HashMap<String, RunTimeSite> runningSites,
SourceMetadataAbstract _metadata, File
outputFolder)
{
this.tabuList = tabuList;
neighbourhoodGenerator =
- new AlternativeGenerator(outputFolder, _metadata, autonomicManager,
_metaManager);
+ new AlternativeGenerator(outputFolder, _metadata, top, _metaManager);
}

+ public NeighbourhoodGenerator(TABUList tabuList, Topology top,
MetadataManager _metaManager,
+ HashMap<String, RunTimeSite> runningSites,
SourceMetadataAbstract _metadata,
+ File outputFolder, ArrayList<String>
failedNodes)
+ {
+ this.tabuList = tabuList;
+ neighbourhoodGenerator =
+ new AlternativeGenerator(outputFolder, _metadata, top, _metaManager,
failedNodes);
+ }
+
/**
* generates the neighbourhood to be assessed.
* Uses aspiration plus to reduce size of candidates in the
neighbourhood.
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/successorrelation/tabu/StoppingCriteria.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/successorrelation/tabu/StoppingCriteria.java
Wed Mar 13 03:48:31 2013
@@ -2,7 +2,7 @@

public class StoppingCriteria
{
- private static final int numberOfIterationsTillStop = 2;
+ private static final int numberOfIterationsTillStop = 200;
private static final int numberOfIterationsTillStopAtInitial = 5;
private static int currentMaxNeighbourhoodsize = 0;

=======================================
---
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/successorrelation/tabu/TabuSearch.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/planner/successorrelation/tabu/TabuSearch.java
Wed Mar 13 03:48:31 2013
@@ -29,6 +29,7 @@
import uk.ac.manchester.cs.snee.metadata.schema.TypeMappingException;
import uk.ac.manchester.cs.snee.metadata.source.SourceMetadataAbstract;
import uk.ac.manchester.cs.snee.metadata.source.sensornet.Site;
+import uk.ac.manchester.cs.snee.metadata.source.sensornet.Topology;
import uk.ac.manchester.cs.snee.sncb.CodeGenerationException;

public class TabuSearch extends AutonomicManagerComponent
@@ -51,23 +52,39 @@
* @param runningSites
* @throws IOException
*/
- public TabuSearch(AutonomicManagerImpl autonomicManager,
+ public TabuSearch(Topology top,
HashMap<String, RunTimeSite> runningSites,
SourceMetadataAbstract _metadata,
MetadataManager _metaManager, File outputFolder)
throws IOException
{
- this.manager = autonomicManager;
+ this.manager = null;
this.initalSitesEnergy = runningSites;
this._metadata = _metadata;
this._metaManager = _metaManager;
this.TABUOutputFolder = outputFolder;
this.Utils = new TABUSearchUtils(TABUOutputFolder.toString());
this.TABUList = new TABUList();
- this.generator = new NeighbourhoodGenerator(TABUList, autonomicManager,
_metaManager,
+ this.generator = new NeighbourhoodGenerator(TABUList, top, _metaManager,
runningSites,_metadata,
outputFolder);
}

+ public TabuSearch(Topology top,HashMap<String, RunTimeSite> runningSites,
+ SourceMetadataAbstract _metadata, MetadataManager
_metadataManager,
+ File outputFolder, ArrayList<String> failedNodes)
+ throws IOException
+ {
+ this.manager = null;
+ this.initalSitesEnergy = runningSites;
+ this._metadata = _metadata;
+ this._metaManager = _metadataManager;
+ this.TABUOutputFolder = outputFolder;
+ this.Utils = new TABUSearchUtils(TABUOutputFolder.toString());
+ this.TABUList = new TABUList();
+ this.generator = new NeighbourhoodGenerator(TABUList, top,
_metaManager,
+ runningSites,_metadata,
outputFolder, failedNodes);
+ }
+
/**
* searches the search space looking for the best path from initial to
final plan
* @param initialPoint
@@ -308,7 +325,7 @@
File assessorFolder = new File(this.TABUOutputFolder.toString() + sep
+ "Successor");
if(assessorFolder.exists())
{
- manager.deleteFileContents(assessorFolder);
+ AutonomicManagerImpl.deleteFileContents(assessorFolder);
assessorFolder.mkdir();
}
else
@@ -320,7 +337,9 @@
System.out.println("assessing successor " + successor.toString());
try
{
- assessAdaptation.assessChoice(adapt, successor.getTheRunTimeSites(),
false);
+ boolean returned = assessAdaptation.assessChoice(adapt,
successor.getTheRunTimeSites(), false);
+ if(!returned)
+ return 0;
successor.substractAdaptationCostOffRunTimeSites(adapt);
return successor.getLifetimeInAgendas();
}
Reply all
Reply to author
Forward
0 new messages