Skip to content
Snippets Groups Projects
Commit 63109109 authored by BrunoDatoMeneses's avatar BrunoDatoMeneses
Browse files

ADD: start learning without oracle

parent f8f3fd82
Branches
No related tags found
1 merge request!4Exp rein
......@@ -243,6 +243,15 @@ public class Head extends AmoebaAgent {
playWithoutOracle();
}
if(isSelfRequest()) {
if(getAmas().data.isSelfLearning) {
getAmas().data.selfLearning = true;
}else if(getAmas().data.isActiveLearning) {
getAmas().data.selfLearning = true;
}
}
updateStatisticalInformations(); /// regarder dans le détail, possible que ce pas trop utile
newContext = null;
......@@ -326,7 +335,7 @@ public class Head extends AmoebaAgent {
getEnvironment().trace(TRACE_LEVEL.DEBUG, new ArrayList<String>(Arrays.asList("\n\n")));
getAmas().data.executionTimes[0]=System.currentTimeMillis();
getEnvironment().trace(TRACE_LEVEL.DEBUG, new ArrayList<String>(Arrays.asList("------------------------------------------------------------------------------------"
getEnvironment().trace(TRACE_LEVEL.INFORM, new ArrayList<String>(Arrays.asList("------------------------------------------------------------------------------------"
+ "---------------------------------------- PLAY WITH ORACLE")));
if (activatedContexts.size() > 0) {
......@@ -407,9 +416,7 @@ public class Head extends AmoebaAgent {
getAmas().data.executionTimes[7]=System.currentTimeMillis();
if(isSelfRequest()) {
getAmas().data.activeLearning = true;
}
criticalities.addCriticality("spatialCriticality",
(getMinMaxVolume() - getVolumeOfAllContexts()) / getMinMaxVolume());
......@@ -531,6 +538,9 @@ public class Head extends AmoebaAgent {
* Play without oracle.
*/
private void playWithoutOracle() {
getEnvironment().trace(TRACE_LEVEL.INFORM, new ArrayList<String>(Arrays.asList("------------------------------------------------------------------------------------"
+ "---------------------------------------- PLAY WITHOUT ORACLE")));
logger().debug("HEAD without oracle", "Nombre de contextes activés: " + activatedContexts.size());
......@@ -572,7 +582,7 @@ public class Head extends AmoebaAgent {
logger().debug("HEAD without oracle", "no Best context selected ");
}
getAmas().data.criticity = Math.abs(getAmas().data.oracleValue - getAmas().data.prediction);
//getAmas().data.criticity = Math.abs(getAmas().data.oracleValue - getAmas().data.prediction);
if(getAmas().isReinforcement()) {
if (activatedNeighborsContexts.size() > 1) {
......@@ -1205,7 +1215,8 @@ public class Head extends AmoebaAgent {
if(!this.isDying() && !ctxt.isDying()) {
EndogenousRequest potentialRequest = ctxt.endogenousRequest(otherCtxt);
if(potentialRequest != null) {
getAmas().data.activeLearning = true;
addEndogenousRequest(potentialRequest);
}
}
......@@ -1214,10 +1225,7 @@ public class Head extends AmoebaAgent {
}
}
getEnvironment().trace(TRACE_LEVEL.STATE, new ArrayList<String>(Arrays.asList("ENDO REQUESTS", ""+endogenousRequests.size())));
for(EndogenousRequest endoRequest : endogenousRequests) {
getEnvironment().trace(TRACE_LEVEL.STATE, new ArrayList<String>(Arrays.asList("" + endoRequest)));
}
}
......@@ -1520,47 +1528,49 @@ public class Head extends AmoebaAgent {
*/
private void updateStatisticalInformations() {
if(Math.abs(getAmas().data.oracleValue)>getAmas().data.maxPrediction) {
getAmas().data.maxPrediction = Math.abs(getAmas().data.oracleValue);
}
if(getAmas().data.oracleValue != null) {
if(Math.abs(getAmas().data.oracleValue)>getAmas().data.maxPrediction) {
getAmas().data.maxPrediction = Math.abs(getAmas().data.oracleValue);
}
getAmas().data.normalizedCriticality = getAmas().data.criticity/getAmas().data.maxPrediction;
criticalities.addCriticality("predictionCriticality", getAmas().data.normalizedCriticality);
criticalities.updateMeans();
getAmas().data.normalizedCriticality = getAmas().data.criticity/getAmas().data.maxPrediction;
criticalities.addCriticality("predictionCriticality", getAmas().data.normalizedCriticality);
criticalities.updateMeans();
if (severalActivatedContexts()) {
if (severalActivatedContexts()) {
endogenousCriticalities.addCriticality("predictionCriticality", getAmas().data.criticity);
endogenousCriticalities.addCriticality("endogenousPredictionActivatedContextsOverlapspredictionCriticality",
Math.abs(getAmas().data.oracleValue - getAmas().data.endogenousPredictionActivatedContextsOverlaps));
endogenousCriticalities.addCriticality(
"endogenousPredictionActivatedContextsOverlapsWorstDimInfluencepredictionCriticality",
Math.abs(getAmas().data.oracleValue - getAmas().data.endogenousPredictionActivatedContextsOverlapsWorstDimInfluence));
endogenousCriticalities.addCriticality(
"endogenousPredictionActivatedContextsOverlapsInfluenceWithoutConfidencepredictionCriticality",
Math.abs(getAmas().data.oracleValue - getAmas().data.endogenousPredictionActivatedContextsOverlapsInfluenceWithoutConfidence));
endogenousCriticalities.addCriticality(
"endogenousPredictionActivatedContextsOverlapsWorstDimInfluenceWithoutConfidencepredictionCriticality",
Math.abs(getAmas().data.oracleValue
- getAmas().data.endogenousPredictionActivatedContextsOverlapsWorstDimInfluenceWithoutConfidence));
endogenousCriticalities.addCriticality(
"endogenousPredictionActivatedContextsOverlapsWorstDimInfluenceWithVolumepredictionCriticality",
Math.abs(getAmas().data.oracleValue - getAmas().data.endogenousPredictionActivatedContextsOverlapsWorstDimInfluenceWithVolume));
endogenousCriticalities.addCriticality(
"endogenousPredictionActivatedContextsSharedIncompetencepredictionCriticality",
Math.abs(getAmas().data.oracleValue - getAmas().data.endogenousPredictionActivatedContextsSharedIncompetence));
endogenousCriticalities.addCriticality("predictionCriticality", getAmas().data.criticity);
endogenousCriticalities.addCriticality("endogenousPredictionActivatedContextsOverlapspredictionCriticality",
Math.abs(getAmas().data.oracleValue - getAmas().data.endogenousPredictionActivatedContextsOverlaps));
endogenousCriticalities.addCriticality(
"endogenousPredictionActivatedContextsOverlapsWorstDimInfluencepredictionCriticality",
Math.abs(getAmas().data.oracleValue - getAmas().data.endogenousPredictionActivatedContextsOverlapsWorstDimInfluence));
endogenousCriticalities.addCriticality(
"endogenousPredictionActivatedContextsOverlapsInfluenceWithoutConfidencepredictionCriticality",
Math.abs(getAmas().data.oracleValue - getAmas().data.endogenousPredictionActivatedContextsOverlapsInfluenceWithoutConfidence));
endogenousCriticalities.addCriticality(
"endogenousPredictionActivatedContextsOverlapsWorstDimInfluenceWithoutConfidencepredictionCriticality",
Math.abs(getAmas().data.oracleValue
- getAmas().data.endogenousPredictionActivatedContextsOverlapsWorstDimInfluenceWithoutConfidence));
endogenousCriticalities.addCriticality(
"endogenousPredictionActivatedContextsOverlapsWorstDimInfluenceWithVolumepredictionCriticality",
Math.abs(getAmas().data.oracleValue - getAmas().data.endogenousPredictionActivatedContextsOverlapsWorstDimInfluenceWithVolume));
endogenousCriticalities.addCriticality(
"endogenousPredictionActivatedContextsSharedIncompetencepredictionCriticality",
Math.abs(getAmas().data.oracleValue - getAmas().data.endogenousPredictionActivatedContextsSharedIncompetence));
endogenousCriticalities.updateMeans();
endogenousCriticalities.updateMeans();
}
}
getAmas().data.predictionPerformance.update(criticalities.getCriticalityMean("predictionCriticality"));
if (criticalities.getCriticalityMean("distanceToRegression") != null) {
getAmas().data.regressionPerformance.update(criticalities.getCriticalityMean("distanceToRegression"));
getAmas().data.predictionPerformance.update(criticalities.getCriticalityMean("predictionCriticality"));
if (criticalities.getCriticalityMean("distanceToRegression") != null) {
getAmas().data.regressionPerformance.update(criticalities.getCriticalityMean("distanceToRegression"));
}
}
// getAmas().data.mappingPerformance.update(?);
}
......@@ -2219,6 +2229,10 @@ public class Head extends AmoebaAgent {
}
public boolean isSelfRequest(){
getEnvironment().trace(TRACE_LEVEL.STATE, new ArrayList<String>(Arrays.asList("ENDO REQUESTS", ""+endogenousRequests.size())));
for(EndogenousRequest endoRequest : endogenousRequests) {
getEnvironment().trace(TRACE_LEVEL.STATE, new ArrayList<String>(Arrays.asList("" + endoRequest)));
}
return endogenousRequests.size()>0;
}
......
......@@ -42,6 +42,7 @@ public class F_N_Launcher extends Application implements Serializable {
public static final double explorationIncrement = 1.0 ;
public static final double explorationWidht = 0.5 ;
public static final boolean setActiveLearning = true ;
public static final boolean setSelfLearning = true ;
public static final int nbCycle = 1000;
......@@ -82,6 +83,7 @@ public class F_N_Launcher extends Application implements Serializable {
amoeba.data.learningSpeed = learningSpeed;
amoeba.data.numberOfPointsForRegression = regressionPoints;
amoeba.data.isActiveLearning = setActiveLearning;
amoeba.data.isSelfLearning = setSelfLearning;
amoeba.getEnvironment().setMappingErrorAllowed(mappingErrorAllowed);
......
......@@ -154,11 +154,6 @@ public class F_N_Manager implements StudiedSystem{
nonRandomExplorationStep();
}
else if(selfLearning) {
selfLearning = false;
}
else if(activeLearning) {
......@@ -573,7 +568,15 @@ private double[] subZoneCenter3D(int nb) {
out.put("px" + i,x[i]);
}
out.put("oracle",result);
if(selfLearning) {
selfLearning = false;
out.put("oracle",null);
}else {
out.put("oracle",result);
}
//out.put("oracle",result);
System.out.println(out);
return out;
}
......
......@@ -217,6 +217,12 @@ public class AMOEBA extends Amas<World> implements IAMOEBA {
perceptions = studiedSystem.getOutput();
if(perceptions.get("oracle")==null) {
data.useOracle = false;
}else {
data.useOracle = true;
}
}
environment.preCycleActions();
......@@ -247,15 +253,15 @@ public class AMOEBA extends Amas<World> implements IAMOEBA {
protected void onSystemCycleEnd() {
if(studiedSystem != null) {
if(head.isActiveLearning()) {
data.activeLearning = false;
studiedSystem.setActiveLearning(true);
if(data.selfLearning) {
data.selfLearning = false;
studiedSystem.setSelfLearning(true);
studiedSystem.setSelfRequest(head.getSelfRequest());
}
else if(head.isSelfLearning()) {
data.selfLearning = false;
studiedSystem.setSelfLearning(true);
else if(data.activeLearning) {
data.activeLearning = false;
studiedSystem.setActiveLearning(true);
studiedSystem.setSelfRequest(head.getSelfRequest());
}
}
......
......@@ -32,8 +32,8 @@ public class AmoebaData implements Serializable {
public Double endogenousPredictionNContexts = 0.0;
public Double endogenousPredictionNContextsByInfluence = 0.0;
public double oracleValue;
public double oldOracleValue;
public Double oracleValue;
public Double oldOracleValue;
public double criticity = 0.0;
public double distanceToRegression;
public double oldCriticity;
......@@ -47,6 +47,7 @@ public class AmoebaData implements Serializable {
public boolean contextFromPropositionWasSelected = false;
public boolean isActiveLearning;
public boolean isSelfLearning;
public boolean activeLearning = false;
public boolean selfLearning = false;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment