-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPSOoptimizer.py
More file actions
63 lines (49 loc) · 2 KB
/
Copy pathPSOoptimizer.py
File metadata and controls
63 lines (49 loc) · 2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
from utils.calc import calc_cost
from utils.sim import finesse_sim
from GNN.GNN_run import run_GNN
from perturbation import calc_perturbed_params
import numpy as np
def main_wrapper_PSO_sim(params, kat):
ITM_Roc, ETM_Roc = params
# Call your main function with the unpacked parameters
ITM_ROC_perturbed, ETM_ROC_perturbed, Delta = calc_perturbed_params(ITM_Roc, ETM_Roc)
ITM_power_list = []
ITM_name_list = []
ETM_power_list = []
ETM_name_list = []
for ITM_ROC_p in ITM_ROC_perturbed:
ITM_names, ITM_powers= finesse_sim((ITM_ROC_p, ETM_Roc), kat)
ITM_power_list.append(ITM_powers)
ITM_name_list.append(ITM_names)
for ETM_ROC_p in ETM_ROC_perturbed:
ETM_names, ETM_powers= finesse_sim((ITM_Roc, ETM_ROC_p), kat)
ETM_power_list.append(ETM_powers)
ETM_name_list.append(ETM_names)
cost = calc_cost(kat, (name_list, power_list), Delta)
return name_list, power_list
def main_wrapper_PSO_NN(params, kat):
ITM_Roc, ETM_Roc = params
# Call your main function with the unpacked parameters
ITM_ROC_perturbed, ETM_ROC_perturbed = calc_perturbed_params(ITM_Roc, ETM_Roc)
results = []
for ITM_ROC_p, ETM_ROC_p, in zip(ITM_ROC_perturbed, ETM_ROC_perturbed):
result = run_GNN((ITM_ROC_p, ETM_ROC_p), kat)
results.append(result)
print(result)
# cost = calc_cost(kat, results)
return None
def PSO_step(self, func):
for iter_num in range(max_iter):
self.update_V()
self.recorder()
self.update_X()
self.func = func
self.cal_y()
self.update_pbest()
self.update_gbest()
self.gbest_y_hist.append(self.gbest_y)
return self.gbest_x.copy(), self.gbest_y
# pso = PSO(func=main_wrapper_PSO, n_dim=3, pop=300, max_iter=1000, lb=[start_ETM_Roc, start_ITM_Roc], ub=[end_ETM_Roc, end_ITM_Roc], w=0.9, c1=1.2, c2=1.8, verbose=True)
# pso.run()
# print("Best parameters found: ", pso.gbest_x)
# print("Best cost found: ", pso.gbest_y)