ToB企服应用市场:ToB评测及商务社交产业平台

标题: 文章解读与仿真步伐复现思路——EI\CSCD\北大焦点《考虑频率安全及调峰需求 [打印本页]

作者: 铁佛    时间: 2024-12-27 06:47
标题: 文章解读与仿真步伐复现思路——EI\CSCD\北大焦点《考虑频率安全及调峰需求
本专栏栏目提供文章与步伐复现思路,详细已有的论文与论文源步伐可翻阅本博主免费的专栏栏目《论文与完备步伐》
论文与完备源步伐_电网论文源步伐的博客-CSDN博客
https://blog.csdn.net/liang674027206/category_12531414.html
电网论文源步伐-CSDN博客电网论文源步伐擅长文章解读,论文与完备源步伐,等方面的知识,电网论文源步伐关注python,机器学习,计算机视觉,深度学习,神经网络,数据挖掘领域.
https://blog.csdn.net/LIANG674027206?type=download
这篇文章主要研究了在风电高渗出电力体系中,如何通过两阶段优化调度方法来考虑频率安全和调峰需求。以下是文章的焦点内容:
文章的关键词包括风电高渗出、频率安全束缚、两阶段优化和优化调度。

为了复现文章中的仿真算例,我们需要分两个阶段构建和求解优化调度模子。以下是复现仿真的步骤和伪代码:
  1. # 步骤 1: 导入必要的库
  2. import numpy as np
  3. from scipy.optimize import minimize
  4. from gurobipy import Model, GRB, quicksum
  5. # 步骤 2: 定义第一阶段优化问题 - 调峰优化
  6. def stage_one_optimization(wind_forecast, load_forecast, adjustable_load_params):
  7.     # 创建模型
  8.     m1 = Model("Stage-One-Optimization")
  9.    
  10.     # 定义决策变量 - 可调节负荷的响应功率
  11.     adjustable_load = m1.addVars(wind_forecast.size, name="Adjustable_Load")
  12.    
  13.     # 定义目标函数 - 最大化新能源-负荷混合相似度指标
  14.     m1.setObjective(
  15.         quicksum((wind_forecast[t] - load_forecast[t] - adjustable_load[t]) ** 2 for t in range(wind_forecast.size)),
  16.         GRB.MAXIMIZE
  17.     )
  18.    
  19.     # 添加约束条件
  20.     # 可调节负荷的响应功率约束
  21.     for t in range(wind_forecast.size):
  22.         m1.addConstr(-adjustable_load_params['max'] <= adjustable_load[t] <= adjustable_load_params['max'])
  23.    
  24.     # 求解第一阶段优化问题
  25.     m1.optimize()
  26.    
  27.     # 获取优化后的可调节负荷响应功率
  28.     optimal_adjustable_load = [adjustable_load[t].x for t in range(wind_forecast.size)]
  29.    
  30.     return optimal_adjustable_load
  31. # 步骤 3: 定义第二阶段优化问题 - 频率安全和经济性优化
  32. def stage_two_optimization(wind_forecast, load_forecast, optimal_adjustable_load, params):
  33.     # 创建模型
  34.     m2 = Model("Stage-Two-Optimization")
  35.    
  36.     # 定义决策变量 - 风电、火电、储能和抽水蓄能的出力计划
  37.     wind_output = m2.addVars(wind_forecast.size, name="Wind_Output")
  38.     thermal_output = m2.addVars(params['thermal_units'], name="Thermal_Output")
  39.     storage_output = m2.addVars(params['storage_units'], name="Storage_Output")
  40.     pumped_storage_output = m2.addVars(params['pumped_storage_units'], name="Pumped_Storage_Output")
  41.    
  42.     # 定义目标函数 - 最小化系统运行成本
  43.     m2.setObjective(
  44.         quicksum(thermal_output[t] * params['thermal_cost'] for t in params['thermal_units']) +
  45.         quicksum(storage_output[t] * params['storage_cost'] for t in params['storage_units']),
  46.         GRB.MINIMIZE
  47.     )
  48.    
  49.     # 添加约束条件
  50.     # 功率平衡约束、频率安全约束等
  51.     for t in range(wind_forecast.size):
  52.         m2.addConstr(
  53.             quicksum(wind_output[t]) +
  54.             quicksum(thermal_output[t]) +
  55.             quicksum(storage_output[t]) +
  56.             quicksum(pumped_storage_output[t]) -
  57.             load_forecast[t] -
  58.             optimal_adjustable_load[t] == 0
  59.         )
  60.    
  61.     # 求解第二阶段优化问题
  62.     m2.optimize()
  63.    
  64.     # 获取优化结果
  65.     optimal_outputs = {
  66.         'Wind': [wind_output[t].x for t in range(wind_forecast.size)],
  67.         'Thermal': [thermal_output[t].x for t in params['thermal_units']],
  68.         'Storage': [storage_output[t].x for t in params['storage_units']],
  69.         'Pumped_Storage': [pumped_storage_output[t].x for t in params['pumped_storage_units']]
  70.     }
  71.    
  72.     return optimal_outputs
  73. # 步骤 4: 主程序 - 运行仿真
  74. def main_simulation(wind_forecast, load_forecast, adjustable_load_params, params):
  75.     # 运行第一阶段优化
  76.     optimal_adjustable_load = stage_one_optimization(wind_forecast, load_forecast, adjustable_load_params)
  77.    
  78.     # 运行第二阶段优化
  79.     optimal_outputs = stage_two_optimization(wind_forecast, load_forecast, optimal_adjustable_load, params)
  80.    
  81.     # 输出优化结果
  82.     print("Optimal Adjustable Load:", optimal_adjustable_load)
  83.     print("Optimal Outputs:", optimal_outputs)
  84. # 步骤 5: 初始化参数和数据
  85. # 这里需要根据实际数据初始化风电预测、负荷预测、可调节负荷参数和系统参数
  86. wind_forecast = np.array([...])
  87. load_forecast = np.array([...])
  88. adjustable_load_params = {'max': ...}
  89. params = {
  90.     'thermal_units': [...],
  91.     'storage_units': [...],
  92.     'pumped_storage_units': [...],
  93.     'thermal_cost': ...,
  94.     'storage_cost': ...
  95. }
  96. # 运行仿真
  97. main_simulation(wind_forecast, load_forecast, adjustable_load_params, params)
复制代码
注释解释:

请留意,上述代码是一个伪代码示例,实际实现时需要根据详细的数据集布局和电网束缚条件举行相应的调整。
 本专栏栏目提供文章与步伐复现思路,详细已有的论文与论文源步伐可翻阅本博主免费的专栏栏目《论文与完备步伐》
论文与完备源步伐_电网论文源步伐的博客-CSDN博客
https://blog.csdn.net/liang674027206/category_12531414.html
电网论文源步伐-CSDN博客电网论文源步伐擅长文章解读,论文与完备源步伐,等方面的知识,电网论文源步伐关注python,机器学习,计算机视觉,深度学习,神经网络,数据挖掘领域.
https://blog.csdn.net/LIANG674027206?type=download

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4