目录

1 模拟大规模充电汽车充电行为

2 Matlab部分代码

3 Matlab代码实现 ​


1 模拟大规模充电汽车充电行为

电动汽车EV(Electric Vehicle)具有清洁环保、高效节能的优点,不仅能缓解化石能源危机,而且能够有效地减少温室气体的排放。2015年10月,国务院发布加快EV充电基础设施建设的指导意见,指出到2020年充电基础设施能满足500万辆EV充电需求,预计未来几年我国EV的保有量将大幅增长。然而,规模化EV的无序充电会加大电网负荷的峰谷差,并对电力系统的规划、配电网的电能质量和经济运行以及稳定性带来显著的影响,反之.对EV的充电行为进行有序优化控制,充分发挥EV作为分布式储能元件的优势,能够实现削峰填谷、平抑可再生能源出力波动的功能,并为电网提供调峰、调频等辅助服务。

下图为大规模EV分散接入配电网的场景示意图。EV的管理框架分为配电网代理商、本地代理商和EV 3个层次。配电网代理商分布在高中压HVIMV(High VoltageMedium Voltage)变电层中,负责配电网的安全稳定控制以及EV的有序协调控制;本地代理商分布在中低压MVLV(Mediuim VoltageLow Voltage)变电层中,负责区域EV充电负荷的管控。充电站连接在配电变压器下,配电变压器下除了EV负荷EVL(EV Load)外,还有常规的居民负荷RL(Residential Load)。

EV进入充电站后,充电智能终端可以获取电池的总容量、荷电状态SoC(State Of Charge)等信息,并通过以太网或专用无线网络提交给本地代理商;用户设置取车时刻以及充电预期荷电状态,充电结束后按实际充电电量向本地代理商支付费用。本地代理商将EV的状态信息和电量需求信息汇集后上传给配电网代理商。配电网代理商采取分时段实时滚动优化的控制策略,当有新的EV接入电网时,更新EV的充电需求信息,执行优化,控制算法,并将充电计划分区下达给各个本地代理商,由本地代理商执行对管控区域内EV的充电控制。


2 Matlab部分代码实现

