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

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

1.算法描述

   ID3算法是一种贪心算法,用来构造决策树。ID3算法起源于概念学习系统(CLS),以信息熵的下降速度为选取测试属性的标准,即在每个节点选取还尚未被用来划分的具有最高信息增益的属性作为划分标准,然后继续这个过程,直到生成的决策树能完美分类训练样例。

   ID3算法最早是由罗斯昆(J. Ross Quinlan)于1975年在悉尼大学提出的一种分类预测算法,算法的核心是“信息熵”。ID3算法通过计算每个属性的信息增益,认为信息增益高的是好属性,每次划分选取信息增益最高的属性为划分标准,重复这个过程,直至生成一个能完美分类训练样例的决策树。
   决策树是对数据进行分类,以此达到预测的目的。该决策树方法先根据训练集数据形成决策树,如果该树不能对所有对象给出正确的分类,那么选择一些例外加入到训练集数据中,重复该过程一直到形成正确的决策集。决策树代表着决策集的树形结构。
   决策树由决策结点、分支和叶子组成。决策树中最上面的结点为根结点,每个分支是一个新的决策  结点,或者是树的叶子。每个决策结点代表一个问题或决策,通常对应于待分类对象的属性。每一个叶子结点代表一种可能的分类结果。沿决策树从上到下遍历的过程中,在每个结点都会遇到一个测试,对每个结点上问题的不同的测试输出导致不同的分支,最后会到达一个叶子结点,这个过程就是利用决策树进行分类的过程,利用若干个变量来判断所属的类别。

    在利用原始数据集构建决策树之前,需要对这些历史用电信息做以下工作:

a) 由于原始数据集中包含有错误的用电调度信息,比如在电价高的时段对蓄电池充电,为了提高决策树的分类正确率,必须先从原始数据集中除去错误和无利用价值的用电调度信息。
b) 由专业人员根据样本中的性能指标数据,运用专业的知识和经验做出正确的调度决策。
c) 在选择分类属性时考虑到各数据之间大小关系对最终决策结果的影响,构建决策树所使用的分类属性定义如下:

60dd149fc93a4ea1f441c5662c0b7f32_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
7c678b9b270e9fb69c3f2c74c377d62d_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

    ID3 算法是决策树的经典构建算法,它根据信息增益来评估和选择特征进行划分,每次选择信息增益最大的特征作为判断的模块(即特征节点),可用于划分标称型数据集(即数据中没有缺省特征值的数据集),虽然 ID3 比较灵活方便,但是有以下几个缺点:

(1)采用信息增益进行分裂,缺少剪枝的过程,很可能会出现过拟合的问题。我们可以合并相邻的无法产生大量信息增益的叶子结点(如设置信息增益阈值)。

(2)信息增益和属性的值域范围成正比,也就是有些特征(属性)取值很多,ID3算法很大可能将其作为分裂属性,导致分裂的精确度可能没有采用信息增益率进行分裂高。

(3)不能处理连续分布的数据特征,只能通过将连续性数据转化为离散型数据来解决,也不能处理数据集中的缺省值。

2.仿真效果预览
matlab2022a仿真结果如下:

8c931ec5f55ae882bea320442719ca2f_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
27a1db99f8dbbce24ed545e2c82a2d64_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
5aa4bc356e9d91907f434243b0a52aaf_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
8a6d5da21c00d5cf7b4e48edca3a7861_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

3.MATLAB核心程序

% (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
相关文章
|
27天前
|
数据采集 分布式计算 并行计算
mRMR算法实现特征选择-MATLAB
mRMR算法实现特征选择-MATLAB
92 2
|
17天前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
|
17天前
|
机器学习/深度学习 算法 机器人
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
100 8
|
17天前
|
机器学习/深度学习 算法 自动驾驶
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
|
1月前
|
机器学习/深度学习 算法 数据可视化
基于MVO多元宇宙优化的DBSCAN聚类算法matlab仿真
本程序基于MATLAB实现MVO优化的DBSCAN聚类算法,通过多元宇宙优化自动搜索最优参数Eps与MinPts,提升聚类精度。对比传统DBSCAN,MVO-DBSCAN有效克服参数依赖问题,适应复杂数据分布,增强鲁棒性,适用于非均匀密度数据集的高效聚类分析。
|
17天前
|
传感器 机器学习/深度学习 算法
【无人机协同】动态环境下多无人机系统的协同路径规划与防撞研究(Matlab代码实现)
【无人机协同】动态环境下多无人机系统的协同路径规划与防撞研究(Matlab代码实现)
|
17天前
|
机器学习/深度学习 数据采集 负载均衡
结合多种启发式解码方法的混合多目标进化算法,用于解决带工人约束的混合流水车间调度问题(Matlab代码实现)
结合多种启发式解码方法的混合多目标进化算法,用于解决带工人约束的混合流水车间调度问题(Matlab代码实现)
|
17天前
|
机器学习/深度学习 人工智能 算法
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
|
26天前
|
存储 监控 并行计算
目标跟踪中常用点迹航迹数据关联算法的MATLAB实现
通过计算测量点与预测点之间的欧氏距离,选择最近邻点进行关联,适用于单目标跟踪场景。
|
28天前
|
算法 数据挖掘 调度
数据驱动的两阶段分布鲁棒(1-范数和∞-范数约束)的电热综合能源系统研究(Matlab代码实现)
数据驱动的两阶段分布鲁棒(1-范数和∞-范数约束)的电热综合能源系统研究(Matlab代码实现)

热门文章

最新文章