本发明涉及led光源布局技术领域,具体涉及一种通过遗传算法寻找照度均匀度最优的led光源布局的求解方法。
背景技术:
照度均匀度是指最小照度值与平均照度值之比,照度均匀度越大说明某一空间中,光照分布越合理,反之说明分布越不合理。遗传算法是一种模仿生物进化的数学模型,它采用概率化的求解方法,能够根据适应度函数自适应的调整搜索范围。
技术实现要素:
1、本发明的目的
本发明提出了一种利用遗传算法优化以照度均匀度最优为目标的led光源布局的方法,改善室内光照布局。
2、本发明所采用的技术方案
本发明公开了一种基于遗传算法优化的led光源布局方法,具体为:
步骤1、构建三维空间模型;
步骤2、设置光照接收器和led光源的位置,照度接收器所在空间位置为(x,y,z),led光源所在空间位置为(x,y,z);
步骤3、建立照度均匀度的适应度函数,确定个体的适应值;
步骤4、基于谢菲尔德遗传算法,求解出以照度均匀度即适应度函数最优解,为目标的led光源布局。
更进一步,所述的步骤3具体为:
假设led光源的光辐射模型符合朗伯辐射模型,
其中r(θ)表示led辐射强度;θ表示辐射角;ps表示led辐射的功率;
在室内照明系统中,有两个指标:发光强度和光照强度,发光强度是用来形容光源发光亮度的物理量,符号是i,单位是candela;发光强度主要与灯源的光通量成正比,与立体角成反比,即:
立体角是用来形容从某点看到某个物体大小的物理量;立体角主要与物体投影在单位球上的面积成正比,与单位球的半径的二次方成反比;即:
物体光照强度用来形容单位面积所能接收的光的能量多少的物理量,符号是e,单位是lx;光照强度主要与光通量成正比,与单位面积成反比,即:
假设led偏离照度接收器的角度为ψ,led的辐射角为φ,d表示led光源和接收器的直线距离,故:
所以,照度接收器面元所接收单个led的照度可以表示为:
将相应坐标转换成笛卡尔坐标系得:
其中,(x,y,0.85)是照度接收器的坐标,(x,y,3)是led的坐标,i0是指单个led的中心光强,m是辐射模式数;
因为led的辐射半径远远大于它本身的直径,可以将led看成一个点光源,而且led又属于非相干光源,所以n的led组成的阵列布局的照度,是n个led单个照度的线性叠加;本发明仅考虑在视距链路上照度光场的分布;
因此在视距链路上,接收器面元接收单个led的照度为:
更进一步,所述的步骤4具体为:
步骤4.1、设置参数范围
步骤4.2、定义遗传算法参数,种群popsize,最大遗传代数maxgen,个体长度chromlength,代沟ggap,交叉概率pc,变异概率pm,寻优结果的初始值trace;
步骤4.3、区域描述器的设置
其中,len是指每个个体的长度;lb和ub分别指每个变量的上届以及下届;code是指个体是怎样编码的,1表示二进制编码,0便是格雷编码;scale是指每个体使用什么样的刻度,1表示对数刻度,0表示算术刻度;lbin和ubin分别指范围是否包括上下界,1表示包括,0表示不包括;
步骤4.4、创建二进制种群
创建任意离散随机种群chrom=crtbp(popsize,chromlength*r),r为随机种群大小;
步骤4.5、二进制和十进制的转换;
步骤4.6、构建适应度函数,计算每个个体的适应值,适应值将作为衡量个体优劣的唯一标准
objv=-calobjval4(x1,y1,x2,y2….xm,ym)
步骤4.7、种群不断迭代,最终的个体就是全解最优解.
计算子代的目标函数值:objvsel=-calobjval4(x1,y1,x2,y2….xm,ym);
重插入子代到父代,得到新种群:
[chrom,objv]=reins(chrom,selch,1,1,objv,objvsel);
xy=bs2rv(chrom,fieldd);
gen=gen+1;
获取每代的最优解及其序号,y为最优解,i为个体的序号,i恒为1,[z,i]=min(objv);
记下每代的最优值所对应的xy坐标;记下每代的最优值所对应的函数值z,照度均匀度
步骤4.8、将最终的结果通过图形的方式表示下来;
步骤4.9、在子函数中,计算个体的适应值:
calobjval4函数:functionuir=calobjval4(x1,y1,x2,y2….xm,ym)
步骤4.10、计算照度均匀度即适应度函数
uirofeverypoint4函数:
functionuir=uirofeverypoint4(illuminance),uirinput:照度矩阵;
uiroutput:照度均匀度;uir=min(min(illuminance))/mean(illuminance(:));
求解所有led对整个平面照度的照度均匀度,接收面是一个平面,led是一个点,想要继续求解,就需要将整个接收面离散成有限个点,以接收面中心为坐标原点,构建直角坐标系,将整个接收面等距分为m*n份并分配相应的坐标,led对这m*n个坐标的照度即为led对整个接收面的照度;
用一个1行m*n列的矩阵illuminance保存一个led对该平面中所有点的照度值,以此类推保存多个平面的照度值;在该子程序中,每一个矩阵都保存着一个led对整个平面中各个点的照度值,将整个矩阵进行相加所得到的和矩阵就保存所有led对整个平面的照度值;求出和矩阵的最小照度值和平均照度值得到适应度函数。
3、本发明所采用的有益效果
本发明根据接收高度所在平面的照度均匀度建立了适应度函数,照度均匀度增大,适应值增大,优秀种群能够被遗传算法保留的概率也提高,相比于典型的寝室模型光场分布有了很大的提升;从而保证优秀基因在每一代种群中得到一定的保护,能够加快遗传算法成熟收敛,使得结果与预期目标相符合。
附图说明
图1为高校寝室模型。
图2为本发明流程示意图。
图3为光源位置及照度均匀度。
图4为寝室模型照度光场分布图。
具体实施方式
下面结合本发明实例中的附图,对本发明实例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域技术人员在没有做创造性劳动前提下所获得的所有其他实施例,都属于本发明的保护范围。
下面将结合附图对本发明实例作进一步地详细描述。
实施例1
本发明的具体步骤如下:
步骤1、以高校寝室为例,构建三维空间模型,设置合适的长宽高。从实际出发,本发明构建了长宽高分别为5m*3m*4m的高校寝室模型,以地面中心为原点,横向为x轴,纵向为y轴建立空间三维坐标系,如图1-1所示。在本发明中将着重研究高校寝室模型中垂直高度为0.85m所在接收面的照度光场分布。
步骤2、设置光照接收器和led光源的位置。如图1-1所示,照度接收器所在空间位置为(x,y0.85),led光源所在空间位置为(x,y,4)。需要说明的是,本发明暂且只研究在视距链路上的光照度,暂不考虑反射光线的光照度。如果需要研究非视距链路上的光照度,只需修改照度均匀度的数学模型即可。
步骤3、建立照度均匀度的数学模型,该数学模型就是遗传算法中的适应度函数,直接决定各个个体的适应值。假设led光源的光辐射模型符合朗伯辐射模型,
其中r(θ)表示led辐射强度;θ表示辐射角;ps表示led辐射的功率。
在室内照明系统中,有两个十分重要的指标:发光强度(luminousintensity)和光照强度(illumination)。发光强度是用来形容光源发光亮度的物理量,符号是i,单位是candela。发光强度主要与灯源的光通量成正比,与立体角成反比,即:
立体角是用来形容从某点看到某个物体大小的物理量。立体角主要与物体投影在单位球上的面积成正比,与单位球的半径的二次方成反比。即:
物体光照强度(简称光强)是用来形容单位面积所能接收的光的能量多少的物理量,符号是e,单位是lx。光照强度(简称照度)主要与光通量成正比,与单位面积成反比,即:
假设led偏离照度接收器的角度为ψ,led的辐射角为φ,d表示led光源和接收器的直线距离,故:
所以,照度接收器面元所接收单个led的照度可以表示为:
将相应坐标转换成笛卡尔坐标系得:
其中,(x,y,0.85)是照度接收器的坐标,(x,y,3)是led的坐标,i0是指单个led的中心光强,m是辐射模式数。
因为led的辐射半径远远大于它本身的直径,可以将led看成一个点光源,而且led又属于非相干光源,所以n的led组成的阵列布局的照度,是n个led单个照度的线性叠加。本发明仅考虑在视距链路上照度光场的分布。
因此在视距链路上,接收器面元接收单个led的照度为:
步骤4、借助谢菲尔德遗传算法工具箱,求解出以照度均匀度最优为目标的led光源布局的新方法。具体步骤如下所示:
步骤4.1、设置参数范围
lbx1=-4;ubx1=4;%函数自变量x的范围[-4,4],第一个led的x
lby1=-2.5;uby1=2.5;%函数自变量y的范围[-2.5,2.5],第一个led的y
%第二个led的坐标及其范围(x2,y2)
lbx2=-4;ubx2=4;%函数自变量x的范围[-4,4],第二个led的x
lby2=-2.5;uby2=2.5;%函数自变量y的范围[-2.5,2.5],第二个led的y
%第三个led的坐标及其范围(x3,y3)
lbx3=-4;ubx3=4;%函数自变量x的范围[-4,4],第一个led的x
lby3=-2.5;uby3=2.5;%函数自变量y的范围[-2.5,2.5],第一个led的y
%第四个led的坐标及其范围(x4,y4)
lbx4=-4;ubx4=4;%函数自变量x的范围[-4,4],第二个led的x
lby4=-2.5;uby4=2.5;%函数自变量y的范围[-2.5,2.5],第二个led的y。
步骤4.2、定义遗传算法参数。参数主要包括种群大小、最大遗传代数个体长度、代沟、交叉概率和遗传概率等
popsize=1000;%种群大小为1000
maxgen=100;%最大遗传代数为100代
chromlength=20;%个体长度为20
ggap=0.95;%代沟为0.95
pc=0.7;%交叉概率为0.7
pm=0.01;%变异概率为0.01
trace=zeros(9,maxgen);%寻优结果的初始值
步骤4.3、区域描述器的设置。
其中,len是指每个个体的长度;lb和ub分别指每个变量的上届以及下届;code是指个体是怎样编码的,1表示二进制编码,0便是格雷编码;scale是指每个体使用什么样的刻度,1表示对数刻度,0表示算术刻度;lbin和ubin分别指范围是否包括上下界,1表示包括,0表示不包括。
fieldd=[chromlengthchromlengthchromlengthchromlengthchromlengthchromlengthchromlengthchromlength;...
lbx1lby1lbx2lby2lbx3lby3lbx4lby4;ubx1uby1ubx2uby2ubx3uby3ubx4uby4;...
11111111;00000000;11111111;11111111];%区域描述器2*4=8
步骤4.4、创建二进制种群。因为遗传算法无法直接处理实际问题参数,必须通过二进制编码将实际问题参数转换成遗传算法所能处理的数据形式。
chrom=crtbp(popsize,chromlength*8);%创建任意离散随机种群2*4
%%优化
gen=0;%代数计数器
步骤4.5、二进制和十进制的转换。bs2rv是指将二进制转换成十进制。四个led坐标需要以十进制的形式保存下来。
xy=bs2rv(chrom,fieldd);%初始化种群二进制转换成十进制
%*********************②led个数变化,这部分要变化
%第一个led的坐标(x1,y1)
x1=xy(:,1);
y1=xy(:,2);
%第二个led的坐标(x2,y2)
x2=xy(:,3);
y2=xy(:,4);
%第三个led的坐标(x3,y3)
x3=xy(:,5);
y3=xy(:,6);
%第四个led的坐标(x4,y4)
x4=xy(:,7);
y4=xy(:,8);
%*********************③led个数变化,这部分要变化
步骤4.6、构建适应度函数,计算每个个体的适应值,适应值将作为衡量个体优劣的唯一标准
objv=-calobjval4(x1,y1,x2,y2,x3,y3,x4,y4);%计算目标函数值
步骤4.7、种群不断迭代。个体不断的进行选择、交叉和变异等操作,模拟“物竞天择、适者生存”的自然法则,最终的个体就是全解最优解.
whilegen<maxgen
fitnv=ranking(objv);%,根据objv中元素值的大小
selch=select('sus',chrom,fitnv,ggap);%选择
selch=recombin('xovsp',selch,pc);%重组
selch=mut(selch,pm);%变异
xy=bs2rv(selch,fieldd);%子代个体二进制转换成十进制
x1=xy(:,1);
y1=xy(:,2);
x2=xy(:,3);
y2=xy(:,4);
x3=xy(:,5);
y3=xy(:,6);
x4=xy(:,7);
y4=xy(:,8);
%*********************led个数变化,这部分要变化
objvsel=-calobjval4(x1,y1,x2,y2,x3,y3,x4,y4);%计算子代的目标函数值
[chrom,objv]=reins(chrom,selch,1,1,objv,objvsel);%重插入子代到父代,得到新种群
xy=bs2rv(chrom,fieldd);
gen=gen+1;%代数计数器增加
%获取每代的最优解及其序号,y为最优解,i为个体的序号,i恒为1
[z,i]=min(objv);
%*********************led个数变化,这部分要变化
trace(1:8,gen)=xy(i,:);%记下每代的最优值所对应的xy坐标
trace(9,gen)=-z;%记下每代的最优值所对应的函数值z,照度均匀度
end
步骤4.8、画图。将最终的结果通过图形的方式表示下来。
figure(1);
plot3(trace(1,:),trace(2,:),trace(9,:),'b*');%画出每代的最优点,第一个led的坐标及其照度最优
xlabel('x');
ylabel('y');
zlabel('illuminance');
title('每代的最优点及其照度均匀度');
holdon
gridon
plot3(trace(3,:),trace(4,:),trace(9,:),'r*');%画出每代的最优点,第二个led的坐标及其照度最优
%*********************led个数变化,这部分要变化
plot3(trace(5,:),trace(6,:),trace(9,:),'g*');%画出每代的最优点,第三个led的坐标及其照度最优
plot3(trace(7,:),trace(8,:),trace(9,:),'c*');%画出每代的最优点,第四个led的坐标及其照度最优
legend('led1','led2','led3','led4');
holdoff
%两个led在xy平面上的位置
figure(2)
plot(trace(1,:),trace(2,:),'b*',trace(3,:),trace(4,:),'r*',trace(5,:),trace(6,:),'g*',trace(7,:),trace(8,:),'k*');%画出每代的最优点,第一个led的坐标及其照度最优
axis([-4,4,-2.5,2.5]);
xlabel('x');
ylabel('y');
title('每代的最优点在xy平面上的位置');
gridon
%%画出进化图
figure(3);
plot(1:maxgen,trace(9,:));
gridon
xlabel('遗传代数');
ylabel('解的变化');
title('进化过程');
hleg1=legend('uir');
set(hleg1,'location','northwest');
bestx1=trace(1,end);
besty1=trace(2,end);
bestx2=trace(3,end);
besty2=trace(4,end);
bestx3=trace(5,end);
besty3=trace(6,end);
bestx4=trace(7,end);
besty4=trace(8,end);
bestz=trace(9,end);
%%输出最终结果
fprintf(['最优解:
\nx1=',num2str(bestx1),'\ny1=',num2str(besty1),'\nx2=',num2str(bestx2),'\ny2=',num2str(besty2),...
'\nx3=',num2str(bestx3),'\ny3=',num2str(besty3),'\nx4=',num2str(bestx4),'\ny4=',num2str(besty4),'\nbestuir=',num2str(bestz)]);
步骤4.9、在子函数中,calobjval4主要用于计算个体的适应值。
calobjval4函数:
步骤4.10、uirofeverypoint4函数主要用于计算照度均匀度。
uirofeverypoint4函数:
图2为本发明的流程图,通过创建模型、创建适应度函数、调用遗传算法工具箱、得出结论。其中,最为重要的就是如何根据实际情况创建合适的适应度函数。在本发明中,适应度函数是根据接收高度所在平面的照度均匀度得到,照度均匀度越大,适应值越大,优秀种群能够被遗传算法保留的概率就越大。这样能够保证优秀基因在每一代种群中得到一定的保护,能够加快遗传算法成熟收敛,使得结果与预期目标相符合。
如图3所示,当两个led的坐标分别为(-1.9,0)和(1.9,0)时,高度为1.4m的平面照度均匀度值最大,此时照度均匀度为0.71。
如图4所示,高度为1.4m的平面照度光场,最小照度值约为243.75lx,最大照度值为436.94lx,照度均匀度为0.71,相比于典型的寝室模型光场分布有了很大的提升。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。