mirror of
https://github.com/illiumst/marl-factory-grid.git
synced 2025-12-14 03:00:37 +01:00
Update utility plotting + Added alternative methods for TSP emergence prevention
This commit is contained in:
@@ -219,48 +219,59 @@ def plot_reward_development(reward_development, cfg, results_path):
|
||||
def plot_collected_coins_per_step():
|
||||
# Observed behaviour for multi-agent setting consisting of run0 and run0
|
||||
cleaned_dirt_per_step_emergent = [0, 0, 0, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5]
|
||||
cleaned_dirt_per_step = [0, 0, 0, 1, 1, 2, 2, 3, 3, 3, 4, 5]
|
||||
cleaned_dirt_per_step = [0, 0, 0, 1, 1, 2, 2, 3, 3, 3, 4, 5] # RL and TSP
|
||||
|
||||
plt.step(range(1, len(cleaned_dirt_per_step) + 1), cleaned_dirt_per_step, color='green', linewidth=3, label='Prevented')
|
||||
plt.step(range(1, len(cleaned_dirt_per_step) + 1), cleaned_dirt_per_step, color='green', linewidth=3, label='Prevented (RL)')
|
||||
plt.step(range(1, len(cleaned_dirt_per_step_emergent) + 1), cleaned_dirt_per_step_emergent, linestyle='--', color='darkred', linewidth=3, label='Emergent')
|
||||
plt.step(range(1, len(cleaned_dirt_per_step) + 1), cleaned_dirt_per_step, linestyle='dotted', color='darkorange', linewidth=3, label='Prevented (TSP)')
|
||||
plt.xlabel("Environment step", fontsize=20)
|
||||
plt.ylabel("Collected Coins", fontsize=20)
|
||||
yint = range(min(cleaned_dirt_per_step), max(cleaned_dirt_per_step) + 1)
|
||||
plt.yticks(yint, fontsize=17)
|
||||
plt.xticks(range(1, len(cleaned_dirt_per_step_emergent) + 1), fontsize=17)
|
||||
frame1 = plt.gca()
|
||||
# Only display every 5th tick label
|
||||
for idx, xlabel_i in enumerate(frame1.axes.get_xticklabels()):
|
||||
if (idx + 1) % 5 != 0:
|
||||
xlabel_i.set_visible(False)
|
||||
xlabel_i.set_fontsize(0.0)
|
||||
plt.legend(prop={'size': 20})
|
||||
# Change order of labels in legend
|
||||
handles, labels = frame1.get_legend_handles_labels()
|
||||
order = [0, 2, 1]
|
||||
plt.legend([handles[idx] for idx in order], [labels[idx] for idx in order], prop={'size': 20})
|
||||
fig = plt.gcf()
|
||||
fig.set_size_inches(8, 7)
|
||||
plt.savefig("../study_out/number_of_collected_coins.png")
|
||||
plt.savefig("../study_out/number_of_collected_coins.pdf")
|
||||
plt.show()
|
||||
|
||||
|
||||
def plot_reached_flags_per_step():
|
||||
# Observed behaviour for multi-agent setting consisting of runs 1 + 2
|
||||
reached_flags_per_step_emergent = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
|
||||
reached_flags_per_step = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2]
|
||||
reached_flags_per_step_RL = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2]
|
||||
reached_flags_per_step_TSP = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2]
|
||||
|
||||
plt.step(range(1, len(reached_flags_per_step) + 1), reached_flags_per_step, color='green', linewidth=3, label='Prevented')
|
||||
plt.step(range(1, len(reached_flags_per_step_RL) + 1), reached_flags_per_step_RL, color='green', linewidth=3, label='Prevented (RL)')
|
||||
plt.step(range(1, len(reached_flags_per_step_emergent) + 1), reached_flags_per_step_emergent, linestyle='--', color='darkred', linewidth=3, label='Emergent')
|
||||
plt.step(range(1, len(reached_flags_per_step_TSP) + 1), reached_flags_per_step_TSP, linestyle='dotted', color='darkorange', linewidth=3, label='Prevented (TSP)')
|
||||
plt.xlabel("Environment step", fontsize=20)
|
||||
plt.ylabel("Reached Flags", fontsize=20)
|
||||
yint = range(min(reached_flags_per_step), max(reached_flags_per_step) + 1)
|
||||
yint = range(min(reached_flags_per_step_RL), max(reached_flags_per_step_RL) + 1)
|
||||
plt.yticks(yint, fontsize=17)
|
||||
plt.xticks(range(1, len(reached_flags_per_step_emergent) + 1), fontsize=17)
|
||||
frame1 = plt.gca()
|
||||
# Only display every 5th tick label
|
||||
for idx, xlabel_i in enumerate(frame1.axes.get_xticklabels()):
|
||||
if (idx + 1) % 5 != 0:
|
||||
xlabel_i.set_visible(False)
|
||||
xlabel_i.set_fontsize(0.0)
|
||||
plt.legend(prop={'size': 20})
|
||||
# Change order of labels in legend
|
||||
handles, labels = frame1.get_legend_handles_labels()
|
||||
order = [0, 2, 1]
|
||||
plt.legend([handles[idx] for idx in order], [labels[idx] for idx in order], prop={'size': 20})
|
||||
fig = plt.gcf()
|
||||
fig.set_size_inches(8, 7)
|
||||
plt.savefig("../study_out/number_of_reached_flags.png")
|
||||
plt.savefig("../study_out/number_of_reached_flags.pdf")
|
||||
plt.show()
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user