diff --git a/benchmark/src/main/java/de/tudresden/inf/st/eraser/benchmark/Benchmark.java b/benchmark/src/main/java/de/tudresden/inf/st/eraser/benchmark/Benchmark.java index 2c1d64d5be93238589167e0c474218d3b22a952f..490c519c3dbb039aaee6e564e569088082b74b37 100644 --- a/benchmark/src/main/java/de/tudresden/inf/st/eraser/benchmark/Benchmark.java +++ b/benchmark/src/main/java/de/tudresden/inf/st/eraser/benchmark/Benchmark.java @@ -38,20 +38,14 @@ public class Benchmark { private static final Logger logger = LogManager.getLogger(Benchmark.class); private static final String ERASER_ITEM_URI = "http://localhost:4567/model/items/"; //TODO ITEM_NAME HAS TO BE DISCUSSED - private static final String[] ACTIVITY_ITEM_NAME = { - "m_accel_x", "m_accel_y", "m_accel_z", "m_rotation_x", - "m_rotation_y", "m_rotation_z", "w_accel_x", "w_accel_y", - "w_accel_z", "w_rotation_x", "w_rotation_y", "w_rotation_z"}; - private static final String[] PREFERENCE_ITEM_NAME = { - "w_brightness" - }; + private static String[] ACTIVITY_ITEM_NAME; + private static String[] PREFERENCE_ITEM_NAME; private static boolean flag2 = true; //csv_type is activity or preference Benchmark(String a_csv_file_path, String p_csv_file_path) { this.a_csv_file_path = a_csv_file_path; this.p_csv_file_path = p_csv_file_path; } - void start(){ String PREFERENCE_URL = "http://localhost:4567/model/items/iris1_item/state"; String ACTIVITY_URL = "http://localhost:4567/activity/current"; @@ -72,34 +66,47 @@ public class Benchmark { p_file_reader=new FileReader(p_file); a_csv_reader = new CSVReader(a_file_reader); p_csv_reader = new CSVReader(p_file_reader); + int i = 0; while ((((a_next_record = a_csv_reader.readNext())!= null) && flag2)){ - try{Thread.sleep(TIME_PERIOD);}catch (InterruptedException e){e.printStackTrace();} - String[] values = Arrays.copyOf(a_next_record,12); - setNewValue(values, ACTIVITY_ITEM_NAME,"activity"); - HttpResponse response= Request.Get(ACTIVITY_URL).execute().returnResponse(); - String status = response.getStatusLine().toString(); - if(status.contains("200")){ - flag1 = true; - logger.info("activity should be (read direct from CSV): " + a_next_record[12]); - logger.info(EntityUtils.toString(response.getEntity())); - logger.info("get activity from web server: response 200 ok"); - }else{ - flag1 = false; - flag2 = false; - logger.info("can not get the activity from the web server"); + if( i==0 ){ + getCSVHeader(Arrays.copyOf(a_next_record,12),"a"); + i++; } - while((((p_next_record = p_csv_reader.readNext()) != null) && flag1)) { + else{ try{Thread.sleep(TIME_PERIOD);}catch (InterruptedException e){e.printStackTrace();} - String[] values1 = Arrays.copyOf(p_next_record,2); - setNewValue(values1, PREFERENCE_ITEM_NAME,"preference"); - HttpResponse response1= Request.Get(PREFERENCE_URL).execute().returnResponse(); - String status1=response1.getStatusLine().toString(); - if(status1.contains("200")){ - flag2 = true; - logger.info("get the iris1_item preference from web server: response 200 ok, value is: "+EntityUtils.toString(response1.getEntity())); - }else {flag2 = false; - logger.info("can not get the iris1_item from the web server");} - break; + String[] values = Arrays.copyOf(a_next_record,12); + setNewValue(values, ACTIVITY_ITEM_NAME,"activity"); + HttpResponse response= Request.Get(ACTIVITY_URL).execute().returnResponse(); + String status = response.getStatusLine().toString(); + if(status.contains("200")){ + flag1 = true; + logger.info("activity should be (read direct from CSV): " + a_next_record[12]); + logger.info(EntityUtils.toString(response.getEntity())); + logger.info("get activity from web server: response 200 ok"); + }else{ + flag1 = false; + flag2 = false; + logger.info("can not get the activity from the web server"); + } + int j = 0; + while((((p_next_record = p_csv_reader.readNext()) != null) && flag1)) { + if( j==0 ){ + getCSVHeader(Arrays.copyOf(p_next_record,2),"p"); + j++; + }else{ + try{Thread.sleep(TIME_PERIOD);}catch (InterruptedException e){e.printStackTrace();} + String[] values1 = Arrays.copyOf(p_next_record,2); + setNewValue(values1, PREFERENCE_ITEM_NAME,"preference"); + HttpResponse response1= Request.Get(PREFERENCE_URL).execute().returnResponse(); + String status1=response1.getStatusLine().toString(); + if(status1.contains("200")){ + flag2 = true; + logger.info("get the iris1_item preference from web server: response 200 ok, value is: "+EntityUtils.toString(response1.getEntity())); + }else {flag2 = false; + logger.info("can not get the iris1_item from the web server");} + break; + } + } } } } @@ -107,6 +114,7 @@ public class Benchmark { e.printStackTrace(); } } + private void setNewValue(String[] values, String[] name, String file_typ){ if(file_typ.equals("activity")) { @@ -131,6 +139,8 @@ public class Benchmark { }else{ String uri= ERASER_ITEM_URI + "w_brightness" +"/state"; try { + logger.info("debug for w_brigntess"); + logger.info(values[1]); HttpResponse httpResponse = Request.Put(uri) .bodyString(values[1], ContentType.TEXT_PLAIN) .execute().returnResponse(); @@ -143,4 +153,12 @@ public class Benchmark { } } } + + private void getCSVHeader(String[] a_values,String csv_typ){ + if (csv_typ.equals("a")){ + ACTIVITY_ITEM_NAME = a_values; + }else{ + PREFERENCE_ITEM_NAME = a_values; + } + } } \ No newline at end of file diff --git a/eraser.starter/src/main/java/de/tudresden/inf/st/eraser/starter/EraserStarter.java b/eraser.starter/src/main/java/de/tudresden/inf/st/eraser/starter/EraserStarter.java index 4d171f8b53d707cca9c07d12721a6586fbfaaf66..4adfd683365a749a1dbf667fe3e1b413acf06018 100644 --- a/eraser.starter/src/main/java/de/tudresden/inf/st/eraser/starter/EraserStarter.java +++ b/eraser.starter/src/main/java/de/tudresden/inf/st/eraser/starter/EraserStarter.java @@ -127,7 +127,7 @@ public class EraserStarter { machineLearningModel.setEncoder(handler); machineLearningModel.setDecoder(handler); root.getMachineLearningRoot().setActivityRecognition(machineLearningModel); - + /** //Begin the Integration Item item1=model.resolveItem("m_accel_x").get(); Item item2=model.resolveItem("m_accel_y").get(); @@ -172,7 +172,7 @@ public class EraserStarter { List<ItemPreference> preference=handler.classify().getPreferences(); for(ItemPreference preference1 : preference){ preference1.apply(); - } + }*/ } // initialize preference learning @@ -189,7 +189,7 @@ public class EraserStarter { machineLearningModel.setDecoder(handler); root.getMachineLearningRoot().setPreferenceLearning(machineLearningModel); //working,medium,240,70 - Item activity_item = model.resolveItem("activity").get(); + /**Item activity_item = model.resolveItem("activity").get(); String activity=activity_item.getStateAsString(); activity_item.setStateFromString(activity); Item brightness_item = model.resolveItem("w_brightness").get(); @@ -201,7 +201,7 @@ public class EraserStarter { List<ItemPreference> preference=handler.classify().getPreferences(); for(ItemPreference preference1 : preference){ preference1.apply(); - } + }*/ } machineLearningRoot.getPreferenceLearning().connectItems(settings.preference.items); diff --git a/feedbackloop.learner_backup/src/main/java/de/tudresden/inf/st/eraser/feedbackloop.learner_backup/Learner.java b/feedbackloop.learner_backup/src/main/java/de/tudresden/inf/st/eraser/feedbackloop.learner_backup/Learner.java index 5d8021d8faf7519d9ec15305f0752cfbcd742a0c..d6c86be5a5e6bd64311066fb7225cfc66194558e 100644 --- a/feedbackloop.learner_backup/src/main/java/de/tudresden/inf/st/eraser/feedbackloop.learner_backup/Learner.java +++ b/feedbackloop.learner_backup/src/main/java/de/tudresden/inf/st/eraser/feedbackloop.learner_backup/Learner.java @@ -63,13 +63,14 @@ public class Learner { String csv_url_activity; csv_url_activity = activity_csv_url; this.csv_file = new File(csv_url_activity); - a_souce = new CSVDataSource(csv_file,false,CSVFormat.DECIMAL_POINT); + a_souce = new CSVDataSource(csv_file,true,CSVFormat.DECIMAL_POINT); a_data = new VersatileMLDataSet(a_souce); String[] activity_inputs={"m_accel_x","m_accel_y", "m_accel_z", "m_rotation_x","m_rotation_y", "m_rotation_z", "w_accel_x","w_accel_y", "w_accel_z", "w_rotation_x","w_rotation_y","w_rotation_z" }; + for(int i=0; i < activity_inputs.length; i++){ a_data.defineSourceColumn(activity_inputs[i], i, ColumnType.continuous); } @@ -87,7 +88,7 @@ public class Learner { String csv_url_preference; csv_url_preference = preference_csv_url; this.csv_file = new File(csv_url_preference); - p_source = new CSVDataSource(csv_file,false,CSVFormat.DECIMAL_POINT); + p_source = new CSVDataSource(csv_file,true,CSVFormat.DECIMAL_POINT); p_data = new VersatileMLDataSet(p_source); p_data.defineSourceColumn("activity", 0, ColumnType.nominal); p_data.defineSourceColumn("w_brightness", 1, ColumnType.nominal); @@ -108,7 +109,6 @@ public class Learner { activity_train(activity_url); preference_train(preference_url); Encog.getInstance().shutdown(); - } void activity_train(String activity_csv_url){ @@ -151,7 +151,7 @@ public class Learner { String activity_predictor(String[] new_data){ logger.info("Activity predicting ... ..."); String activity_result; - activityDataAnalyser("../datasets/backup/activity_data.csv"); + activityDataAnalyser("datasets/backup/activity_data.csv"); BasicNetwork activity_method = (BasicNetwork) loadObject(save_activity_model_file); MLData input = activity_helper.allocateInputVector(); activity_helper.normalizeInputVector(new_data,input.getData(),false); @@ -166,7 +166,7 @@ public class Learner { logger.info("Activity predicting ... ..."); String[] preference_result; preference_result = new String[2]; - preferenceDataAnalyser("../datasets/backup/preference_data.csv"); + preferenceDataAnalyser("datasets/backup/preference_data.csv"); BasicNetwork preference_method = (BasicNetwork)loadObject(save_preference_model_file); MLData input = preference_helper.allocateInputVector(); preference_helper.normalizeInputVector(new_data, input.getData(),false); diff --git a/feedbackloop.learner_backup/src/main/java/de/tudresden/inf/st/eraser/feedbackloop.learner_backup/MachineLearningImpl.java b/feedbackloop.learner_backup/src/main/java/de/tudresden/inf/st/eraser/feedbackloop.learner_backup/MachineLearningImpl.java index f2540105d7dd6dbf3f037fa19868ff1c8d2749a8..90c1837d60e5d53325f9a4a30ca59f1096e8e778 100644 --- a/feedbackloop.learner_backup/src/main/java/de/tudresden/inf/st/eraser/feedbackloop.learner_backup/MachineLearningImpl.java +++ b/feedbackloop.learner_backup/src/main/java/de/tudresden/inf/st/eraser/feedbackloop.learner_backup/MachineLearningImpl.java @@ -132,6 +132,8 @@ public class MachineLearningImpl implements MachineLearningDecoder, MachineLearn new_data[1]=item.getStateAsString(); } } + logger.info("debug for p"); + logger.info(Arrays.toString(preference_result)); this.preference_result=learner.preference_predictor(new_data); } } @@ -182,7 +184,6 @@ public class MachineLearningImpl implements MachineLearningDecoder, MachineLearn color = Math.round(Float.valueOf(preference_result[0])); brightness = Math.round(Float.valueOf(preference_result[1])); } - ItemPreference classifiedPreference = new ItemPreferenceColor(iris1, TupleHSB.of(color, 100, brightness)); return new MachineLearningResultImpl(classifiedPreference); default: diff --git a/feedbackloop.learner_backup/src/main/java/de/tudresden/inf/st/eraser/feedbackloop.learner_backup/Main.java b/feedbackloop.learner_backup/src/main/java/de/tudresden/inf/st/eraser/feedbackloop.learner_backup/Main.java index 2580847d5ace8e832bde76159dad2e85974115a2..7aa90f90c0c917d566661b648bf494b6116c6b1a 100644 --- a/feedbackloop.learner_backup/src/main/java/de/tudresden/inf/st/eraser/feedbackloop.learner_backup/Main.java +++ b/feedbackloop.learner_backup/src/main/java/de/tudresden/inf/st/eraser/feedbackloop.learner_backup/Main.java @@ -15,9 +15,9 @@ public class Main { //reader.updater(); Learner learner=new Learner(); //learner.preference_train("../datasets/backup/preference_data.csv"); - //learner.train("datasets/backup/activity_data.csv","datasets/backup/preference_data.csv"); + learner.train("datasets/backup/activity_data.csv","datasets/backup/preference_data.csv"); //0.5793968,1.2126632,-4.6244006,-0.030779,0.801127,0.590978,-3.1411927,-0.93373865,-0.31124622,-0.35992432,0.33746338,-0.79608154,dancing - /**String[] new_data = new String[12]; + String[] new_data = new String[12]; new_data[0]="0.5793968"; new_data[1]="1.2126632"; new_data[2]="-4.6244006"; @@ -34,9 +34,12 @@ public class Main { String result =learner.activity_predictor(new_data); System.out.println(result); - List k=new ArrayList(); + String[] new_data_1={result,"medium"}; + learner.preference_predictor(new_data_1); - k.add(new_data);*/ + //List k=new ArrayList(); + + //k.add(new_data);*/ //learner.preference_train("datasets/backup/preference_data.csv"); //learner.train("datasets/backup/activity_data.csv","datasets/backup/preference_data.csv"); @@ -45,7 +48,7 @@ public class Main { //activity_validation_learner(); //0.10654198,8.6574335,4.414908,0.040269,0.516884,0.853285,1.2066777,-1.1444284,9.648633,1.2207031E-4,-0.055358887,0.5834961 working - String[] new_data = new String[12]; + /**String[] new_data = new String[12]; new_data[0]="0.010773907"; new_data[1]="8.610746"; new_data[2]="4.4963107";