#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ main.py — evaluation.py の各種プロットを一括実行 """ from multiprocessing.pool import Pool import os import random try: from utils import set_random_seed except Exception: def set_random_seed(seed: int = 12): random.seed(seed) try: import numpy as np np.random.seed(seed) except Exception: pass from evaluation import ( plot_accuracy_vs_budget, plot_value_vs_used, plot_value_vs_budget_target, plot_widthsum_alllinks_vs_budget, plot_minwidthsum_perpair_vs_budget, plot_widthsum_alllinks_weighted_vs_budget, plot_minwidthsum_perpair_weighted_vs_budget, ) def main(): set_random_seed(12) num_workers = max(1, (os.cpu_count() or 4) // 2) noise_model_list = ["Depolar"] scheduler_names = ["LNaive", "Greedy"] node_path_list = [5, 5, 5] importance_list = [0.3, 0.6, 0.9] budget_list = [1000,2000,3000,4000,5000,6000,7000,8000,9000,10000] bounces = (1, 2, 3, 4) repeat = 10 delta = 0.1 print("=== Config ===") print(f"workers={num_workers}, noise_models={noise_model_list}") print(f"schedulers={scheduler_names}") print(f"node_path_list={node_path_list}, importance_list={importance_list}") print(f"budgets={budget_list}, bounces={bounces}, repeat={repeat}, delta={delta}") print("================\n") p = Pool(processes=num_workers) jobs = [] for noise_model in noise_model_list: jobs.append(p.apply_async( plot_accuracy_vs_budget, args=(budget_list, scheduler_names, noise_model, node_path_list, importance_list, bounces, repeat), kwds={"verbose": True} )) jobs.append(p.apply_async( plot_value_vs_used, args=(budget_list, scheduler_names, noise_model, node_path_list, importance_list, bounces, repeat), kwds={"verbose": True} )) jobs.append(p.apply_async( plot_value_vs_budget_target, args=(budget_list, scheduler_names, noise_model, node_path_list, importance_list, bounces, repeat), kwds={"verbose": True} )) jobs.append(p.apply_async( plot_widthsum_alllinks_vs_budget, args=(budget_list, scheduler_names, noise_model, node_path_list, importance_list, bounces, repeat), kwds={"delta": delta, "verbose": True} )) jobs.append(p.apply_async( plot_minwidthsum_perpair_vs_budget, args=(budget_list, scheduler_names, noise_model, node_path_list, importance_list, bounces, repeat), kwds={"delta": delta, "verbose": True} )) jobs.append(p.apply_async( plot_widthsum_alllinks_weighted_vs_budget, args=(budget_list, scheduler_names, noise_model, node_path_list, importance_list, bounces, repeat), kwds={"delta": delta, "verbose": True} )) jobs.append(p.apply_async( plot_minwidthsum_perpair_weighted_vs_budget, args=(budget_list, scheduler_names, noise_model, node_path_list, importance_list, bounces, repeat), kwds={"delta": delta, "verbose": True} )) p.close(); p.join() for j in jobs: j.get() print("\nAll jobs finished.") print("Pickles -> ./outputs/, PDF -> カレントディレクトリ に保存されます。") if __name__ == "__main__": main()