import numpy as np def simulate_config( target : str, dir_min : bool, var_opt : list, var_sys : list = None, var_oth : list = None, var_out : list = None, var_init_op : list = None, constrains : list = None, # [约束1,约束2,约束3] constrains_range: list = None, # [{变量a,上限,下限}, {变量b,上限,下限}] algorithm : str = 'soea_DE_currentToBest_1_L_templet', NIND : int = 300, MAXGEN : int = 200, diag_model : bool = False, allow_neg_opt : bool = True ): # 公式约束 if constrains is not None: constrains = [{'constrain':c} for c in constrains] else: constrains = [] # 范围约束 if constrains_range is not None: res_constrains_range = [] for con in constrains_range: var = con[0] ub = con[1] lb = con[2] con_res = {} con_res['var_name'] = var if ub is not None: con_res['ub'] = ub if lb is not None: con_res['lb'] = lb res_constrains_range.append(con_res) else: res_constrains_range = [] var_sys = [] if var_sys is None else var_sys var_oth = [] if var_oth is None else var_oth var_out = [] if var_out is None else var_out var_init_op = [] if var_init_op is None else var_init_op var_process = ['迭代过程','优化变量对比','输出变量对比'] input_var_id = var_opt + var_sys + var_oth + var_out output_var_id = var_process + var_opt + var_init_op input_id_end = [len(var) for var in [var_opt,var_sys,var_oth,var_out]] input_id_end = np.cumsum(input_id_end) output_id_end = [len(var) for var in [var_process,var_opt,var_init_op]] output_id_end = np.cumsum(output_id_end) config = { 'algorithm' : algorithm, 'NIND' : NIND, 'MAXGEN' : MAXGEN, 'target' : target, 'dir_min' : dir_min, 'diag_model' : diag_model, 'get_mod_io' : False, 'input_code' : 'input', 'model_code' : 'sys', 'model_name' : 'open_sys56', 'output_code' : 'output', 'allow_neg_opt' : allow_neg_opt, 'constrains' : constrains, 'constrains_range': res_constrains_range, '_PORTS_IN' : [{'point_id':p_id} for p_id in input_var_id], '_PORTS_OUT' : [{'point_id':p_id} for p_id in output_var_id], '_PORTS_IN_GROUP':[ {'name': '优化变量', 'start': 0, 'end': input_id_end[0]}, {'name': '系统变量', 'start': input_id_end[0], 'end': input_id_end[1]}, {'name': '其他变量', 'start': input_id_end[1], 'end': input_id_end[2]}, {'name': '外部变量', 'start': input_id_end[2], 'end': input_id_end[3]}, # {'name': '动态配置', 'start': input_id_end[3], 'end': input_id_end[4]} ], '_PORTS_OUT_GROUP':[ {'name': '优化过程', 'start': 0, 'end': output_id_end[0]}, {'name': '优化变量', 'start': output_id_end[0], 'end': output_id_end[1]}, {'name': '初始输出', 'start': output_id_end[1], 'end': output_id_end[2]}, ], } return config