@@ -78,15 +78,13 @@ def prepare_suboperators(fitness_operator: CompoundOperator, operator_params: di
7878 sparsity = LASSOSparsity ()
7979 coeff_calc = LinRegBasedCoeffsEquation ()
8080
81- # sparsity = map_operator_between_levels(sparsity, 'gene level', 'chromosome level')
82- # coeff_calc = map_operator_between_levels(coeff_calc, 'gene level', 'chromosome level')
83-
84- fitness_operator .set_suboperators ({'sparsity' : sparsity ,
85- 'coeff_calc' : coeff_calc })
86- fitness_cond = lambda x : not getattr (x , 'fitness_calculated' )
81+ fitness_operator .set_suboperators ({'sparsity' : sparsity , 'coeff_calc' : coeff_calc })
8782 fitness_operator .params = operator_params
88- fitness_operator = map_operator_between_levels (fitness_operator , 'gene level' , 'chromosome level' ,
89- objective_condition = fitness_cond )
83+
84+ if 'chromosome level' not in fitness_operator ._tags :
85+ fitness_cond = lambda x : not getattr (x , 'fitness_calculated' )
86+ fitness_operator = map_operator_between_levels (fitness_operator , 'gene level' , 'chromosome level' ,
87+ objective_condition = fitness_cond )
9088 return fitness_operator
9189
9290def ac_data (filename : str ):
@@ -98,6 +96,14 @@ def ac_data(filename: str):
9896 return grids , data
9997
10098
99+ def get_pic_network_summary (operator ):
100+ if operator .adapter is None or operator .adapter .net is None :
101+ return None
102+ net = operator .adapter .net
103+ total_params = sum (p .numel () for p in net .parameters ())
104+ layers = [str (layer ) for layer in net .layers ] if hasattr (net , 'layers' ) else []
105+ return {'total_parameters' : total_params , 'layers' : layers }
106+
101107def AC_test (operator : CompoundOperator , foldername : str , noise_level : int = 0 ):
102108 # Test scenario to evaluate performance on Allen-Cahn equation
103109 eq_ac_symbolic = '0.0001 * d^2u/dx1^2{power: 1.0} + -5.0 * u{power: 3.0} + 5.0 * u{power: 1.0} + 0.0 = du/dx0{power: 1.0}'
@@ -172,40 +178,45 @@ def ac_discovery(foldername, noise_level):
172178if __name__ == "__main__" :
173179 import torch
174180 from epde .operators .utils .default_parameter_loader import EvolutionaryParams
181+ global_var .solution_guess_nn = None
175182 print (torch .cuda .is_available ())
176183 print (f"CUDA version linked with PyTorch: { torch .version .cuda } " )
177184 # Operator = fitness.SolverBasedFitness # Replace by the developed PIC-based operator.
178- # Operator = fitness.PIC
179- # Operator = fitness.L2LRFitness
180- Operator = fitness .DeepXDEBasedFitness
185+ #Operator = fitness.PIC
186+ Operator = fitness .L2LRFitness
187+ # Operator = fitness.DeepXDEBasedFitness
181188 params = EvolutionaryParams ()
182- #operator_params = params.get_default_params_for_operator('DiscrepancyBasedFitnessWithCV') #{"penalty_coeff": 0.2, "pinn_loss_mult": 1e4}
183- try :
184- operator_params = params .get_default_params_for_operator ('DeepXDEBasedFitness' )
185- except Exception as e :
186- print (f"Предупреждение: не удалось загрузить параметры для DeepXDEBasedFitness: { e } " )
187- print ("Использую ручную конфигурацию." )
188- operator_params = {
189- "deepxde_config" : {
190- "net" : [50 , 50 , 50 ],
191- "activation" : "tanh" ,
192- "optimizer" : "adam" ,
193- "lr" : 1e-3 ,
194- "num_domain" : 1000 ,
195- "num_boundary" : 200 ,
196- "num_initial" : 200 ,
197- "iterations" : 2
198- },
199- "penalty_coeff" : 0.2 ,
200- "error_metric" : "rmse"
201- }
189+ operator_params = params .get_default_params_for_operator ('DiscrepancyBasedFitnessWithCV' ) #{"penalty_coeff": 0.2, "pinn_loss_mult": 1e4}
190+ #operator_params = params.get_default_params_for_operator('PIC')
191+
192+ # try:
193+ # operator_params = params.get_default_params_for_operator('DeepXDEBasedFitness')
194+ # except Exception as e:
195+ # print(f"Предупреждение: не удалось загрузить параметры для DeepXDEBasedFitness: {e}")
196+ # print("Использую ручную конфигурацию.")
197+ # operator_params = {
198+ # "deepxde_config": {
199+ # "net": [50, 50, 50],
200+ # "activation": "tanh",
201+ # "optimizer": "adam",
202+ # "lr": 1e-3,
203+ # "num_domain": 1000,
204+ # "num_boundary": 200,
205+ # "num_initial": 200,
206+ # "iterations": 2
207+ # },
208+ # "penalty_coeff": 0.2,
209+ # "error_metric": "rmse"
210+ # }
202211
203212 print ('operator_params ' , operator_params )
213+
204214 fit_operator = prepare_suboperators (Operator (list (operator_params .keys ())), operator_params )
215+ #get_pic_network_summary(fit_operator)
205216
206217 # Paths
207218 directory = os .path .dirname (os .path .realpath (__file__ ))
208219 ac_folder_name = os .path .join (directory )
209220
210- # AC_test(fit_operator, ac_folder_name, 0)
211- ac_discovery (ac_folder_name , 0 )
221+ AC_test (fit_operator , ac_folder_name , 0 )
222+ # ac_discovery(ac_folder_name, 0)
0 commit comments