add every visit no jump results
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user