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