| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- 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
|