add every visit no jump results

This commit is contained in:
2020-04-02 17:07:15 +02:00
parent f2aa7487af
commit b0ca634b64
8 changed files with 83 additions and 15 deletions
@@ -5,7 +5,7 @@ import core.Environment;
import core.LearningConfig;
import core.StepResult;
import core.listener.LearningListener;
import core.policy.EpsilonGreedyPolicy;
import example.DinoSampling;
import lombok.Getter;
import lombok.Setter;
@@ -104,7 +104,7 @@ public abstract class EpisodicLearning<A extends Enum> extends Learning<A> imple
timestamp++;
timestampCurrentEpisode++;
// TODO: more sophisticated way to check convergence
if(timestampCurrentEpisode > 300000){
if(timestampCurrentEpisode > 50000) {
converged = true;
// t
File file = new File(DinoSampling.FILE_NAME);
@@ -44,7 +44,7 @@ public class DinoWorld implements Environment<DinoAction>, Visualizable {
@Override
public StepResultEnvironment step(DinoAction action) {
boolean done = false;
int reward = 0;
int reward = 1;
if(action == DinoAction.JUMP){
dino.jump();
@@ -68,7 +68,7 @@ public class DinoWorld implements Environment<DinoAction>, Visualizable {
spawnNewObstacle();
}
if(ranIntoObstacle()) {
reward = -1;
reward = 0;
done = true;
}
+8 -10
View File
@@ -3,10 +3,8 @@ package example;
import core.RNG;
import core.algo.Method;
import core.controller.RLController;
import core.controller.RLControllerGUI;
import evironment.jumpingDino.DinoAction;
import evironment.jumpingDino.DinoWorld;
import evironment.jumpingDino.DinoWorldAdvanced;
import java.io.File;
import java.io.IOException;
@@ -16,7 +14,7 @@ import java.nio.file.StandardOpenOption;
public class DinoSampling {
public static final float f =0.05f;
public static final String FILE_NAME = "converge.txt";
public static final String FILE_NAME = "convergence.txt";
public static void main(String[] args) {
File file = new File(FILE_NAME);
try {
@@ -24,24 +22,24 @@ public class DinoSampling {
} catch (IOException e) {
e.printStackTrace();
}
for(float f = 0.05f; f <=1.003 ; f+=0.05f) {
for(float f = 0.06f; f <= 1.003; f += 0.05f) {
try {
Files.writeString(Path.of(file.getPath()), f + ",", StandardOpenOption.APPEND);
} catch (IOException e) {
e.printStackTrace();
}
for (int i = 1; i <= 100; i++) {
for(int i = 1; i <= 10; i++) {
System.out.println("seed: " + i * 13);
RNG.setSeed(i * 13);
RNG.setSeed(i * 17);
RLController<DinoAction> rl = new RLController<>(
new DinoWorldAdvanced(),
Method.Q_LEARNING_OFF_POLICY_CONTROL,
new DinoWorld(),
Method.MC_CONTROL_EVERY_VISIT,
DinoAction.values());
rl.setDelay(0);
rl.setDiscountFactor(0.99f);
rl.setDiscountFactor(1f);
rl.setEpsilon(f);
rl.setLearningRate(0.9f);
rl.setLearningRate(1f);
rl.setNrOfEpisodes(400000);
rl.start();
}