function [will_charge, best_prior, best_idx] = ...CalChargingPrior(is_necessary, cur_soc, arrMCost, ...pindex_start, pindex_end)global TOU_EPriceglobal solutionsglobal battery_features% debug by feiif (pindex_end - pindex_start + 1) < battery_features.fcharge_periodserrorend% 优先权重系数if solutions.start_charging == 4    %如果是组合策略,用上所有系数W = solutions.w_coeff;% 剩余SOC/最低SOCu_s = 1.5 - cur_soc / battery_features.lowest_soc;elseW = zeros(1, 4);W(solutions.start_charging) = 1;W(4) = 1;end% 是否必须充电if is_necessaryu_s = 10000;    %infelseu_s = 0;endnPrior = length(arrMCost);% 从某个时刻开始充电的平均电价:元/(瓦*时段)%arrMCost = [];% TOC平均电价:元/(瓦*时段)nMTOC = TOU_EPrice.mprice;% 充电需用时段nTch = single( battery_features.fcharge_periods );% 剩余空闲时段nTidle = pindex_end - pindex_start + 1;arrTidle = single(nTidle) : -1 : nTch;% 随机优先 [0 1]nRndPr = round(rand);arrRndPr = single( nRndPr * rand(1, nPrior) );% 计算不同时段的充电优先程度arrPrior = W(1)*arrRndPr + ...W(2)*(1.5 - arrMCost ./ nMTOC) + ...W(3)*(1.5 - nTch ./ arrTidle) + ...u_s + W(4);% 最优充电级别与时段[p, i] = max(arrPrior);best_prior = p;best_idx = pindex_start + i - 1;% 是否建议充电will_charge = (best_prior > 0.5);
end
% 根据不同策略,计算起始充电时段
function [start_cperiod, end_cperiod] = CalChargingPeriods(is_necessary, cur_soc, ...pindex_start, pindex_end)%global solutionsglobal battery_features%global mc_params%global TOU_EPrice% 初始参数start_cperiod = 0;end_cperiod = 0;earliest = pindex_start;latest = pindex_end - battery_features.fcharge_periods + 1;% 计算从某一时段起充电所需平均电价arrMCost = CalChargePrices(earliest:latest);% 根据策略,计算每一时段充电优先级[will_charge, best_prior, best_idx] = ...CalChargingPrior(is_necessary, cur_soc, arrMCost, pindex_start, pindex_end);% 计算策略下的最佳充电起止时间if will_chargestart_cperiod = best_idx;end_cperiod = start_cperiod + battery_features.fcharge_periods - 1;endend
% m_w_load: 一天中电网各时段负荷平均值,periods_per_day X mean_load
% m_w_charged: 一天中EV各时段充电平均值,periods_per_day X mean_charge
% m_real_trv:一天中EV各时段出行次数平均值,periods_per_day X mean_real_travel
% m_plan_trv:一天中EV各时段计划出行次数平均值,periods_per_day X mean_plan_travel
function [Y, Rmp, Rsc, Rt] = CalIndices(m_w_load, m_w_charged, ...m_real_trv, m_plan_trv, is_print)global TOU_EPrice%     W1 + W2 + W3 = 1.0
%     W1 * 0.275 = W2 * 0.440 = W3 * 0.975 = Si
%
%     Mi = [0.275 0.440 0.975]
%     Wi = [0.5455    0.3409    0.1538]
%     Si = [0.15 0.15 0.15]% 指标统计范围 及 权重系数RAGmp = [0.05 0.25];    RAGsave=[0.15 0.75];   RAGtrip=[0.95 1.0];Wi = [0.4 0.3 0.3];% 谷峰比 = 充电谷值/充电峰值
%     nWValley = min(m_w_load);
%     nWPeak = max(m_w_load);
%     Rpv = nWValley / nWPeak;% 均峰比 = 充电均值/充电峰值nWMeanLoad = mean(m_w_load);nWPeakLoad = max(m_w_load);Rmp = nWMeanLoad / nWPeakLoad;% 用户节省电费率 = 1 - 实际电费/最高电费nRealCost = sum(m_w_charged .* TOU_EPrice.day_prices);nMaxCost = sum(m_w_charged .* max(TOU_EPrice.day_prices));Rsc = 1 - nRealCost / nMaxCost;% 顺利出行率 = 实际里程/计划里程nRealTrv = sum(m_real_trv);nPlanTrv = sum(m_plan_trv);Rt = nRealTrv / nPlanTrv;%     Rmp = 0.218;
%     Rsc = 0.193;
%     Rt = 0.972;% 综合指标:均峰比,节能率,出行率Y = Wi(1) * (Rmp - min(RAGmp)) / (max(RAGmp) - min(RAGmp)) + ...Wi(2) * (Rsc - min(RAGsave)) / (max(RAGsave) - min(RAGsave)) + ...Wi(3) * (Rt - min(RAGtrip)) / (max(RAGtrip) - min(RAGtrip));if isnan(Y)Y = 0.0;end% 输出结果if is_printfprintf('----电网负荷:峰值= %d 瓦;均值= %d 瓦;均峰比= %f----\n', nWPeakLoad, nWMeanLoad, Rmp);fprintf('----居民用电费用:实际电费= %f 元;最高电费= %d 元;节省率= %f----\n', nRealCost, nMaxCost, Rsc);fprintf('----顺利出行情况:实际出行里程= %f 公里;计划出行里程= %d 公里;出行率= %f----\n', nRealTrv, nPlanTrv, Rt);fprintf('----综合指标:Y= %f----\n', Y);end
end
function [all_indices, mday_indices] = EVPowerLoad(varargin)global solutionsglobal mc_params%% 初始化变量[nTerms, nEVs] = Initial(varargin);%% 模拟 n天 m辆电动汽车if ~mc_params.only_show_resultsfor t=1:nTerms
%           for ev_id=1:total_EVall_indices = Simulate(t);
%             endendend%% 结果统计: 峰谷差,出行受影响概率,充电价格,加入噪声出行等result = TempResult('load');[grid, ev_behaviour, mday_indices] = StatisticPowerLoad(result);
end%% initial parameters
function [nTerms, nEVs] = Initial(params)%% 定义常量global mc_params            % MC 参数global battery_features     % 电池特性global pile_power           % 电桩特性global solutions            % 策略global behaviours           % 一天用户行为(EVs X Day_Periods)%global all_behaviours     % 所有统计时间的用户行为(EVs X All_Periods)global t_periods            % 所有统计时段global g2v_features           % 充电特性global TOU_EPrice         % 分时电价global PDF_Travel           % 服从一定概率分布的出行行为%% 指定参数运行if size(params, 2) > 0nTerms = params{1};nDaysPT = params{2};nEVs = params{3};chargingStrategy = params{4};chargingWCoeff = params{5};chargingMinSOC = params{6};isOutput = params{7};% 用于存储中间结果,而不用保存成文件saveResult = false;showResultOnly = false;else  % default values%     clear allclcclose all% 自定义参数值nTerms = 4;nDaysPT = 25;nEVs = 240000;             %EV数量: 2800 5000 62500 240000chargingStrategy = 4;chargingWCoeff = [0.1512,0.7384,0.1105,0.0196];%ones(1, 4) * 0.25;chargingMinSOC = 0.5686;%0.2;isOutput = true;saveResult = true;         %default:true;showResultOnly = true;      %default:false;seed=15;randn('state',seed);rand('state',seed);end%% 初始化常量mc_params.output = isOutput;                            %是否输出结果mc_params.cur_day = 1;                                 %当前天数%mc_params.cur_ev = 1;                                   %当前汽车IDmc_params.periods_per_day = 96;                           %一天划分为若干时段mc_params.total_days = nDaysPT;                               %每期模拟天数mc_params.all_days = nTerms * mc_params.total_days;       %总共模拟天数mc_params.mins_per_period = (24 * 60) / ...mc_params.periods_per_day;  %每个时段的时长mc_params.total_periods = mc_params.periods_per_day * ...(mc_params.total_days + 1);       %时段总数mc_params.total_EVs = nEVs;mc_params.cperiod_start_id = 0;mc_params.cperiod_end_id = 0;mc_params.cperiods = [];mc_params.eday_soc = ones(nEVs, 1, 'single');          %初始所有EV的SOC为1.0mc_params.save_result = saveResult;mc_params.memory_result = [];                           %用于存储中间结果,而不用保存成文件mc_params.only_show_results = showResultOnly;           %只输出统计结果battery_features.capacity = 100;                        %电池容量battery_features.voltage = 230;                         %电池电压battery_features.power = battery_features.capacity * ...battery_features.voltage;      %电池总能量battery_features.efficiency = 0.3;                      %充电效率battery_features.fcharge_duration = 5;                  %充满时间battery_features.full_soc = 0.9;                        %soc > 此状态,即认为电池充满battery_features.lowest_soc = chargingMinSOC;           %soc < 此状态,必须充电battery_features.power_consume_per_km = 0.125e3;        %耗能% 满充所需分钟数 及 时段数battery_features.fcharge_minutes = battery_features.fcharge_duration * 60;battery_features.fcharge_periods = ceil( battery_features.fcharge_minutes / mc_params.mins_per_period );pile_power = 15e3;                                      %充/放电功率solutions.start_charging = chargingStrategy;            %起始充电策略:1.随机充电;2.电价引导充电;3.停车即充电;4.组合策略solutions.w_coeff = chargingWCoeff;                     %各种充电影响因素的权重solutions.enable_discharge = false;                     %允许V2G的放电模式% 电动汽车类型%EV_type = {'bus', 'taxis', 'official_car', 'private_car'};% 1 X (模拟天数 * 每天时段数)t_periods = CreatePeriods();% 计算每时段电网耗用能量 (Wh)g2v_features.grid_w_consumed = mc_params.mins_per_period / 60 * pile_power;% 计算每时段EV所充能量 (Wh)g2v_features.ev_w_charged = g2v_features.grid_w_consumed * battery_features.efficiency;% 加载分时电价表TOU_EPrice = CreateEPriceList();% 清除结果数据if ~mc_params.only_show_resultsClearResults();end% 加载概率密度函数load './data/fitness_travel.mat';PDF_Travel = pdf_travel;
end%% simulate one day
function all_indices = Simulate(t)global mc_paramsglobal behaviours%global t_periodsmc_params.cur_day = t;%mc_params.cur_ev = ev_id;%w_day = mod( (d-1), 7 );%% clear all behavioursClearAllBehaviours();%fprintf('-----模拟第 %d 天-----\n', mc_params.cur_day);%% make the driving & charging plan for all daysMakeDaysPlan();%% update all EVsUpdateEVs();%% formating data[grid, ev_behaviour, y_indices] = StatDataFormat();%% combine data of everydayall_indices = CombineData(grid, ev_behaviour, y_indices);%% update paramsUpdateMCParams();
endfunction all_periods = CreatePeriods()global mc_params% construct the period arrayall_periods = int32( 0 : (mc_params.total_periods - 1) ) * ...mc_params.mins_per_period;
endfunction ClearAllBehaviours()global behaviours% init array for EV behavioursbehaviours = [];behaviours.v_is_driving = logical([]);behaviours.v_plan_driving = logical([]);behaviours.v_driving_km_pp = single([]);behaviours.v_driving_cost_power = single([]);behaviours.v_able_charge = logical([]);behaviours.v_is_charging = logical([]);behaviours.v_ev_w_charged = single([]);behaviours.v_ev_w_discharged = single([]);behaviours.grid_power_load = single([]);behaviours.soc = single([]);
endfunction ClearResults()global mc_paramsglobal solutionsndays = mc_params.all_days;% init & save temporary dataresult.grid.power_load = zeros(ndays, mc_params.periods_per_day, 'single');result.grid.power_charged = zeros(ndays, mc_params.periods_per_day, 'single');result.grid.power_V2G = zeros(ndays, mc_params.periods_per_day, 'single');result.ev_behaviour.trv_num_per_period = zeros(ndays, mc_params.periods_per_day, 'int32');result.ev_behaviour.plan_trv_num_per_period = zeros(ndays, mc_params.periods_per_day, 'int32');result.ev_behaviour.cha_num_per_period = zeros(ndays, mc_params.periods_per_day, 'int32');result.ev_behaviour.dischar_num_per_period = zeros(ndays, mc_params.periods_per_day, 'int32');result.y_indices = zeros(ndays, 1, 'single');TempResult('save', result);clear 'result';
endfunction all_indices = CombineData(grid, ev_behaviour, y_indices)global behaviours%global all_behavioursglobal solutionsglobal mc_paramsndays = mc_params.all_days;cur_day = ((mc_params.cur_day - 1) * mc_params.total_days + 1) : ...mc_params.cur_day * mc_params.total_days;% 加载临时数据result = TempResult('load');% 合并每天的电网负荷及EV行为result.grid.power_load(cur_day, :) = grid.power_load;result.grid.power_charged(cur_day, :) = grid.power_charged;result.grid.power_V2G(cur_day, :) = grid.power_V2G;result.ev_behaviour.trv_num_per_period(cur_day, :) = ev_behaviour.trv_num_per_period;result.ev_behaviour.plan_trv_num_per_period(cur_day, :) = ev_behaviour.plan_trv_num_per_period;result.ev_behaviour.cha_num_per_period(cur_day, :) = ev_behaviour.cha_num_per_period;result.ev_behaviour.dischar_num_per_period(cur_day, :) = ev_behaviour.dischar_num_per_period;result.y_indices(cur_day, :) = y_indices;% save temporary dataTempResult('save', result);% clear data from memoryall_indices = result.y_indices;clear 'result';
endfunction UpdateMCParams()global mc_paramsglobal behaviours% clear mc pramsmc_params.total_periods = mc_params.periods_per_day * ...(mc_params.total_days + 1);       %时段总数mc_params.cperiod_start_id = 0;mc_params.cperiod_end_id = 0;mc_params.cperiods = [];% record soc for all EVs when one day is endingmc_params.eday_soc = behaviours.soc(:, end);
end
function [is_necessary, soc_start] = IsNecessaryCharge(ev_id, pindex_start, pindex_end)%global behavioursglobal battery_features% soc低于0.2时必须充电soc_start = GetPreviousSOC(ev_id, pindex_start);is_necessary = (soc_start < battery_features.lowest_soc);
end

电动汽车EV(Electric Vehicle)具有清洁环保、高效节能的优点,不仅能缓解化石能源危机,而且能够有效地减少温室气体的排放。2015年10月,国务院发布加快EV充电基础设施建设的指导意见,指出到2020年充电基础设施能满足500万辆EV充电需求,预计未来几年我国EV的保有量将大幅增长。然而,规模化EV的无序充电会加大电网负荷的峰谷差,并对电力系统的规划、配电网的电能质量和经济运行以及稳定性带来显著的影响,反之.对EV的充电行为进行有序优化控制,充分发挥EV作为分布式储能元件的优势,能够实现削峰填谷、平抑可再生能源出力波动的功能,并为电网提供调峰、调频等辅助服务。

下图为大规模EV分散接入配电网的场景示意图。EV的管理框架分为配电网代理商、本地代理商和EV 3个层次。配电网代理商分布在高中压HVIMV(High VoltageMedium Voltage)变电层中,负责配电网的安全稳定控制以及EV的有序协调控制;本地代理商分布在中低压MVLV(Mediuim VoltageLow Voltage)变电层中,负责区域EV充电负荷的管控。充电站连接在配电变压器下,配电变压器下除了EV负荷EVL(EV Load)外,还有常规的居民负荷RL(Residential Load)。

3 Matlab代码实现

完整Matlab代码实现:
 

模拟大规模电动车充电行为(Matlab实现)相关推荐

  1. 蒙特卡洛模拟电动汽车充电matlab,基于蒙特卡洛模拟的电动汽车充电负荷预测

    基于蒙特卡洛模拟的电动汽车充电负荷预测 The Prediction of Electric Vehicles Charging Load Based on Monte Carlo Simulatio ...

  2. 普中51控制火焰传感器_传感器检测:以后,电动车充电会变成这样

    如果告诉你,现在二轮电动车也可以实现1分钟就"电力十足",你相信吗? 以往电动车没电时,人们的第一反应就是给电动车充电,这种传统的充电方式不仅充电需要的等待时间很长,而且充电不规范 ...

  3. 【大咖说|中国工程院院士江亿】:有序充电桩系统可破解电动车充电难题

    中国工程院院士.清华大学建筑学院教授江亿1月19日提出,应通过智能充电桩系统,充分开发电动汽车电池储能潜力,实现汽车电气化. 江亿当天参加由阿里巴巴集团举办的"2022新经济智库大会&quo ...

  4. 82、基于STM32单片机电动车充电桩 MLX90614温度检测自动灭火设计

    毕设帮助.开题指导.技术解答(有偿)见文末. 目录 摘要 一.硬件方案 二.设计功能 三.实物图 四.原理图 五.PCB图 六.硬件框图 七.流程图 八.程序源码 九.资料包括 摘要 本文针对传统的测 ...

  5. 基于主从博弈的智能小区代理商定价策略及 电动汽车充电管理matlab程序(yalmip+cplex)(yalmip+gurobi)

    基于主从博弈的智能小区代理商定价策略及电动汽车充电管理matlab程序(yalmip+cplex)(yalmip+gurobi) 参考文献:基于主从博弈的智能小区代理商定价策略及电动汽车充电管理 智能 ...

  6. 电动车充电桩显示无法连接服务器失败,电动车充电桩故障排除技巧

    原标题:电动车充电桩故障排除技巧 由于电动车充电器的输入电路工作在高电压.太电流的状态下,因此,故障率最高.如高压大电流整流三极管.滤波电容.开关功率管等;其次较易损坏的就是输出整流部分的整流二极管. ...

  7. 电动车充电软件测试,电动车充电分为哪几个过程

    电动车充电分为哪几个过程 1.恒流充电阶段,充电器充电电流保持恒定,充入电量快速增加,电池电压上升: 2.恒压充电阶段,充电器充电电压保持恒定,充入电量继续增加,电池电压缓慢上升,充电电流下降: 3. ...

  8. tl494组成的超声波发射电路_采用TL494构成的电动车充电电路原理分析

    TL494是专用双端脉冲调制器件.为固定频率的PWM控制电路,在切换式电源供给器里可单端式或双坡道式的输出控制.如图1所示为TLA94控制器的内瓣构与方块图其内部的线性锯齿波振荡器乃为频率可调,在5. ...

  9. 电动车充电软件测试,电动车充电用哪个app好?6款充电app评测

    您可能感兴趣的话题: 电动车充电 核心提示:电动车因为零排放,控制性.稳定性和安全性会比传统汽车来的好,也因为更方便,所以很多人喜欢开着电动车. 优点:软件逻辑清晰,使用比较流畅.搜索功能较好,充电站 ...

  10. 【物理应用】基于matlab模拟井筒多相流【含Matlab源码 2152期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[物理应用]基于matlab模拟井筒多相流[含Matlab源码 2152期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: 付 ...

最新文章

  1. 李东生:管理者不能变成诸葛先生
  2. 深入云原生 AI:基于 Alluxio 数据缓存的大规模深度学习训练性能优化
  3. EVM反编译软件Porosity的使用-mac
  4. scikit-learn 朴素贝叶斯类库使用小结
  5. 设计模式 ( 十四 ) 迭代器模式Iterator(对象行为型)
  6. 千万并发连接下,如何保障网络性能
  7. nginx动静分离配置_Nginx动静分离
  8. 剑指offer 15.二进制中1的个数
  9. 自定义网站地址栏图标
  10. 利用Java开源库把汉字转拼音(推荐OK)_爱题巴.爱技术.小川哥_百度空间
  11. Keystone认证服务详细操作流程
  12. 工业交换机SFP口和Combo口有什么不同?
  13. logstash清除sincedb_path上传记录,重传日志数据
  14. Codeforces #467 (Div. 2) B. Vile Grasshoppers 蚂蚱的题目
  15. 自媒体推广的方法和技巧有哪些?
  16. 中职计算机应用专业(云计算方向)建设实践
  17. 如何把数据思维应用到业务经营中
  18. chatbot聊天机器人环境搭建以及项目运行指南
  19. 支付宝原型设计-低保真Axure9支付宝界面设计
  20. #千锋逆战班,拼搏永向前#

热门文章

  1. mapreduce求平均值
  2. 拼写的能力和重要性英语作文_拼写很重要吗? 我认为是的。
  3. 简单的有监督学习实例——简单线性回归
  4. 小谈 Ubuntu 联网
  5. 使用AltSearch格式化Kindle读书笔记
  6. 大麦网抢票软件工具开发系列(一)
  7. 自我管理-不同层级的沟通
  8. Python缩进问题:IndentationError:expectedan indented block
  9. 60个未来的新兴服务业最红火
  10. 用计算机三角函数公式,三角函数公式习题.doc