【Python】【电网规划】基于经济与可靠性双目标的混合配电系统规划及可靠性评估
目录
主要内容
程序要点
2.1 交直流混合配电系统规划架构
2.2 交直流线路连接关系
部分代码
运行结果
下载链接
主要内容
本程序基于文献《Optimal double Q AC-DC hybrid distribution system planning with explicit topology-variable-based reliability assessment》提出的理论框架,实现了 AC-DC混合配电系统的双目标优化规划模型。经济性目标包括投资成本、维护成本和电力生产成本,可靠性目标包括EENS、SAIFI和SAIDI,主要约束包括KVL约束、KCL约束、VSC换流器模型、辐射拓扑约束、节点电压幅值限制和线路电流容量限制等,程序以6节点配电网系统为例,采用python代码编写,注释清楚,出图效果好!
(中文版文献可以参考《基于可靠性显式表达的交直流混合配电网规划方法》)
程序要点
2.1 交直流混合配电系统规划架构
上图展示了交直流混合配电系统(ADHDS)规划的架构,体现了系统中各类元件的组成与连接关系,通过交直流混合的母线和线路,整合住宅、工业、商业等多种负荷,以及风电、光伏、柴油发电机等分布式电源,同时纳入储能和电动汽车,形成一个灵活高效的配电系统架构。
2.2 交直流线路连接关系
A型:交流节点通过交流线路直接相连。
B型:交流节点与直流节点通过直流线路及电压源换流器连接。
C型:直流节点通过直流线路直接相连。
需要说明的是,两个交流节点也可通过直流线路及线路两端安装的两个电压源换流器实现连接,但这种连接方式的能量转换效率较低。
部分代码
# Solutionresult_x = {}result_y = {}result_x['x_node'] = x_noderesult_x['V_node'] = Vresult_y['y_line'] = y_bresult_y['ρ_A_b'] = ρ_A_bresult_y['ρ_B_b'] = ρ_B_bresult_y['ρ_C_b'] = ρ_C_bresult_y['I_line'] = Iresult_x = DataFrame(result_x)result_y = DataFrame(result_y)# 画图# 系统关键指标可视化fig, ax = plt.subplots(2, 1, figsize=(10, 12))# 可靠性指标柱状图metrics = ['SAIFI', 'SAIDI', 'EENS']values = [result_R.loc['Reliability', m] for m in metrics]ax[0].bar(metrics, values, color=['#2E86C1', '#85C1E9', '#48C9B0'])ax[0].set_title('系统可靠性指标')#ax[0].set_ylabel('值')ax[0].grid(axis='y', linestyle='--')# 成本构成饼图cost_labels = ['投资成本', '维护成本', '生产成本', '可靠性成本'] cost_values = [result_C.loc['Cost','Cost_Inv'], result_C.loc['Cost','Cost_Mag'],result_C.loc['Cost','Cost_Ele'], result_C.loc['Cost','Cost_Rel']]ax[1].pie(cost_values, labels=cost_labels, autopct='%1.1f%%',colors=['#F1C40F', '#E67E22', '#27AE60', '#8E44AD'])ax[1].set_title('成本构成')plt.tight_layout()plt.show()# 电压分布可视化plt.figure(figsize=(12, 6))# 按节点类型着色colors = ['red' if x==0 else 'blue' for x in Sol['x_node']]node_num = range(1, Para.N_Node+1)plt.scatter(node_num, Sol['V'], c=colors, s=100, edgecolor='k')plt.axhline(y=Para.Vmin_AC, color='r', linestyle='--', label='交流电压限值')plt.axhline(y=Para.Vmax_AC, color='r', linestyle='--')plt.axhline(y=Para.Vmin_DC, color='b', linestyle=':', label='直流电压限值') plt.axhline(y=Para.Vmax_DC, color='b', linestyle=':')plt.xticks(node_num)plt.xlabel('节点数')plt.ylabel('电压 (kV)')plt.title('节点电压分布')plt.legend()plt.grid(True)plt.show()# 线路电流分布可视化plt.figure(figsize=(12, 6))# 按线路类型分组line_types = []for i in range(Para.N_Branch):if Sol['ρ_A_b'][i]: line_types.append('AC')elif Sol['ρ_B_b'][i]: line_types.append('VSC-B')elif Sol['ρ_C_b'][i]: line_types.append('DC')else: line_types.append('Not Built')df_lines = pd.DataFrame({'Line': [f'L{i+1}' for i in range(Para.N_Branch)],'Current': Sol['I'],'Type': line_types})# 箱线图展示电流分布sns.boxplot(x='Type', y='Current', data=df_lines[df_lines['Type'] != 'Not Built'],palette={'AC':'red', 'DC':'blue', 'VSC-B':'purple'})plt.title('线路电流分布')plt.xlabel('类型')plt.ylabel('电流 (A)')plt.grid(axis='y')plt.show()