您现在的位置:首页 >> 机器学习 >> 内容

m基于ID3决策树算法的能量管理系统matlab仿真

时间:2023/1/14 19:59:58 点击:

  核心提示:05_070_m,包括程序操作录像+参考文献...

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/Y56Vmpxs

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览



3.算法概述

         ID3算法是一种贪心算法,用来构造决策树。ID3算法起源于概念学习系统(CLS),以信息熵的下降速度为选取测试属性的标准,即在每个节点选取还尚未被用来划分的具有最高信息增益的属性作为划分标准,然后继续这个过程,直到生成的决策树能完美分类训练样例。ID3算法最早是由罗斯昆(J. Ross Quinlan)于1975年在悉尼大学提出的一种分类预测算法,算法的核心是“信息熵”。ID3算法通过计算每个属性的信息增益,认为信息增益高的是好属性,每次划分选取信息增益最高的属性为划分标准,重复这个过程,直至生成一个能完美分类训练样例的决策树。

4.部分源码

..................................................................................

% (a) c1为调用延时启动程序;

% (b) c2为调用DR控制程序;

% (c) c3为家电按照期望运行时间工作;

% (d) c4为蓄电池充电;

% (e) c5为蓄电池放电。

%环保模式动态调度

%然后仿真,加入决策树之后,优化的结果,然后进行对比体现家电能量管理的优势

Plimit = 1.5;

flag   = 1;

CPmax  = 0.03;

DPmax  = 1.0;

Qmax   = 0.2;

Qmin   = 0.1;

dat_pre3=zeros(1,48);

for i = 1:48%分析不同时间段

    %对300人分别进行处理

    dattotal =0;

    for j = 1:300

        PG   = (mean(pow1{j}(:,1))+Pb)/20;

        Psum = mean(pow1{j}(:,3+i));

        Preq = PG + Pv + Pb;

        Q    = 0.18+rand/5;%这个变量数据中没提供,我们假设一组数据

        %计算PG和Psum

        %先判断a2:a2为PGt> Psum,其值域为{是,否} ;

        if Price(i) == min(Price)%a1

            if PG > Psum%a2

               if Q < Qmax%a4

                  if Psum + CPmax > PG

                     flag = 4; 

                  else

                     flag = 6;  

                  end

               else

                  flag = 1;  

               end

            else%c3 

               flag = 3;

            end

            flag

        end    

        if Price(i) == max(Price)%a1

            if PG > Psum%a2

               flag = 1;  

            else%c5 

               if Q > Qmin%a3

                   if Preq > Psum

                      flag = 3;%c3 

                   else

                      flag = 2;%c2

                   end

               else%a7

                   if PG + DPmax < Psum

                       if Preq > Psum

                          flag = 7;%c3c5 

                       else

                          flag = 2;%c2

                       end

                   else

                      flag = 5;%c5  

                   end

               end

            end

        end

        %启动c1

        if flag == 1%延迟启动系统

           tmps = pow1{j}(:,3+i);

           tmps2= zeros(size(tmps));%延迟,所以当前设置为0

        end

        %启动c2

        if flag == 2%DR系统

           tmps = pow1{j}(:,3+i);

           idx  = find(tmps>=Plimit);

           tmps(idx) = Plimit;

           tmps2= tmps; 

        end

        %启动c3c3为家电按照期望运行时间工作

        if flag == 3%

           tmps = pow1{j}(:,3+i);

           tmps2= tmps;%不做任何处理

        end

        if flag == 4%

           Pb=min(10*Pb,1);%假设充电后电量为原来的两倍,但最大不超过1

        end

        if flag == 5%

           Pb=max(0.1*Pb,0.1);%假设充电后电量为原来的0.5倍,但最小不大于0.1

        end

        if flag == 6%c1,c4,c1为调用延时启动程序,c4为蓄电池充电;

           tmps = pow1{j}(:,3+i);

           tmps2= zeros(size(tmps));%延迟,所以当前设置为0

           Pb=min(10*Pb,1);%假设充电后电量为原来的两倍,但最大不超过1

        end

        if flag == 7%c3,c5,c3为家电按照期望运行时间工作;,c5为蓄电池放电。

           tmps = pow1{j}(:,3+i);

           tmps2= tmps;%不做任何处理

           Pb=max(0.1*Pb,0.1);%假设充电后电量为原来的0.5倍,但最小不大于0.1

        end

        dattotal=dattotal+mean(tmps2);

    end

    dat_pre3(i)=dattotal;

end

05_070_m

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关文章
  • 没有相关文章
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168