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
相关文章
|
4天前
|
机器学习/深度学习 算法 计算机视觉
基于CNN卷积神经网络的金融数据预测matlab仿真,对比BP,RBF,LSTM
本项目基于MATLAB2022A,利用CNN卷积神经网络对金融数据进行预测,并与BP、RBF和LSTM网络对比。核心程序通过处理历史价格数据,训练并测试各模型,展示预测结果及误差分析。CNN通过卷积层捕捉局部特征,BP网络学习非线性映射,RBF网络进行局部逼近,LSTM解决长序列预测中的梯度问题。实验结果表明各模型在金融数据预测中的表现差异。
|
6天前
|
移动开发 算法 计算机视觉
基于分块贝叶斯非局部均值优化(OBNLM)的图像去噪算法matlab仿真
本项目基于分块贝叶斯非局部均值优化(OBNLM)算法实现图像去噪,使用MATLAB2022A进行仿真。通过调整块大小和窗口大小等参数,研究其对去噪效果的影响。OBNLM结合了经典NLM算法与贝叶斯统计理论,利用块匹配和概率模型优化相似块的加权融合,提高去噪效率和保真度。实验展示了不同参数设置下的去噪结果,验证了算法的有效性。
|
5天前
|
算法 决策智能
基于SA模拟退火优化算法的TSP问题求解matlab仿真,并对比ACO蚁群优化算法
本项目基于MATLAB2022A,使用模拟退火(SA)和蚁群优化(ACO)算法求解旅行商问题(TSP),对比两者的仿真时间、收敛曲线及最短路径长度。SA源于金属退火过程,允许暂时接受较差解以跳出局部最优;ACO模仿蚂蚁信息素机制,通过正反馈发现最优路径。结果显示SA全局探索能力强,ACO在路径优化类问题中表现优异。
|
5天前
|
存储 算法 测试技术
【C++数据结构——树】二叉树的遍历算法(头歌教学实验平台习题) 【合集】
本任务旨在实现二叉树的遍历,包括先序、中序、后序和层次遍历。首先介绍了二叉树的基本概念与结构定义,并通过C++代码示例展示了如何定义二叉树节点及构建二叉树。接着详细讲解了四种遍历方法的递归实现逻辑,以及层次遍历中队列的应用。最后提供了测试用例和预期输出,确保代码正确性。通过这些内容,帮助读者理解并掌握二叉树遍历的核心思想与实现技巧。
23 2
|
5月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
253 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
5月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
150 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
5月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
121 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
|
8月前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
基于混合整数规划的微网储能电池容量规划(matlab代码)
基于混合整数规划的微网储能电池容量规划(matlab代码)
|
8月前
|
算法 调度
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)