news 2026/6/20 1:22:13

基于双层优化的综合能源系统规划设计:微网多电源容量优化配置

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于双层优化的综合能源系统规划设计:微网多电源容量优化配置

基于双层优化的综合能源系统规划设计 采用kkt条件,大M法,对偶理论求解 代码注释齐全,cplex求解 良心代码,适合新手学习。 主要内容:微网的多电源容量优化配置,规划出最佳的微电网光伏、风电、储能等多电源的容量配置方案,此外,代码采用双层模型,上层以周期内运维成本以及投资成本之和最低为目标函数,下层则以调度周期内购售电成本以及燃料成本最低为目标函数,上层得出最佳容量配置方案,下层得出最佳运行策略。

在综合能源系统规划设计里,微网的多电源容量优化配置是个关键问题。今天咱就来讲讲基于双层优化的方法,还会带大家看用cplex求解的代码,新手友好哦!

一、整体思路

采用双层模型,上层目标是让周期内运维成本和投资成本之和最低,下层则追求调度周期内购售电成本以及燃料成本最低。上层确定最佳容量配置方案,下层得出最佳运行策略。

二、求解方法

这里用到了KKT条件、大M法和对偶理论。KKT条件能帮我们找到满足最优解的必要条件;大M法是处理约束条件转换的好帮手;对偶理论则从另一个角度辅助我们求解复杂的优化问题。

三、代码实现(Python + cplex)

import cplex # 定义常量 num_periods = 24 # 调度周期时长,假设为24小时 num_sources = 3 # 电源种类数,光伏、风电、储能 # 成本参数 investment_cost = [1000, 1500, 2000] # 光伏、风电、储能每单位容量投资成本 operation_cost = [10, 15, 20] # 光伏、风电、储能每单位容量运维成本 purchase_price = 0.5 # 购电价格 sale_price = 0.3 # 售电价格 fuel_cost = 0.4 # 燃料成本 # 创建cplex模型 model = cplex.Cplex() # 上层变量:电源容量配置 upper_vars = [] for i in range(num_sources): var_name = "capacity_{}".format(i) model.variables.add(names=[var_name], lb=[0.0], types=[model.variables.type.continuous]) upper_vars.append(var_name) # 下层变量:各时段的发电量、购电量、售电量等 lower_vars = [] for t in range(num_periods): for i in range(num_sources): gen_name = "generation_{}_{}".format(i, t) model.variables.add(names=[gen_name], lb=[0.0], types=[model.variables.type.continuous]) lower_vars.append(gen_name) purchase_name = "purchase_{}".format(t) model.variables.add(names=[purchase_name], lb=[0.0], types=[model.variables.type.continuous]) lower_vars.append(purchase_name) sale_name = "sale_{}".format(t) model.variables.add(names=[sale_name], lb=[0.0], types=[model.variables.type.continuous]) lower_vars.append(sale_name) # 上层目标函数:运维成本与投资成本之和最低 upper_obj = [] for i in range(num_sources): upper_obj.append((upper_vars[i], investment_cost[i] + operation_cost[i])) model.objective.set_linear(upper_obj) model.objective.set_sense(model.objective.sense.minimize) # 下层目标函数:购售电成本与燃料成本最低 lower_obj = [] for t in range(num_periods): for i in range(num_sources): gen_name = "generation_{}_{}".format(i, t) lower_obj.append((gen_name, fuel_cost)) purchase_name = "purchase_{}".format(t) lower_obj.append((purchase_name, purchase_price)) sale_name = "sale_{}".format(t) lower_obj.append((sale_name, -sale_price)) model.objective.set_linear(lower_obj) # 约束条件(这里简单示例功率平衡约束) for t in range(num_periods): constraint_expr = [] for i in range(num_sources): gen_name = "generation_{}_{}".format(i, t) constraint_expr.append((gen_name, 1)) purchase_name = "purchase_{}".format(t) constraint_expr.append((purchase_name, 1)) sale_name = "sale_{}".format(t) constraint_expr.append((sale_name, -1)) model.linear_constraints.add(lin_expr=[cplex.SparsePair(ind=[var for var, _ in constraint_expr], val=[val for _, val in constraint_expr])], senses=["E"], rhs=[0]) # 求解模型 model.solve() # 输出结果 print("上层最佳容量配置方案:") for i, var in enumerate(upper_vars): print("电源 {} 的容量: {}".format(i, model.solution.get_values(var))) print("下层最佳运行策略:") for t in range(num_periods): print("时段 {}:".format(t)) for i in range(num_sources): gen_name = "generation_{}_{}".format(i, t) print("电源 {} 的发电量: {}".format(i, model.solution.get_values(gen_name))) purchase_name = "purchase_{}".format(t) print("购电量: {}".format(model.solution.get_values(purchase_name))) sale_name = "sale_{}".format(t) print("售电量: {}".format(model.solution.get_values(sale_name)))

