Closed krmr73 closed 1 year ago
@krmr73
これ、ドメイン知識持っている自分がやった方が流石に早そうなので、引き取ります
ga/results/grid_search/<target_data>
以下にパラメタ名を含んだ jsonファイルでもダンプすれば良いと思う既存のコードを活用できそう.例えば,jsonとしてダンプする関数などは既にある.
また,main.py にこれ以上機能を持たせたくない && スパゲッティになるので,grid_search.py
を作り,それを実行するようにした方が良さそう
非公開だが,jsonダンプが完了した後,最適なファイルを探すスクリプトも既にあったりする
import json
import os
import sys
def main():
"""最適なパラメタだったファイルを探す"""
best_fname = ""
best_score = float("inf")
worst_fname = ""
worst_score = float("-inf")
target_data = sys.argv[1]
respath = f"./results/grid_search_{target_data}/rate_"
for rate in [0.01, 0.02, 0.03, 0.04, 0.05]:
fpath = respath + str(rate)
for file in os.listdir(fpath):
if file.endswith(".json"):
fname = os.path.join(fpath, file)
with open(fname) as f:
res = json.load(f)
if res["best_fitness"] < best_score:
best_score = res["best_fitness"]
best_fname = fname
if res["best_fitness"] > worst_score:
worst_score = res["best_fitness"]
worst_fname = fname
print("Best file: ", best_fname)
print("Best score: ", best_score)
print()
print("Worst file: ", worst_fname)
print("Worst score: ", worst_score)
if __name__ == "__main__":
main()
Feature description
グリッドサーチする場合は出力先を変更するようにする。 最適な個体の
rho, nu, recentness, frequency, objective, population_size, mutation_rate, cross_rate
の情報を出力する。Motivation
個体数、交叉率、突然変異率の最適なパラメータを調べ、最適なパラメータで本実験を行いたいため。
Additional context
現在考えている仕様は以下の通りである。