diff --git a/feedbackloop.learner_backup/src/main/java/de/tudresden/inf/st/eraser/feedbackloop.learner_backup/MachineLearningDecoder.java b/feedbackloop.learner_backup/src/main/java/de/tudresden/inf/st/eraser/feedbackloop.learner_backup/MachineLearningDecoder.java index 9d5decee1c21371af37de13909ff2278a8a28782..17cdf780f358c7e5543c80a4e53763d17f4abc20 100644 --- a/feedbackloop.learner_backup/src/main/java/de/tudresden/inf/st/eraser/feedbackloop.learner_backup/MachineLearningDecoder.java +++ b/feedbackloop.learner_backup/src/main/java/de/tudresden/inf/st/eraser/feedbackloop.learner_backup/MachineLearningDecoder.java @@ -1,4 +1,21 @@ package de.tudresden.inf.st.eraser.feedbackloop.learner_backup; -public class MachineLearningDecoder { +import de.tudresden.inf.st.eraser.jastadd.model.MachineLearningResult; + +import java.time.Instant; + +public interface MachineLearningDecoder { + /** + * Execute the machine learning model and returns the classification result. + * @return the result of the classification + */ + MachineLearningResult classify(); + + // less important + + /** + * Returns the time when the model was last updated, i.e., when the last training was completed. + * @return the time when the model was last updated, or <code>null</code> if the model was not trained yet + */ + Instant lastModelUpdate(); } diff --git a/feedbackloop.learner_backup/src/main/java/de/tudresden/inf/st/eraser/feedbackloop.learner_backup/MachineLearningEncoder.java b/feedbackloop.learner_backup/src/main/java/de/tudresden/inf/st/eraser/feedbackloop.learner_backup/MachineLearningEncoder.java index abbfe7299d758e73d6a594f3164b52ef91edfe03..219a9631ad1d1310c4957eb1ce028a7b8dfd4444 100644 --- a/feedbackloop.learner_backup/src/main/java/de/tudresden/inf/st/eraser/feedbackloop.learner_backup/MachineLearningEncoder.java +++ b/feedbackloop.learner_backup/src/main/java/de/tudresden/inf/st/eraser/feedbackloop.learner_backup/MachineLearningEncoder.java @@ -1,4 +1,38 @@ package de.tudresden.inf.st.eraser.feedbackloop.learner_backup; +import de.tudresden.inf.st.eraser.jastadd.model.Item; +import de.tudresden.inf.st.eraser.jastadd.model.Root; + +import java.util.List; + public interface MachineLearningEncoder { + /** + * Update when new data is available. + * @param model The underlying model + * @param changedItems A list of items whose state has changed + */ + void newData(Root model, List<Item> changedItems); + + // to be discussed, in which form this is specified + + /** + * Get the items that this model is supposed to change. + * @return the list of targeted items + */ + List<Item> getTargets(Root model); + + // to be discussed, in which form this is specified + + /** + * Get the items which are relevant for the decision making of this model. + * @return the list of items relevant for decision making + */ + List<Item> getRelevantItems(Root model); + + // to be discussed, if this is necessary + + /** + * Explicit hint for this model to start/trigger training. The model might ignore this hint. + */ + void triggerTraining(); } diff --git a/feedbackloop.learner_backup/src/main/java/de/tudresden/inf/st/eraser/feedbackloop.learner_backup/MachineLearningEncoderImpl.java b/feedbackloop.learner_backup/src/main/java/de/tudresden/inf/st/eraser/feedbackloop.learner_backup/MachineLearningEncoderImpl.java index 8f4f940bd17eeaf112e47a5a226d8bb6fac1af05..86604d95b4551d480bb76caa06e8c74708573bea 100644 --- a/feedbackloop.learner_backup/src/main/java/de/tudresden/inf/st/eraser/feedbackloop.learner_backup/MachineLearningEncoderImpl.java +++ b/feedbackloop.learner_backup/src/main/java/de/tudresden/inf/st/eraser/feedbackloop.learner_backup/MachineLearningEncoderImpl.java @@ -4,20 +4,32 @@ import de.tudresden.inf.st.eraser.jastadd.model.*; import java.time.Instant; import java.util.List; -public class MachineLearningEncoderImpl implements MachineLearningEncoder, MachineLearningDecoder { +public class MachineLearningEncoderImpl implements MachineLearningDecoder,MachineLearningEncoder { + + private String[] new_data = new String[13]; + private List<Item> target_item_list; + private List<Item> relevant_item_list; + private String[] result; - String[] new_data = new String[13]; - List<Item> target_item_list; - List<Item> relevant_item_list; @Override public void newData(Root model, List<Item> changedItems) { - String topic = changedItems.get(0).getTopic().toString(); + /**String topic = changedItems.get(0).getTopic().toString(); if(topic.equals("oh2/samsung/items1")){ new_data[0]=changedItems.get(0).influxMeasurementName(); } model.getOpenHAB2Model().items(); Item iris_item=model.getOpenHAB2Model().resolveItem("iris_item").get(); - iris_item.getStateAsString(); + iris_item.getStateAsString();*/ + int i=0; + for (Item item: changedItems){ + if(i<13) { + new_data[i] = item.getStateAsString(); + i++; + } + } + Learner learner= new Learner(); + result = learner.predictor(new_data); + } @Override @@ -61,8 +73,6 @@ public class MachineLearningEncoderImpl implements MachineLearningEncoder, Machi relevant_item_list.add(w_rotation_y); relevant_item_list.add(w_rotation_z); relevant_item_list.add(w_brightness); - - return null; } @@ -79,6 +89,8 @@ public class MachineLearningEncoderImpl implements MachineLearningEncoder, Machi @Override public MachineLearningResult classify() { + String activity=result[0]; + String[] preference= {result[1],result[2]}; return null; } }