代码分析

  1. 参数定义:先设定了调度周期时长、电源种类数,以及各种成本参数,这些都是模型计算的基础数据。
  2. 变量创建:分上层和下层分别创建变量。上层变量是各电源的容量配置,下层变量包括各时段各电源发电量、购电量和售电量。
  3. 目标函数设定:上层目标是让投资和运维成本之和最小,下层是让购售电和燃料成本最小。通过向cplex模型添加线性表达式来设定目标函数。
  4. 约束条件:这里简单写了个功率平衡约束,就是在每个时段,发电量加上购电量要等于售电量,以此维持电力系统的平衡。实际应用中可能还有更多复杂约束。
  5. 求解与结果输出:调用cplex的求解方法,然后把上层的最佳容量配置方案和下层的最佳运行策略打印出来,方便查看结果。

这样基于双层优化的微网多电源容量优化配置就实现啦,希望新手小伙伴能从中学到东西,一起探索综合能源系统规划设计的更多奥秘!

基于双层优化的综合能源系统规划设计 采用kkt条件,大M法,对偶理论求解 代码注释齐全,cplex求解 良心代码,适合新手学习。 主要内容:微网的多电源容量优化配置,规划出最佳的微电网光伏、风电、储能等多电源的容量配置方案,此外,代码采用双层模型,上层以周期内运维成本以及投资成本之和最低为目标函数,下层则以调度周期内购售电成本以及燃料成本最低为目标函数,上层得出最佳容量配置方案,下层得出最佳运行策略。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/18 17:55:41

孕产行业AI智能体开发公司哪家可靠?玄微子AI智能体成优选

随着孕产行业规模持续扩大,新生代父母对品质化、智能化服务的需求激增,AI智能体已成为孕产机构提升核心竞争力的关键。但市场上AI智能体开发公司良莠不齐,如何筛选出适配孕产行业需求、技术可靠的合作伙伴,成为众多机构的核心痛点…

作者头像 李华
网站建设 2026/6/18 2:19:16

5个最火AI绘画镜像推荐:0配置开箱即用,10块钱全试遍

5个最火AI绘画镜像推荐:0配置开箱即用,10块钱全试遍 引言:为什么你需要这些AI绘画镜像? 作为一名新媒体运营,每天最头疼的就是给公众号找配图。传统图库要么版权贵,要么风格单一;自己设计又费…

作者头像 李华
网站建设 2026/6/18 13:27:39

IDEA集成CURSOR开发效率提升秘籍

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 构建一个IDEA集成CURSOR应用,重点展示快速开发流程和效率优势。点击项目生成按钮,等待项目生成完整后预览效果 作为一名长期使用IDEA进行开发的程序员&…

作者头像 李华
网站建设 2026/6/16 13:03:01

TERMUX实战:5个必装工具提升移动办公效率

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个TERMUX应用集合包,包含:1. SSH远程连接工具配置 2. SFTP文件传输方案 3. Vim代码编辑器优化配置 4. Python开发环境 5. 网络诊断工具集。要求提供完…

作者头像 李华
网站建设 2026/6/17 7:45:48

AI如何自动检测和修复XSS漏洞?

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个能够自动检测和修复XSS漏洞的AI工具。该工具应能扫描HTML、JavaScript代码,识别潜在的XSS漏洞(如未转义的输入、不安全的DOM操作等)&am…

作者头像 李华
网站建设 2026/6/12 11:35:27

1小时验证创意:免费域名+快马快速建站

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个快速建站原型工具,整合:1.免费域名注册模块 2.网站模板库 3.拖拽式编辑器 4.一键部署功能 5.基础SEO设置。要求能在30分钟内完成简单网站创建&…

作者头像 李华