考虑光伏出力利用率的电动汽车充电站能量调度策略。 程序注释非常非常详细 针对间歇性能源利用的问题构建电动汽车的充放电灵活度指标用以评估电动汽车参与光伏充电站能量调度的能力 令充电站在饥饿模式或饱和模式下运行并根据当前运行模式采用不同的电动汽车准入规则以最大化光伏输出利用率和充电任务完成率为目标根据电动汽车充放电灵活度动态制定电价在提升光伏利用率的同时减少发电量波动带来的影响。 主要贡献如下 A 提出了充电/放电灵活性评估 EV 参与能源调度的能力。 充分利用 V2G 服务加强了电动汽车与充电站的合作。 B考虑到充电站与主电网隔离。 PCS 根据 EV 的灵活性动态地确定 PV 的使用并在增加 PV 利用率的同时减少 PV 输出波动的影响。 C. PCS 可以在缺电模式或饱和模式下工作并根据当前工作模式采用不同的 EV 准入控制机制。 这段程序主要是对电动车充电行为进行调度和优化的程序。下面我会逐步解释代码的功能和工作流程。 首先程序开始时使用clear和clc命令来清除工作区和命令窗口的内容。 接下来通过load函数加载了三个文件dayev、evfile和pvFuture。这些文件包含了电动车的数据、电动车充电档案和未来光伏发电的预测数据。 然后定义了一些变量和参数 - pvFlu表示光伏出力的波动范围为0.2。 - p1和p2分别表示光伏电价系数和基础电价。 - EVnum表示电动车数量通过对dayev求和得到。 - time表示每个时间段为半小时总共12小时。 接下来初始化了一些变量 - originFile用于保存原始的电动车充电档案。 - curFile用于保存当前时间段的电动车充电档案。 - preFile用于保存已离网的电动车充电档案。 - waitFile用于保存等待接收的电动车充电档案。 - acpLine是一个2xtime的矩阵用于记录电动车的接收情况。 - scheLine是一个EVnumxtime的矩阵用于记录电动车的充放电行为。 - pvUseLine是一个time x 8的矩阵用于记录每个时间段光伏的使用情况。 接下来是程序的主要部分我会逐步解释每个部分的功能和工作流程。 1. 初始时刻的求解 - 设置当前时间为Tcur1。 - 将当前时间段的电动车充电档案保存到curFile中。 - 调用getFlexLine函数获取电动车的灵活性线。 - 根据灵活性线的大小计算电动车需求电量的变动范围并保存到capTrans中。 - 计算光伏的最大使用量pvUseMax取决于光伏安全用量和光伏预测值下限。 - 限制光伏使用量不超过光伏预测值保存到pvUseLine中。 - 根据光伏使用量计算时变电价price。 - 调用CvxSchedule函数求解调度方案schedule。 - 更新当前时间段的电动车充电档案和充放电行为记录。 2. 对于Tcur2到time的每个时间段 - 更新当前时间段的电动车充电档案将已到达离网时间的电动车切出。 - 计算当前时间段电动车充电档案的电量富余情况。 - 更新当前时间段的电动车充电档案接收符合条件的等待电动车。 - 更新光伏使用量计算时变电价。 - 求解调度方案更新电动车充电档案和充放电行为记录。 最后绘制了三个图表 - figure(1)绘制了光伏使用量和电动车充放电行为的曲线图。 - figure(2)绘制了电动车充放电行为的甘特图。 - figure(3)绘制了电动车充放电行为的总和。 这段程序涉及到的知识点包括文件加载、变量定义和初始化、矩阵操作、循环、条件判断、函数调用、数据计算和图表绘制等。一、整体功能概述本代码实现了一种考虑光伏出力利用率的电动汽车充电站能量调度策略旨在解决间歇性能源利用问题。通过构建电动汽车充放电灵活度指标评估电动汽车参与光伏充电站能量调度的能力使充电站在不同模式下运行并根据模式采用不同准入规则以最大化光伏输出利用率和充电任务完成率为目标动态制定电价在提升光伏利用率的同时减少发电量波动影响。二、核心模块及代码解读1. 充放电灵活度评估模块该模块用于量化电动汽车参与能源调度的能力为后续调度策略提供基础依据。getRange.m函数计算单辆电动汽车在调度窗口内的电量边界。输入初始电量iniCap、目标电量finCap和调度时长time输出两条曲线即topLine最大充电电量上限和botLine最小放电电量下限清晰界定每时刻电动汽车的电量波动范围以此作为评估其充放电灵活度的基础数据。writeList.m函数基于电量边界穷举所有可行的充放电序列。采用递归方式从初始电量出发按照时间步遍历每时刻允许的充放电功率该功率范围由getRange.m函数确定将所有合法的充放电序列存入全局变量charList为灵活度的具体计算提供丰富的数据支撑。getFlexLine.m函数汇总所有电动汽车的充放电灵活度生成整体灵活度曲线。输入当前待调度电动汽车数据evfile与当前时刻Tcur对每辆电动汽车调用writeList.m函数获取其充放电序列进而计算每时刻的平均充电上限allFlexLine(1,:)与平均放电下限allFlexLine(2,:)形成能够反映整体电动汽车群体参与调度能力的灵活度指标。2. 光伏用量与电价计算模块该模块根据电动汽车灵活度与光伏预测数据确定光伏最大可用量与动态电价以平衡光伏利用与成本控制。相关逻辑主要集成在main.m主程序中光伏最大用量pvUseMax的确定综合考虑两个约束条件。一是“灵活度约束”capTrans/pvFlu其中capTrans为电动汽车需求变动范围pvFlu为光伏波动系数此约束确保光伏出力波动能够被电动汽车的灵活度所抵消二是“预测值约束”取值范围在0.8*pvFuture至pvFuture之间避免超出预测范围使用光伏。动态电价price的计算方式为基础电价p2减去光伏利用补贴p1*(pvUseMax/sum(pvUseMax))即光伏可用量越高电价越低以此引导电动汽车在光伏充裕时段进行充放电提高光伏利用率。3. 充放电优化调度模块该模块通过凸优化求解最优充放电计划实现“最大化光伏利用最小化用电成本”的双目标。考虑光伏出力利用率的电动汽车充电站能量调度策略。 程序注释非常非常详细 针对间歇性能源利用的问题构建电动汽车的充放电灵活度指标用以评估电动汽车参与光伏充电站能量调度的能力 令充电站在饥饿模式或饱和模式下运行并根据当前运行模式采用不同的电动汽车准入规则以最大化光伏输出利用率和充电任务完成率为目标根据电动汽车充放电灵活度动态制定电价在提升光伏利用率的同时减少发电量波动带来的影响。 主要贡献如下 A 提出了充电/放电灵活性评估 EV 参与能源调度的能力。 充分利用 V2G 服务加强了电动汽车与充电站的合作。 B考虑到充电站与主电网隔离。 PCS 根据 EV 的灵活性动态地确定 PV 的使用并在增加 PV 利用率的同时减少 PV 输出波动的影响。 C. PCS 可以在缺电模式或饱和模式下工作并根据当前工作模式采用不同的 EV 准入控制机制。 这段程序主要是对电动车充电行为进行调度和优化的程序。下面我会逐步解释代码的功能和工作流程。 首先程序开始时使用clear和clc命令来清除工作区和命令窗口的内容。 接下来通过load函数加载了三个文件dayev、evfile和pvFuture。这些文件包含了电动车的数据、电动车充电档案和未来光伏发电的预测数据。 然后定义了一些变量和参数 - pvFlu表示光伏出力的波动范围为0.2。 - p1和p2分别表示光伏电价系数和基础电价。 - EVnum表示电动车数量通过对dayev求和得到。 - time表示每个时间段为半小时总共12小时。 接下来初始化了一些变量 - originFile用于保存原始的电动车充电档案。 - curFile用于保存当前时间段的电动车充电档案。 - preFile用于保存已离网的电动车充电档案。 - waitFile用于保存等待接收的电动车充电档案。 - acpLine是一个2xtime的矩阵用于记录电动车的接收情况。 - scheLine是一个EVnumxtime的矩阵用于记录电动车的充放电行为。 - pvUseLine是一个time x 8的矩阵用于记录每个时间段光伏的使用情况。 接下来是程序的主要部分我会逐步解释每个部分的功能和工作流程。 1. 初始时刻的求解 - 设置当前时间为Tcur1。 - 将当前时间段的电动车充电档案保存到curFile中。 - 调用getFlexLine函数获取电动车的灵活性线。 - 根据灵活性线的大小计算电动车需求电量的变动范围并保存到capTrans中。 - 计算光伏的最大使用量pvUseMax取决于光伏安全用量和光伏预测值下限。 - 限制光伏使用量不超过光伏预测值保存到pvUseLine中。 - 根据光伏使用量计算时变电价price。 - 调用CvxSchedule函数求解调度方案schedule。 - 更新当前时间段的电动车充电档案和充放电行为记录。 2. 对于Tcur2到time的每个时间段 - 更新当前时间段的电动车充电档案将已到达离网时间的电动车切出。 - 计算当前时间段电动车充电档案的电量富余情况。 - 更新当前时间段的电动车充电档案接收符合条件的等待电动车。 - 更新光伏使用量计算时变电价。 - 求解调度方案更新电动车充电档案和充放电行为记录。 最后绘制了三个图表 - figure(1)绘制了光伏使用量和电动车充放电行为的曲线图。 - figure(2)绘制了电动车充放电行为的甘特图。 - figure(3)绘制了电动车充放电行为的总和。 这段程序涉及到的知识点包括文件加载、变量定义和初始化、矩阵操作、循环、条件判断、函数调用、数据计算和图表绘制等。CvxSchedule.m函数调用CVX工具包进行凸优化求解。优化目标设定为最小化总用电成本sum(((pricez).^2))其中z为总充放电功率。同时设置了多项约束条件包括光伏用量约束zpvUseMax且z0、电动汽车离网约束离网后充放电功率为0、电量边界约束每时刻电动汽车电量在Ezero与Ecap之间、目标电量约束离网时电量不低于Efin以及功率约束充放电功率在Pdis至Pchar之间。最终输出每辆电动汽车当前时刻的最优充放电功率schedule为实际调度提供指导。4. 运行模式与电动汽车准入控制模块该模块根据光伏供给与电动汽车需求的匹配关系切换充电站运行模式并采用差异化的准入规则保障调度效率。核心逻辑集成在main.m主程序中按时刻循环执行模式判断计算当前光伏供给supplysum(0.8*pvFuture)与电动汽车总需求demandsum(curFile(2,:)-curFile(1,:))若supplydemand则判定为饱和模式若supply则判定为饥饿模式。准入规则在饱和模式下优先接收所有待接入的电动汽车当leftSupplysubDemand时接入subDemand为单辆电动汽车的需求以充分利用光伏资源在饥饿模式下仅接入需求较小的电动汽车优先保障已接入电动汽车的充电任务。同时通过acpLine记录各时刻电动汽车的接入acpLine(1,:)与拒绝acpLine(2,:)数量为后续调度效果分析提供数据。5. 结果可视化与对比模块该模块通过图表展示调度结果直观对比优化策略与自然充电策略的差异。EVgante.m函数生成电动汽车充放电甘特图。横轴表示时间纵轴表示电动汽车编号绿色矩形表示充电状态红色矩形表示放电状态清晰呈现每辆电动汽车在不同时刻的充放电情况便于对调度过程进行追溯。main.m主程序中的绘图逻辑对比优化调度scheLine与自然充电natureSche由natureCharge.m函数生成的总功率曲线z1与z2同时展示光伏用量曲线pvUseLine与电动汽车充放电功率曲线直观评估光伏利用效果。natureCharge.m函数生成自然充电基准策略。假设电动汽车在到达充电站originEV(3,j)后以最大功率3单位充电至满电15单位不考虑光伏与灵活度因素作为优化策略的对比基准。三、整体调度流程基于main.m主程序代码按照“时刻循环”的方式执行调度从Tcur1至Tcur24每时刻为半小时共12小时具体流程如下初始初始化加载光伏预测数据pvFuture、电动汽车全天数据evfile与分时到达数据dayev初始化调度记录矩阵scheLine、acpLine等。时刻调度- 步骤1更新当前待调度电动汽车列表curFile移除已离网的电动汽车curFile(4,point)加入新到达待接入的电动汽车waitFile。- 步骤2调用getFlexLine.m函数计算当前电动汽车群体的充放电灵活度flexLine。- 步骤3基于灵活度与光伏预测计算光伏最大用量pvUseMax与动态电价price。- 步骤4调用CvxSchedule.m函数求解最优充放电计划schedule并更新电动汽车电量与调度记录。结果输出调度结束后生成充放电对比曲线figure1、电动汽车充放电甘特图figure2与总功率曲线figure3输出电动汽车接入/拒绝记录acpLine。四、关键参数说明代码中的关键参数对调度效果起着决定性作用需根据实际场景进行调整核心参数如下参数名称含义代码中的默认值/作用位置pvFlu光伏出力波动系数main.m默认0.2值越小对电动汽车灵活度要求越高p1/p2光伏补贴系数/基础电价main.m默认均为1调节电价对光伏利用的引导强度Pchar/Pdis最大充/放电功率单位kWCvxSchedule.m默认2/-2限制电动汽车单时刻功率capSize电动汽车电池容量单位kWhCvxSchedule.m默认15决定电动汽车电量上限maxCap/minCap电动汽车充放电电量上下限单位kWhgetRange.m默认10/2限制电动汽车电量波动范围