Skip to content
Snippets Groups Projects
Commit b2efb73e authored by René Schöne's avatar René Schöne
Browse files

Make TestMLHandlerFactory configurable.

parent 084d02df
No related branches found
No related tags found
1 merge request!19dev to master
...@@ -4,8 +4,10 @@ import de.tudresden.inf.st.eraser.jastadd.model.*; ...@@ -4,8 +4,10 @@ import de.tudresden.inf.st.eraser.jastadd.model.*;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL; import java.net.URL;
import java.util.Optional; import java.util.Properties;
/** /**
* Testing preference setting * Testing preference setting
...@@ -15,12 +17,23 @@ import java.util.Optional; ...@@ -15,12 +17,23 @@ import java.util.Optional;
public class TestMachineLearningHandlerFactory extends MachineLearningHandlerFactory { public class TestMachineLearningHandlerFactory extends MachineLearningHandlerFactory {
private static final Logger logger = LogManager.getLogger(TestMachineLearningHandlerFactory.class); private static final Logger logger = LogManager.getLogger(TestMachineLearningHandlerFactory.class);
private double offset = 0;
private double multiplier = 1;
@Override @Override
public void initializeFor(MachineLearningHandlerFactoryTarget target, URL configUrl) { public void initializeFor(MachineLearningHandlerFactoryTarget target, URL configUrl) {
if (target != MachineLearningHandlerFactoryTarget.PREFERENCE_LEARNING) { if (target != MachineLearningHandlerFactoryTarget.PREFERENCE_LEARNING) {
logger.error("Test Factory only made for preference learning, not {}", target); logger.error("Test Factory only made for preference learning, not {}", target);
} }
// treat given file as properties file
try (InputStream input = configUrl.openStream()) {
Properties prop = new Properties();
prop.load(input);
offset = Double.parseDouble(prop.getProperty("offset", "0"));
multiplier = Double.parseDouble(prop.getProperty("multiplier", "1"));
} catch (IOException | IllegalArgumentException e) {
logger.catching(e);
}
} }
@Override @Override
...@@ -42,8 +55,8 @@ public class TestMachineLearningHandlerFactory extends MachineLearningHandlerFac ...@@ -42,8 +55,8 @@ public class TestMachineLearningHandlerFactory extends MachineLearningHandlerFac
// dirty hack to override value based on activity during runtime // dirty hack to override value based on activity during runtime
@Override @Override
public double getNewValue() { public double getNewValue() {
Optional<Activity> activityOpt = knowledgeBase.currentActivity(); Activity activity = knowledgeBase.currentActivity().orElse(knowledgeBase.getMachineLearningRoot().getActivity(0));
return activityOpt.orElse(knowledgeBase.getMachineLearningRoot().getActivity(0)).getIdentifier(); return offset + activity.getIdentifier() * multiplier;
} }
}; };
update.setItem(item); update.setItem(item);
......
offset=4
multiplier=10
...@@ -25,7 +25,7 @@ load: ...@@ -25,7 +25,7 @@ load:
# Model for activity recognition. If dummy is true, then the file parameter is ignored. # Model for activity recognition. If dummy is true, then the file parameter is ignored.
activity: activity:
factory: de.tudresden.inf.st.eraser.feedbackloop.learner_backup.MachineLearningHandlerFactoryImpl factory: de.tudresden.inf.st.eraser.feedbackloop.learner_backup.MachineLearningHandlerFactoryImpl
# File to read in. Expected format = csv /Users/boqi/eraser/datasets # File to read in. Expected format depends on factory
file: ../datasets/backup/activity_data.csv file: ../datasets/backup/activity_data.csv
external: true external: true
# Use dummy model in which the current activity is directly editable. Default: false. # Use dummy model in which the current activity is directly editable. Default: false.
...@@ -38,8 +38,9 @@ activity: ...@@ -38,8 +38,9 @@ activity:
# Model for preference learning. If dummy is true, then the file parameter is ignored. # Model for preference learning. If dummy is true, then the file parameter is ignored.
preference: preference:
factory: de.tudresden.inf.st.eraser.starter.TestMachineLearningHandlerFactory factory: de.tudresden.inf.st.eraser.starter.TestMachineLearningHandlerFactory
# File to read in. Expected format = csv # File to read in. Expected format depends on factory
file: ../datasets/backup/preference_data.csv file: src/main/resources/testHandler.properties
# file: ../datasets/backup/preference_data.csv
external: true external: true
# Use dummy model in which the current activity is directly editable. Default: false. # Use dummy model in which the current activity is directly editable. Default: false.
dummy: false dummy: false
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment