-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathassignment1.py
More file actions
152 lines (124 loc) · 3.95 KB
/
Copy pathassignment1.py
File metadata and controls
152 lines (124 loc) · 3.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
''' Assignment: Planning & Reinforcement Learning Assignment 1
By: Justus Hübotter (2617135), Florence van der Voort (2652198), Stefan Wijtsma (2575874)
Created @ April 2019'''
import main
import numpy as np
import matplotlib.pyplot as plt
plt.style.use('ggplot')
def task1():
print('TASK 1:')
print('Interactive text interface to navigate through the ice world environment.')
R, Q, V, states, actions = main.initialize(init=0)
main.manual(R)
print('Task 1 complete.')
print()
def task2():
print('TASK 2:')
print('Random policy implementation.')
results = {}
R, Q, V, states, actions = main.initialize(init=0)
for g in np.arange(0.1, 1.1, 0.4):
deltas = main.random_policy(R, Q, V, states, actions, gamma=g)
results.update({'gamma = %.1f' % g : deltas})
print('\n\n')
print('Task 2 complete.')
print()
return results
def task3():
print('TASK 3:')
print('Value iteration for various discount factors.')
results = {}
for g in np.arange(0.1, 1.1, 0.4):
R, Q, V, states, actions = main.initialize(init=0)
deltas = main.value_iteration(R, Q, V, states, actions, gamma=g)
results.update({'gamma = %.1f' % g : deltas})
print('\n\n')
print('Task 3 complete.')
print()
return results
def task4():
print('TASK 4:')
print('Howards policy iteration.')
results = {}
for g in np.arange(0.1, 1.1, 0.4):
R, Q, V, states, actions = main.initialize(init=0)
deltas = main.policy_iteration(R, Q, V, states, actions, gamma=g)
results.update({'gamma = %.1f' % g : deltas})
print('Task 4 complete.')
print()
return results
def task5():
print('TASK 5.1:')
print('Simple policy iteration.')
results = {}
for g in np.arange(0.1, 1.1, 0.4):
R, Q, V, states, actions = main.initialize(init=0)
deltas = main.simple_policy_iteration(R, Q, V, states, actions, gamma=g)
results.update({'gamma = %.1f' % g : deltas})
print('Task 5 complete.')
print()
return results
def task71():
print('TASK 7.1:')
print('Additional algorithms.')
print('Optimistic initialization for Q(t=0)')
results = {}
for i in [100]:
for g in np.arange(0.1, 1.1, 0.4):
R, Q, V, states, actions = main.initialize(init=i)
deltas = main.value_iteration(R, Q, V, states, actions, gamma=g)
#main.policy_iteration(R, Q, V, states, actions)
results.update({'init = %i, gamma = %.1f' % (i, g) : deltas})
print('\n\n')
print('Task 7.1 complete.')
print()
return results
def task72():
print('TASK 7.2:')
print('Additional algorithms.')
results = {}
print('Pessimistic initialization for Q(t=0)')
for i in [-10]:
for g in np.arange(0.1, 1.1, 0.4):
R, Q, V, states, actions = main.initialize(init=i)
deltas = main.value_iteration(R, Q, V, states, actions, gamma=g)
#main.policy_iteration(R, Q, V, states, actions)
results.update({'init = %i, gamma = %.1f' % (i, g) : deltas})
print('\n\n')
print('Task 7.2 complete.')
print()
return results
def plot_deltas(all_deltas, title):
for name, deltas in all_deltas.items():
plt.plot(np.arange(1,len(deltas)+1), deltas, label=name)
plt.title('Convergance of ' + title)
plt.xlabel('Sweeps over state space')
plt.ylabel('Delta')
plt.legend()
plt.show()
if __name__ == '__main__':
task1()
input('Press ENTER to continue')
print('\n\n', 100 * '#', '\n\n')
results = task2()
plot_deltas(results, 'Random Policy')
input('Press ENTER to continue')
print('\n\n', 100 * '#', '\n\n')
results = task3()
plot_deltas(results, 'Value iteration')
input('Press ENTER to continue')
print('\n\n', 100 * '#', '\n\n')
results = task4()
plot_deltas(results, 'Howard´s Policy Iteration')
input('Press ENTER to continue')
print('\n\n', 100 * '#', '\n\n')
results = task5()
plot_deltas(results, 'Simple Policy Iteration')
input('Press ENTER to continue')
print('\n\n', 100 * '#', '\n\n')
results = task71()
plot_deltas(results, 'VI with Optimistic value initialization')
input('Press ENTER to continue')
print('\n\n', 100 * '#', '\n\n')
results = task72()
plot_deltas(results, 'VI with Pessimistic value initialization')