f.write("% of failed contact generation (no candidates found): "+str(nc/tc*100)+"%\n")
f.write("% of unstable contact generation (no balanced candidates found): "+str(uc/tc*100)+"%\n")
f.write("\n")
f.write("***********************%\n")
f.write(" optimization related data %\n")
f.write("% succes rate of optimization: "+str(data["optim_num_success"]/data["optim_num_trials"]*100)+"%\n")
f.write("% succes rate of optimization disregarding collision: "+str(data["optim_num_success"]/(data["optim_num_trials"]-data["optim_error_com_proj"])*100)+"%\n")
f.write("% errors due to problem infeasibility (% of errors, % over all trials): "+str(data["optim_error_optim_fail"]/data["num_errors"]*100)+" "str(data["optim_error_optim_fail"]/data["optim_num_trials"]*100)+"%\n")
f.write("% errors due to unknown reasons (% of errors, % over all trials): "+str(data["optim_error_unknown"]/data["num_errors"]*100)+" "str(data["optim_error_unknown"]/data["optim_num_trials"]*100)+"%\n")