【优化充电】基于matlab蒙特卡洛算法求解电动汽车充电优化问题【含Matlab源码 1164期】

举报
海神之光 发表于 2022/05/29 02:47:13 2022/05/29
【摘要】 一、获取代码方式 获取代码方式1: 完整代码已上传我的资源:【优化充电】基于matlab蒙特卡洛算法求解电动汽车充电优化问题【含Matlab源码 1164期】 获取代码方式2: 通过订阅紫极神光博客付...

一、获取代码方式

获取代码方式1:
完整代码已上传我的资源:【优化充电】基于matlab蒙特卡洛算法求解电动汽车充电优化问题【含Matlab源码 1164期】

获取代码方式2:
通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。

备注:
订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);

二、蒙特卡洛算法简介

1 蒙特卡洛算法定义
蒙特卡洛(Monte Carlo)方法,在渲染中,我们经常听到术语“蒙特卡洛”(通常缩写为MC)。但是这是什么意思?实际上,它所指的是一个非常简单的想法,蒙特卡洛方法指的是一系列统计方法,这些方法本质上用于查找事物的解决方案,例如计算函数的期望值,或者对由于没有封闭形式而无法进行分析积分的函数进行积分。我们可以用该原理来解决不同的问题,并且针对这些问题中都可以关联不同的技术或算法。所有这些算法的共同点是它们使用随机(或随机)采样

2 蒙特卡洛模拟法的原理
蒙特卡洛法(Monte Carlo)是统计试验计算方法,高斯正太分布的期望值µ决定函数分布位置,标准差σ决定函数分布幅度,其概率密度函数公式如下:
在这里插入图片描述
根据中心极限定理,当统计样本足够充足时,各独立同分布随机变量之和的分布趋近于高斯正态分布,且尺寸分布符合伯努利大数定律。因此,蒙特卡洛模拟法计算中所求数学期望即可通过函数f(x)的积分获取。

三、部分源代码

clc;
clear all;
%本程序基于蒙特卡洛思想生成10000台充电汽车充电负荷曲线
 
 

rate=[0.1 0.4 0.5]; %三种充电汽车比例
P_h=[1.4 1.9; 7.7 25.6;40 100];%三种充电功率取值范围

M=10000;                %10000辆车
r=0;
Bh=zeros(M,96);          % 10000辆车行,96个时间列
for i=1:M
    Ph=zeros(96,1);         %96个时间行,1列
    r=r+1;
     for j=1:96
        T_star=get_star();          %充电开始时间   每15分钟
        qua=get_qua();        %充电电量
        P_hi=get_i(rate,P_h);    %充电功率  每小时
        T_char=round(4*qua/P_hi(2));    %一小时有415分钟
        T_sum=T_star+T_char;      %充电结束时间
        if T_sum>96               %时间不能大于96
            new_T_sum=T_sum-96;
            Ph(T_star:96)=P_hi(2);            %从开始时间个数到96 放功率
            Ph(1:new_T_sum)=P_hi(2);          %1到结束个时间 放功率
        else
            Ph(T_star:T_sum)=P_hi(2);         %开始到结束 功率
        end
    end
    for i=1:96
        Bh(r,i)=Ph(i);     %每辆车功率放入每行
    end
end
B=sum(Bh,1);         %每列求和
%%%%%寻找最大功率值,最大同时充电数量%%%%
max_P=max(B); %最大功率
Max_moun=zeros(96,1);  %每时刻最大充电数量  96行
function  P_hi=get_i(rate, P_h)
%get_i 得到充电方式及其功率

P=rand();%随机生成一个取值范围在[0-1]的数字

if 0<=P&&P<rate(1)    %充电汽车比例

    P_hi=[1,(P_h(1,1)+P_h(1,2))/2];   %选择第一种充电方式

elseif rate(1)<=P&&P<0.5


    P_hi=[2,(P_h(2,1)+P_h(2,2))/2];  %选择第二种充电方式
else


    P_hi=[3,(P_h(3,1)+P_h(3,2))/2];%选择第三种充电方式
end
while 1
    P=normrnd(12.94,11.8);
    if P<0
        continue;    %返回到while  否则  break
    end       %只是个标志 相当于括号
    break;   
end
qua=P;

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63

四、运行结果

在这里插入图片描述

五、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.
[3]王锋.基于蒙特卡洛模拟法的动车组裙板装配优化研究[J].中国设备工程. 2020,(06)

文章来源: qq912100926.blog.csdn.net,作者:海神之光,版权归原作者所有,如需转载,请联系作者。

原文链接:qq912100926.blog.csdn.net/article/details/119250541

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。