mirror of
https://github.com/kolbytn/mindcraft.git
synced 2025-03-28 14:56:24 +01:00
small fixes, the items were being given twice to the agents on initialization and accounting for blocked_actions not being in the task file
This commit is contained in:
parent
d5fde29a7b
commit
d4565aa68c
3 changed files with 6 additions and 58 deletions
|
@ -306,57 +306,6 @@ def detach_process(command):
|
||||||
print(f"An error occurred: {e}")
|
print(f"An error occurred: {e}")
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
# Generate timestamp at the start of experiments
|
|
||||||
timestamp = datetime.now().strftime('%Y%m%d_%H%M%S')
|
|
||||||
results_filename = f"results_{task_id}_{timestamp}.txt"
|
|
||||||
print(f"Results will be saved to: {results_filename}")
|
|
||||||
|
|
||||||
success_count = 0
|
|
||||||
experiment_results = []
|
|
||||||
|
|
||||||
for exp_num in range(num_exp):
|
|
||||||
print(f"\nRunning experiment {exp_num + 1}/{num_exp}")
|
|
||||||
|
|
||||||
start_time = time.time()
|
|
||||||
|
|
||||||
# Run the node command
|
|
||||||
cmd = f"node main.js --task_path {task_path} --task_id {task_id}"
|
|
||||||
try:
|
|
||||||
subprocess.run(cmd, shell=True, check=True)
|
|
||||||
except subprocess.CalledProcessError as e:
|
|
||||||
print(f"Error running experiment: {e}")
|
|
||||||
continue
|
|
||||||
|
|
||||||
# Check if task was successful
|
|
||||||
success = check_task_completion(agents)
|
|
||||||
if success:
|
|
||||||
success_count += 1
|
|
||||||
print(f"Experiment {exp_num + 1} successful")
|
|
||||||
else:
|
|
||||||
print(f"Experiment {exp_num + 1} failed")
|
|
||||||
|
|
||||||
end_time = time.time()
|
|
||||||
|
|
||||||
time_taken = end_time - start_time
|
|
||||||
|
|
||||||
# Store individual experiment result
|
|
||||||
experiment_results.append({
|
|
||||||
'success': success,
|
|
||||||
'time_taken': time_taken
|
|
||||||
})
|
|
||||||
|
|
||||||
# Update results file after each experiment
|
|
||||||
update_results_file(task_id, success_count, exp_num + 1, time_taken, experiment_results)
|
|
||||||
|
|
||||||
|
|
||||||
# Small delay between experiments
|
|
||||||
time.sleep(1)
|
|
||||||
|
|
||||||
final_ratio = success_count / num_exp
|
|
||||||
print(f"\nExperiments completed. Final success ratio: {final_ratio:.2f}")
|
|
||||||
return experiment_results
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
# edit_settings("settings.js", {"profiles": ["./andy.json", "./jill.json"], "port": 55917})
|
# edit_settings("settings.js", {"profiles": ["./andy.json", "./jill.json"], "port": 55917})
|
||||||
# edit_server_properties_file("../server_data/", 55917)
|
# edit_server_properties_file("../server_data/", 55917)
|
||||||
|
|
|
@ -91,7 +91,7 @@ export class Agent {
|
||||||
this._setupEventHandlers(save_data, init_message);
|
this._setupEventHandlers(save_data, init_message);
|
||||||
this.startEvents();
|
this.startEvents();
|
||||||
|
|
||||||
this.task.initBotTask();
|
// this.task.initBotTask();
|
||||||
|
|
||||||
if (!load_mem) {
|
if (!load_mem) {
|
||||||
this.task.initBotTask();
|
this.task.initBotTask();
|
||||||
|
|
|
@ -49,7 +49,11 @@ export class Task {
|
||||||
this.taskTimeout = this.data.timeout || 300;
|
this.taskTimeout = this.data.timeout || 300;
|
||||||
this.taskStartTime = Date.now();
|
this.taskStartTime = Date.now();
|
||||||
this.validator = new TaskValidator(this.data, this.agent);
|
this.validator = new TaskValidator(this.data, this.agent);
|
||||||
this.blocked_actions = this.data.blocked_actions[this.agent.count_id.toString()] || [];
|
if (this.data.blocked_actions) {
|
||||||
|
this.blocked_actions = this.data.blocked_actions[this.agent.count_id.toString()] || [];
|
||||||
|
} else {
|
||||||
|
this.blocked_actions = [];
|
||||||
|
}
|
||||||
this.restrict_to_inventory = !!this.data.restrict_to_inventory;
|
this.restrict_to_inventory = !!this.data.restrict_to_inventory;
|
||||||
if (this.data.goal)
|
if (this.data.goal)
|
||||||
this.blocked_actions.push('!endGoal');
|
this.blocked_actions.push('!endGoal');
|
||||||
|
@ -80,11 +84,6 @@ export class Task {
|
||||||
isDone() {
|
isDone() {
|
||||||
if (this.validator && this.validator.validate())
|
if (this.validator && this.validator.validate())
|
||||||
return {"message": 'Task successful', "code": 2};
|
return {"message": 'Task successful', "code": 2};
|
||||||
// TODO check for other terminal conditions
|
|
||||||
// if (this.task.goal && !this.self_prompter.isActive())
|
|
||||||
// return {"message": 'Agent ended goal', "code": 3};
|
|
||||||
// if (this.task.conversation && !inConversation())
|
|
||||||
// return {"message": 'Agent ended conversation', "code": 3};
|
|
||||||
if (this.taskTimeout) {
|
if (this.taskTimeout) {
|
||||||
const elapsedTime = (Date.now() - this.taskStartTime) / 1000;
|
const elapsedTime = (Date.now() - this.taskStartTime) / 1000;
|
||||||
if (elapsedTime >= this.taskTimeout) {
|
if (elapsedTime >= this.taskTimeout) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue