Skip to content
Snippets Groups Projects
Commit 9274f92d authored by BBQ's avatar BBQ
Browse files

process for send data wait 1s and check the status from web server, compare...

process for send data wait 1s and check the status from web server, compare with preference csv output not done
parent c159c0a6
No related branches found
No related tags found
1 merge request!19dev to master
......@@ -7,8 +7,10 @@ import org.apache.http.entity.ContentType;
import org.apache.http.util.EntityUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.Arrays;
public class Benchmark {
......@@ -38,15 +40,15 @@ 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 String[] ACTIVITY_ITEM_NAME;
private static String[] PREFERENCE_ITEM_NAME;
private static boolean flag2 = true;
private String[] ACTIVITY_ITEM_NAME;
private String[] PREFERENCE_ITEM_NAME;
//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(){
int TIME_PERIOD = 1000;
String PREFERENCE_URL = "http://localhost:4567/model/items/iris1_item/state";
String ACTIVITY_URL = "http://localhost:4567/activity/current";
File a_file;
......@@ -57,7 +59,6 @@ public class Benchmark {
CSVReader p_csv_reader;
String[] a_next_record;
String[] p_next_record;
boolean flag1;
a_file=new File(a_csv_file_path);
p_file= new File(p_csv_file_path);
try {
......@@ -66,45 +67,35 @@ public class Benchmark {
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)){
while ((a_next_record = a_csv_reader.readNext())!= null){
if( i==0 ){
getCSVHeader(Arrays.copyOf(a_next_record,12),"a");
i++;
}
else{
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)) {
while(((p_next_record = p_csv_reader.readNext()) != null)) {
if( j == 0 ){
getCSVHeader(Arrays.copyOf(p_next_record,2),"p");
j++;
}else{
String[] values1 = Arrays.copyOf(p_next_record,2);
setNewValue(values1, PREFERENCE_ITEM_NAME,"preference");
// wait for 1s
try{Thread.sleep(TIME_PERIOD);}catch (InterruptedException e){e.printStackTrace();}
HttpResponse response= Request.Get(ACTIVITY_URL).execute().returnResponse();
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");}
//check response
checkResult(response, a_next_record);
checkResult(response1, p_next_record);
break;
}
}
}
}
}
catch (Exception e){
......@@ -113,7 +104,6 @@ public class Benchmark {
}
private void setNewValue(String[] values, String[] name, String file_typ){
int TIME_PERIOD = 1000;
if(file_typ.equals("activity"))
{
int i = 0;
......@@ -137,8 +127,6 @@ 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();
......@@ -150,7 +138,7 @@ public class Benchmark {
e.printStackTrace();
}
}
try{Thread.sleep(TIME_PERIOD);}catch (InterruptedException e){e.printStackTrace();}
}
private void getCSVHeader(String[] a_values,String csv_typ){
......@@ -160,4 +148,40 @@ public class Benchmark {
PREFERENCE_ITEM_NAME = a_values;
}
}
private void checkResult(HttpResponse response,String[] record){
int status = response.getStatusLine().getStatusCode();
if(status == 200 && record.length == 13){
logger.info("activity should be (read direct from CSV): " + record[12]);
try {
logger.info(EntityUtils.toString(response.getEntity()));
}catch (IOException e){
e.printStackTrace();
}
logger.info("get activity from web server: response 200 ok");
}else if(status ==200 && record.length == 4){
logger.info("preference should be (read direct from CSV): " + getPreference(record));
try {
logger.info("get the iris1_item preference from web server: response 200 ok, value is: " +
EntityUtils.toString(response.getEntity()));
}catch (IOException e){
e.printStackTrace();
}
}else if(status !=
200 &&record.length == 13){
logger.info("can not get the activity from the web server");
}
else if(status != 200 && record.length == 4){
logger.info("can not get the iris1_item from the web server");
}else {
logger.info("unknown check");
}
}
private String getPreference(String[] record){
return "";
}
}
\ No newline at end of file
......@@ -168,11 +168,11 @@ public class EraserStarter {
newData.add(item10);
newData.add(item11);
newData.add(item12);
handler.newData(newData);
handler.newData(newData);*/
List<ItemPreference> preference=handler.classify().getPreferences();
for(ItemPreference preference1 : preference){
preference1.apply();
}*/
}
}
// initialize preference learning
......@@ -197,11 +197,11 @@ public class EraserStarter {
ArrayList<Item> newData1 = new ArrayList<>();
newData1.add(activity_item);
newData1.add(brightness_item);
handler.newData(newData1);
handler.newData(newData1);*/
List<ItemPreference> preference=handler.classify().getPreferences();
for(ItemPreference preference1 : preference){
preference1.apply();
}*/
}
}
machineLearningRoot.getPreferenceLearning().connectItems(settings.preference.items);
......
......@@ -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);
......@@ -187,5 +187,3 @@ public class Learner {
}
}
......@@ -132,9 +132,9 @@ public class MachineLearningImpl implements MachineLearningDecoder, MachineLearn
new_data[1]=item.getStateAsString();
}
}
this.preference_result=learner.preference_predictor(new_data);
logger.info("debug for p");
logger.info(Arrays.toString(preference_result));
this.preference_result=learner.preference_predictor(new_data);
}
}
......@@ -169,11 +169,12 @@ public class MachineLearningImpl implements MachineLearningDecoder, MachineLearn
for (int i=0; i< activites.length;i++){
if(activites[i].equals(activityStringValue)){
activityItem.setStateFromString(String.valueOf(i));
}
ItemPreference classifiedActivity = new ItemPreferenceDouble(activityItem,i);
return new MachineLearningResultImpl(classifiedActivity);
}
logger.debug("Classify would return activity: {}", activityStringValue);
ItemPreference classifiedActivity = new ItemPreferenceDouble(activityItem, 0);
return new MachineLearningResultImpl(classifiedActivity);
}
case GOAL_PREFERENCE_BRIGHTNESS_IRIS:
// String[] preference = {result[1], result[2]};
// FIXME what is the meaning of result[1] and result[2]
......
......@@ -13,11 +13,12 @@ public class Main {
* */
//ReaderCSV reader = new ReaderCSV("datasets/backup/activity_data.csv","preference");
//reader.updater();
Learner learner=new Learner();
//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");
activity_validation_learner();
//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";
......@@ -123,12 +124,18 @@ public class Main {
//System.out.println("perference is: "+ result[1]);**/
}
public static void activity_validation_learner(){
ReadCSV csv = new ReadCSV("datasets/backup/activity_data.csv", false, CSVFormat.DECIMAL_POINT);
String[] line = new String[12];
ReadCSV csv = new ReadCSV("datasets/backup/activity_data.csv", true, CSVFormat.DECIMAL_POINT);
String[] line = new String[11];
Learner learner = new Learner();
learner.train("datasets/backup/activity_data.csv","datasets/backup/preference_data.csv");
int wrong=0;
int right=0;
int i =0;
while(csv.next()) {
if(i==0){
i++;
}else {
StringBuilder result = new StringBuilder();
line[0] = csv.get(0);
line[1] = csv.get(1);
......@@ -141,8 +148,8 @@ public class Main {
line[8] = csv.get(8);
line[9] = csv.get(9);
line[10] = csv.get(10);
line[11] = csv.get(11);
String correct = csv.get(12);
//line[11] = csv.get(11);
String correct = csv.get(11);
String irisChosen = learner.predictor(line)[0];
result.append(Arrays.toString(line));
result.append(" -> predicted: ");
......@@ -160,7 +167,9 @@ public class Main {
System.out.println(result.toString());
}
System.out.println("wrong number"+wrong);
System.out.println("right number"+right);
System.out.println("right number"+right);}
//double validation = (double(right))/(double(wrong+right));
//System.out.println("%.2f"+validation);
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment