| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- #!/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()
|