当前位置:首页 » 操作系统 » 算法参数

算法参数

发布时间: 2022-01-11 11:05:15

① 粒子群算法的参数设置

从上面的例子我们可以看到应用PSO解决优化问题的过程中有两个重要的步骤: 问题解的编码和适应度函数 不需要像遗传算法一样是二进制编码(或者采用针对实数的遗传操作.例如对于问题 f(x) = x1^2 + x2^2+x3^2 求解, 粒子可以直接编码为 (x1, x2, x3), 而适应度函数就是f(x). 接着我们就可以利用前面的过程去寻优.这个寻优过程是一个叠代过程, 中止条件一般为设置为达到最大循环数或者最小错误
PSO中并没有许多需要调节的参数,下面列出了这些参数以及经验设置
粒子数: 一般取 20 – 40. 其实对于大部分的问题10个粒子已经足够可以取得好的结果, 不过对于比较难的问题或者特定类别的问题, 粒子数可以取到100 或 200
粒子的长度: 这是由优化问题决定, 就是问题解的长度
粒子的范围: 由优化问题决定,每一维可以设定不同的范围
Vmax: 最大速度,决定粒子在一个循环中最大的移动距离,通常设定为粒子的范围宽度,例如上面的例子里,粒子 (x1, x2, x3) x1 属于 [-10, 10], 那么 Vmax 的大小就是 20
学习因子: c1 和 c2 通常等于 2. 不过在文献中也有其他的取值. 但是一般 c1 等于 c2 并且范围在0和4之间
中止条件: 最大循环数以及最小错误要求. 例如, 在上面的神经网络训练例子中, 最小错误可以设定为1个错误分类, 最大循环设定为2000, 这个中止条件由具体的问题确定.
全局PSO和局部PSO: 我们介绍了两种版本的粒子群优化算法: 全局版和局部版. 前者速度快不过有时会陷入局部最优. 后者收敛速度慢一点不过很难陷入局部最优. 在实际应用中, 可以先用全局PSO找到大致的结果,再用局部PSO进行搜索. 代码来自2008年数学建模东北赛区B题, #includestdafx.h#include<math.h>#include<time.h>#include<iostream>#include<fstream>usingnamespacestd;intc1=2;//加速因子intc2=2;//加速因子doublew=1;//惯性权重doubleWmax=1;//最大惯性权重doubleWmin=0.6;//最小惯性权重intKmax=110;//迭代次数intGdsCnt;//物资总数intconstDim=10;//粒子维数intconstPNum=50;//粒子个数intGBIndex=0;//最优粒子索引doublea=0.6;//适应度调整因子doubleb=0.5;//适应度调整因子intXup[Dim];//粒子位置上界数组intXdown[Dim]=;//粒子位置下界数组intValue[Dim];//初始急需度数组intVmax[Dim];//最大速度数组classPARTICLE;//申明粒子节点voidCheck(PARTICLE&,int);//约束函数voidInput(ifstream&);//输入变量voidInitial();//初始化相关变量doubleGetFit(PARTICLE&);//计算适应度voidCalculateFit();//计算适应度voidBirdsFly();//粒子飞翔voidRun(ofstream&,int=2000);//运行函数classPARTICLE//微粒类{public:intX[Dim];//微粒的坐标数组intXBest[Dim];//微粒的最好位置数组intV[Dim];//粒子速度数组doubleFit;//微粒适合度doubleFitBest;//微粒最好位置适合度};PARTICLEParr[PNum];//粒子数组intmain()//主函数{ofstreamoutf(out.txt);ifstreaminf(data.txt);//关联输入文件inf>>GdsCnt;//输入物资总数Input(inf);Initial();Run(outf,100);system(pause);return0;}voidCheck(PARTICLE&p,intcount)//参数:p粒子对象,count物资数量{srand((unsigned)time(NULL));intsum=0;for(inti=0;i<Dim;i++){if(p.X>Xup)p.X=Xup;elseif(p.X<Xdown)p.X=Xdown;if(p.V>Vmax)p.V=Vmax;elseif(p.V<0)p.V=0;sum+=p.X;}while(sum>count){p.X[rand()%Dim]--;sum=0;for(inti=0;i<Dim;i++){if(p.X>Xup)p.X=Xup;elseif(p.X<Xdown)p.X=Xdown;if(p.V>Vmax)p.V=Vmax;elseif(p.V<0)p.V=0;sum+=p.X;}}voidInput(ifstream&inf)//以inf为对象输入数据{for(inti=0;i<Dim;i++)inf>>Xup;for(inti=0;i<Dim;i++)inf>>Value;}voidInitial()//初始化数据{GBIndex=0;srand((unsigned)time(NULL));//初始化随机函数发生器for(inti=0;i<Dim;i++)Vmax=(int)((Xup-Xdown)*0.035);for(inti=0;i{for(intj=0;j<Dim;j++){Parr.X[j]=(int)(rand()/(double)RAND_MAX*(Xup[j]-Xdown[j])-Xdown[j]+0.5);Parr.XBest[j]=Parr.X[j];Parr.V[j]=(int)(rand()/(double)RAND_MAX*(Vmax[j]-Vmax[j]/2));}Parr.Fit=GetFit(Parr);Parr.FitBest=Parr.Fit;if(Parr.Fit>Parr[GBIndex].Fit)GBIndex=i;}}doubleGetFit(PARTICLE&p)//计算对象适应度{doublesum=0;for(inti=0;i<Dim;i++)for(intj=1;j<=p.X;j++)sum+=(1-(j-1)*a/(Xup-b))*Value;returnsum;}voidCalculateFit()//计算数组内各粒子的适应度{for(inti=0;i{Parr.Fit=GetFit(Parr);}}voidBirdsFly()//粒子飞行寻找最优解{srand((unsigned)time(NULL));staticintk=10;w=Wmax-k*(Wmax-Wmin)/Kmax;k++;for(inti=0;i{for(intj=0;j<Dim;j++){Parr.V[j]=(int)(w*Parr.V[j]);Parr.V[j]+=(int)(c1*rand()/(double)RAND_MAX*(Parr.XBest[j]-Parr.X[j]);Parr.V[j]+=c2*rand()/(double)RAND_MAX*(Parr[GBIndex].XBest[j]-Parr.X[j]));}}Check(Parr,GdsCnt);for(intj=0;j<Dim;j++){Parr.X[j]+=Parr.V[j];Check(Parr,GdsCnt);}CalculateFit();for(inti=0;i{if(Parr.Fit>=Parr.FitBest){Parr.FitBest=Parr.Fit;for(intj=0;j<Dim;j++)Parr.XBest[j]=Parr.X[j];}}GBIndex=0;for(inti=0;i{if(Parr.FitBest>Parr[GBIndex].FitBest&&i!=GBIndex)GBIndex=i;}}voidRun(ofstream&outf,intnum)//令粒子以规定次数num飞行{for(inti=0;i<num;i++){BirdsFly();outf<<(i+1)<<ends<for(intj=0;j<Dim;j++)outf<outf<<endl;}cout<<Done!<<endl;}

② PID算法的参数怎么确定

PID是自动控制理论里的一种控制方法,PID的意思分别代表了比例、积分和微分。具体是什么意思呢?解释如下:

首先,我们有一个状态量,这个状态量在整个过程中,我们希望通过输入一个控制量,使这个状态量发生变化,并尽量的接近目标量。比如,在航线控制中,状态量是飞机当前的飞行航向,目标量是飞机为到达目标点而应该飞行的目标航向,控制量则是我们对其进行控制的方向舵面,或横滚角度。我们通过调整方向舵面、横滚角度来控制飞机的当前飞行航向,使之尽量接近为压航线而应该飞行的目标航向。

那么我们如何给出这个控制量,比如给哪个方向的、多大的方向舵量呢?最简单的考虑,是按照当前航向与目标航向的偏差大小来决定给多大的方向舵量:方向舵量p = P * (目标航向 – 当前航向)。这个方向舵量p,就是PID控制里的P部分,即比例部分。

那么,是不是只要有了P,我们的控制就完成了呢?实际上有了P,在大多数情况下,我们可以控制飞机朝目标量去接近,但可能会出现一些情况,比如,当飞机的安装有偏差(我们称之为系统误差),导致我们输出一个左5方向舵给舵机的时候,飞机才能直飞;当不给方向舵,即方向舵放在中位时,飞机会右偏。我们想象一下这个时候如果只有P项控制会有什么后果:假设初始状态是飞机飞行航向和目标航向一致,按P输出飞机方向舵应该在中位。而这时候,由于系统安装误差的存在,会导致飞机偏右,于是偏离了目标航向,然后P项控制会输出一个左舵,来修正航向偏差,刚开始的时候由于偏差量很小,输出的这个左舵也很小,于是飞机继续右偏,然后导致这个左舵加大,最终到达5,使飞机直飞,但这时候的飞行航向与目标航向始终存在一个偏差,这就是P的局限,无法修正系统误差。于是I项积分控制就出场了。

I项的输出这样定义:方向舵量i = I * (偏差和)。偏差和是当前航向和目标航向的偏差,每计算一次累加一次,一直累加到上次的值,再加上这次计算时当前航向和目标航向的偏差。即这个偏差和是跟以前的累积误差有关的。同样是上面的例子,I项的效果就这样体现:当飞机飞行航向与目标航向始终存在偏差时,I项将这个值累加上,比如说是5度吧,于是在P项之上,再叠加一个I*5的修正量,增加了一个左舵,比如说是2,然后导致飞机的飞行航向与目标航向的偏差会小一些。也许这一次计算输出的控制量并没有完全消除误差,但下一次再计算时,如果还有误差,于是会继续再增加输出控制量,使误差再小,于是经过多次计算后,使I项始终输出一个左5的舵量,使误差归零。这就是I项的作用,消除系统误差。

D项的意思是微分。为了便于解释,我们假设不存在系统误差,I项为0。比如当目标航向为0度,当前航向为30度时,根据P项作用,会输出一个左舵,假设为左15吧,使飞机向左转向,于是当前航向逐渐减小,比如减小到20度的时候,P项输出的左舵也会减小到左10。那么,当飞机转到0度时,跟目标航向一致时,P项输出方向舵回到中立位,飞机是否就保持0度直飞了呢?XX是否定的。由于飞机的惯性,飞机在左转弯时产生了一个左转弯的速率,导致飞机航向回到目标航向无偏差且方向舵回中后,仍然还会继续左转,然后产生负的偏差,P项再输出右方向舵,然后再回中。如果P项合适,我们看到的就是一个逐渐收敛于目标航向的飞行航向,即先左过头,然后右过头,再左过头,再右过头……最后过头量越来越小,最终到达目标航向。而D项的作用,就是尽量消除这个过头量,使之尽快贴近目标航向。

D项的定义是:方向舵d = D * (当前状态量 – 上一次的状态量)。在这个例子中,当飞机在从30度的航向,左转弯到0度目标航向的过程中,D项的输出实际上是转弯角速率的比例值,并且方向与P项相反,这样当飞机比较接近0度目标航向时,由于P值已经很小了,而这时候如果转弯速率不小,D项就输出一个右方向舵,抵消过快的转弯速率,阻止飞机航向到达目标航向后继续冲过头。

最后,方向舵量 = 方向舵量p + 方向舵量i + 方向舵量d,为完整的输出。根据飞行的表现,通过对P、I、D系数的调整,最终使输出的控制量能够尽快的控制状态量贴近目标量,并消除系统误差,避免过度震荡。

在完整的固定翼飞控系统中,除了航向通道需要PID控制外,其余需要控制的通道还有:副翼舵->目标横滚角、升降舵->目标俯仰角、目标俯仰角->高度差、油门舵->空速、目标航向->偏航距。

③ 各种计算方法中的相关参数

地下水地源热泵适宜区可开采资源量的计算方法有水热均衡法和地下水量折算法,本项目选择地下水量折算法;地埋管地源热泵经济区可开采资源量采用换热量现场测试法计算。对评价方法及相关参数分别介绍如下。

图5-2可开采资源量评价框架图

1.体积法评价方法

利用体积法进行评价计算时,应先确定潜水水位,再确定主要地层厚度、物性参数。

(1)在包气带中,其浅层地温能静态储量按下式计算:

北京浅层地温能资源

式中:QR——浅层地温能储存总量,kJ;

QS——岩土体中的热储存量,kJ;

QW——岩土体所含水中的热储存量,kJ;

QA——岩土中所含空气中的热储存量,kJ。

其中:

北京浅层地温能资源

式中:ρS——岩土体密度,kg/m3;

Cs——岩土体比热容,kJ/(kg·℃);

φ——岩土体的孔隙率;

M——计算面积,m2;

d1——包气带厚度,m;

ΔT——利用温差,℃。

北京浅层地温能资源

式中:ρW——水的密度,取1000kg/m3;

CW——水的比热容,取4.18kJ/(kg·℃);

ω——岩土体的含水率;

北京浅层地温能资源

ρA——空气的密度,取1.29kg/m3;

CA——空气的比热容,1.008kJ/(kg·℃)。

(2)在含水层和相对隔水层中,其地热能储存量按下式计算:

北京浅层地温能资源

式中:QR——浅层地温能储存总量,kJ;

QS——岩土体中的热储存量,kJ;

QW——岩土体所含水中的热储存量,kJ;

北京浅层地温能资源

d2为潜水位至计算下限的岩土体厚度。

通过以上介绍,体积法计算简便、物理意义明确,而且使用范围广泛,不仅适用于松散岩层分布区的浅层地温能静态储量评价,而且同样适用于基岩地区的浅层地温能静态储量评价;不仅适用于地下水地源热泵适宜区静态储量的计算,而且适用于地埋管地源热泵经济区静态储量的计算。由于本次研究工作在国内尚属首次,故选用体积法。在本次工作的基础上,对于浅层地温能资源条件相近区域可以采用类比法进行评价,拓展评价区域范围。

体积法相关参数:根据公式(5-1)~(5-6),可以确定主要参数分为评价范围参数和岩土体物性参数两个方面,分别为:评价区域面积(M,m2)、计算厚度(d2、d2,m)、岩土体孔隙率(φ,%)、岩土体天然含水率(ω,%)、岩土体天然密度(ρs,kg/m3)、岩土体比热容[Cs,kJ/(kg·℃)]、利用温差(ΔT,℃)。

2.地下水热泵适宜区可开采资源量计算方法

(1)水热均衡法:主要通过研究区的水、热均衡计算,了解地下水的水、热储存量和水、热补排情况。

水均衡

北京浅层地温能资源

式中:qin——补给量,m3/d;

qout——排泄量,m3/d;

Δqw——存量的变化量,m3/d。

在包气带中,岩土体水分的补给项有:降水入渗量、灌溉入渗量等;排泄项有:植物蒸腾量、土面蒸发量、下渗补给地下水的量等。

地下水补给项有:降水入渗量、灌溉入渗量、渠系入渗量、河流入渗量、侧向补给量、越流补给量等;排泄项有:潜水蒸发量、人工开采量、侧向排泄量、泉排泄量、河流排泄量、越流排泄量等。

热均衡

北京浅层地温能资源

式中:Qin——热收入量,kW;

Qout——热支出量,kW;

ΔQ——热储存量的变化量,kW。

在包气带,热的收入项有:太阳照射热量、大地热流量、地表水向岩土体散发的热量、侧向传导流入的热量等;支出项有:向大气散发的热量、向地表水散发的热量、侧向传导流出的热量等。

在地下水中,热的收入项有:太阳照射热量、大地热流量、侧向传导流入的热量等;支出项有:向大气散发的热量、水排泄带走的热量、侧向传导流出的热量等。恒温带以下,热收入项没有太阳照射热量。

(2)地下水量折算法:地下水量折算法适用于地下水地源热泵适宜区浅层地温能可开采资源量的计算,其表达式如下:

北京浅层地温能资源

式中:Qq——评价区浅层地温能可开采量,kW;

Qh——单井浅层地温能可开采量,kW;

n——可钻抽水井数;

T——土地利用系数。

其中:

北京浅层地温能资源

式中:Qh——单井浅层地温能可开采量,kW;

qw——单井出水量,m3/d;

△T——地下水利用温差,℃;

Cw——水的比热容,kJ/(kg·℃)。

土地利用系数,居民点、公共用地和其他用地的比例。根据《北京市土地利用现状遥感解译图》中草地、园地、居民及工矿用地和未利用土地面积等占土地面积的27.81%,在以上区域内,开展地下水地源热泵工程时,还要考虑建筑布局、建筑负荷需求、建筑占地面积、资源承载力、地下水连通性等因素的影响,取土地利用系数为22%(27.81%×0.8)。

地下水量折算法相关参数:根据式(5-9)~(5-10),在地下水地源热泵适宜区,利用地下水量折算法评价可开采资源量的相关参数主要有:单井出水量(qw,m3/d)、可钻抽水井数(n)、温差(ΔT,℃)、土地利用系数(T)。

(3)地下水地源热泵适宜区可开采资源量评价方法小结:水热均衡法需要有长期动态监测数据的支撑,适用于评价浅层地温能资源可利用量的保证程度;地下水量折算法可操作性强,较好地反映了地下水地源热泵利用浅层地温能资源的特点,因此本次研究采用该方法。

3.地埋管热泵适宜区可开采资源量评价方法

(1)换热量现场测试法:换热量现场测试法适用于地埋管热泵经济区浅层地温能可开采资源量的计算,其表达式如下:

北京浅层地温能资源

式中:Dq——评价区浅层地温能可开采资源量,kW;

D——单孔换热量,kW;

n——可钻换热孔数;

T——土地利用系数。

北京浅层地温能资源

式中:kz——综合传热系数,W/(m·℃);

ΔT——温差,℃,即为U形管内循环液平均温度与岩土体原始温度之差;

L——双U形地埋管换热孔长度,m。

土地利用系数,居民点、公共用地和其他用地的比例与地下水量折算法相同为27.81%,开展地埋管地源热泵工程时,还要考虑建筑布局、建筑负荷需求、建筑占地面积、资源承载力等因素,取土地利用系数为8.3%(27.81%×0.3)。

(2)换热量现场测试法相关参数:根据式(5-11)~(5-12),在地埋管地源热泵适宜区,利用换热量现场测试法评价可开采资源量的相关参数主要有:综合传热系数[kz,W/(m·℃)]、可钻换热孔数(n)、温差(ΔT)、土地利用系数(T)。

4.浅层地温能资源评价相关参数的分类

由前面评价方法的分析可知,在评价计算浅层地温能资源静态储量和可开采量时需要确定的参数见表5-1。

表5-1资源量评价相关参数分类表

5.浅层地温能资源评价相关参数的意义

(1)区域地质、水文地质条件:浅层地温能资源蕴藏在地下岩土体内,其储藏、运移以及开采利用都受到区域地质、水文地质条件的严格制约,不同区域的资源利用方式和规模存在较大差异,因此,全面了解北京平原区的地质、水文地质条件十分重要。

(2)第四系岩性厚度:北京平原是由多条河流冲洪积作用形成的,在冲洪积扇的顶部至下部,第四系厚度逐渐增大,含水层由单一、厚度较大逐渐过渡为多层、单层厚度较薄,颗粒由粗变细,岩性由砂卵砾石、粘性土互层逐渐过渡为多层的粘砂、粉细砂。

(3)浅层地温能资源条件分区:根据浅层地温能资源开发利用形式的不同,考虑到项目的初投资、运行状况以及地质环境影响等因素,结合北京市不同地区地质、水文地质条件的特点,划分出地下水地源热泵系统的适宜区、较适宜区、一般适宜区和严禁应用区,以及地埋管地源热泵系统的经济区、较经济区和欠经济区。

(4)地下水水位(m):地下水水位是评价浅层地温能资源的一个重要参数。在评价浅层地温能资源静态储量时,将地下水面以上划分为包气带,将地下水面以下划分为饱水带,再分别计算静态储量;在评价地下水地源热泵适宜区可开采资源量时,地下水水位一方面影响单井出水量,一方面也会影响单井回灌量。

(5)变温层厚度(m):地壳按热力状态从上而下分为变温带、常温带、增温带。变温带的地温受气温的控制呈周期性的昼夜变化和年变化,随着深度的增加,变化幅度很快变小。气温的影响趋于零的深度叫常温带,常温带以上地层厚度即为变温层厚度。

(6)岩土体天然密度(g/cm3):单位体积岩土体的质量称为岩土体的密度。

(7)岩土体天然含水率(%):岩土体中水的质量与岩土体颗粒质量之比,称为岩土体的天然含水率。

(8)岩土体孔隙率(%):岩土体中孔隙所占体积与总体积之比称为岩土体的孔隙率。

(9)岩土体热导率[W/(m·℃)]:在岩土体内部垂直于导热方向取两个相距1m,面积为1m2的平行平面,若两个平面的温度相差1℃,则在1秒内从一个平面传导至另一个平面的热量就规定为该岩土体的热导率。

(10)岩土体的比热容[kJ/(kg·℃)]:单位质量的岩土体温度升高1℃吸收的热量(或降低1℃释放的热量)叫做该岩土体的比热容。

(11)单井出水量(qw,m3/d):抽水井的出水量(5m降深)。

(12)单位涌水量[m3/(h·m)]:单位涌水量是井抽水水位降深换算为1m时的单井出水量。

(13)渗透系数(m/d):是综合反映土体渗透能力的一个指标,水力梯度等于1时的渗透流速。

(14)抽水井影响半径(m):机井在抽水时,水位下降,井周围附近含水层的水向井内流动,形成一个以抽水井为中心的水位下降漏斗,这个水位下降漏斗的半径叫影响半径。

(15)土地利用系数(T)[kz,W/(m·℃)]:居民点、公共用地和其他用地的比例。

(16)综合传热系数[kz,W/(m·℃)]:进行换热量现场测试,计量地埋管换热器的进出水温度、流量,在热交换达到稳定的条件下,计算得到钻孔每延长米在温度变化1℃(循环液平均温度与岩土体原始温度比)时的换热量即为综合传热系数。

(17)平均导热系数[kp,W/(m·℃)]:该参数是利用Fluent软件模拟换热孔的温度场影响半径时需要设置的一个重要参数,也是表现当地岩土体平均换热能力的一个重要指标。其定义为在当地水文地质环境下,当传热达到稳定时,假设岩土体是匀质的,在岩土体内部垂直于导热方向取两个相距1m,面积为1m2的平行平面,若两个平面的温度相差1℃,则在1秒内从一个平面传导至另一个平面的热量就是该岩土体的平均导热系数。

④ 请问怎样确定遗传算法的参数

遗传算法的参数设计对于不同的实际问题都不同
目前还没有完整的理论来参考

种群大小越大 收敛效果越好 但计算量也会增大
在空间复杂度(内存大小)和计算速度允许的情况下 尽量大一些 不过如果问题的解空间不大或者是变化的话 则要另加考虑(解空间不大就没必要把种群定得很大了)

交叉率。。。一般都是全部参与交叉(染色体都会交叉嘛) 只是交叉方式的设计问题,有单点,多点,随机等等 另外还要考虑交叉后解的可行性 对于具体问题,可以各种方法都试一下(这方面的理论实在是很弱)

变异率不要设高,一般在%5以下,变异是为了避免把个体局限在较优的局部解空间内(模拟退火算法就有这个问题,所以经常会结合遗传算法)

总结一下,这个算法的理论支持目前还较弱,但是很实用,反正算得快,多算几遍,参数多改改,一般和近似解都很接近

⑤ 递归算法的参数传递问题

采用递归方法来解决问题,必须符合以下三个条件:

1、可以把要解决的问题转化为一个新问题,而这个新的问题的解决方法仍与原来的解决方法相同,只是所处理的对象有规律地递增或递减。

说明:解决问题的方法相同,调用函数的参数每次不同(有规律的递增或递减),如果没有规律也就不能适用递归调用。

2、可以应用这个转化过程使问题得到解决。

说明:使用其他的办法比较麻烦或很难解决,而使用递归的方法可以很好地解决问题。

3、必定要有一个明确的结束递归的条件。

说明:一定要能够在适当的地方结束递归调用。不然可能导致系统崩溃。

实例:

例:使用递归的方法求n!

当n>1时,求n!的问题可以转化为n*(n-1)!的新问题。

比如n=5:

第一部分:5*4*3*2*1 n*(n-1)!

第二部分:4*3*2*1 (n-1)*(n-2)!

第三部分:3*2*1 (n-2)(n-3)!

第四部分:2*1 (n-3)(n-4)!

第五部分:1 (n-5)! 5-5=0,得到值1,结束递归。

源程序:

fac(int n)

{int t;

if(n==1)||(n==0) return 1;

else

{ t=n*fac(n-1);

return t;}

}

main( )

{int m,y;

printf(“Enter m:”);

scanf(“%d”,&m);

if(m<0) printf(“Input data Error! ”);

else

{y=fac(m);

printf(“ %d! =%d ”,m,y);

}

}

递归算法是把问题转化为规模缩小了的同类问题的子问题。然后递归调用函数(或过程)来表示问题的解。一个过程(或函数)直接或间接调用自己本身,这种过程(或函数)叫递归过程(或函数)。

⑥ PID算法中的三个参数设定及其C源程序

有,可以看看书上那个经典的方法,一般的计算机控制的书都有哈

⑦ msrcr算法怎么选取合适参数

distinct可以剔重,语句如下:
select distinct a,b from table where c>3;
剔重也可以用row_number() over函数,语句如下:
select * from (
select a,b, row_number() over(partition by a,b order by c) rn
from table
where c>3 ) ac
where ac.rn=1;

⑧ 粒子群优化的算法参数

PSO参数包括:群体规模m,惯性权重w,加速常数c1和c2,最大速度Vmax,最大代数Gmax,解空间[Xmin Xmax]。
Vmax决定在当前位置与最好位置之间的区域的分辨率(或精度)。如果Vmax太高,微粒可能会飞过好解,如果Vmax太小,微粒不能进行足够的探索,导致陷入局部优值。该限制有三个目的:防止计算溢出;实现人工学习和态度转变;决定问题空间搜索的粒度。
惯性权重w使微粒保持运动的惯性,使其有扩展搜索空间的趋势,有能力探索新的区域。
加速常数c1和c2代表将每个微粒推向pbest和gbest位置的统计加速项的权重。低的值允许微粒在被拉回来之前可以在目标区域外徘徊,而高的值导致微粒突然的冲向或者越过目标区域。
如果没有后两部分,即c1 = c2 = 0,微粒将一直以当前的速度飞行,直到到达边界。由于它只能搜索有限的区域,将很难找到好的解。
如果没有第一部分,即w = 0,则速度只取决于微粒当前的位置和它们历史最好位置pbest和gbest,速度本身没有记忆性。假设一个微粒位于全局最好位置,它将保持静止。而其它微粒则飞向它本身最好位置pbest和全局最好位置gbest的加权中心。在这种条件下,微粒群将统计的收缩到当前的全局最好位置,更象一个局部算法。
在加上第一部分后,微粒有扩展搜索空间的趋势,即第一部分有全局搜索的能力。这也使得w的作用为针对不同的搜索问题,调整算法全局和局部搜索能力的平衡。
如果没有第二部分,即c1 = 0,则微粒没有认知能力,也就是“只有社会(social-only)”的模型。在微粒的相互作用下,有能力到达新的搜索空间。它的收敛速度比标准版本更快,但是对复杂问题,比标准版本更容易陷入局部优值点。
如果没有第三部分,即c2 = 0,则微粒之间没有社会信息共享,也就是“只有认知(cognition-only)”的模型。因为个体间没有交互,一个规模为m的群体等价于m个单个微粒的运行。因而得到解的几率非常小。

⑨ 遗传算法 参数拟合

我来说说我的思路吧
这种拟合问题的目的是求出拟合函数的参数,如多项式函数的系数
那么可以把拟合函数值与Y的绝对差值当做目标函数和适应度函数,相对应所求的拟合函数的参数作为遗传算法中的基因编码,每组参数对应一个拟合函数相当于一个染色体个体
遗传算法采用基本遗传算法即可
单点交叉,高斯变异

初步设想,望请指正

⑩ 神经网络算法中,参数的设置或者调整,有什么方法可以采用

若果对你有帮助,请点赞。
神经网络的结构(例如2输入3隐节点1输出)建好后,一般就要求神经网络里的权值和阈值。现在一般求解权值和阈值,都是采用梯度下降之类的搜索算法(梯度下降法、牛顿法、列文伯格-马跨特法、狗腿法等等),这些算法会先初始化一个解,在这个解的基础上,确定一个搜索方向和一个移动步长(各种法算确定方向和步长的方法不同,也就使各种算法适用于解决不同的问题),使初始解根据这个方向和步长移动后,能使目标函数的输出(在神经网络中就是预测误差)下降。 然后将它更新为新的解,再继续寻找下一步的移动方向的步长,这样不断的迭代下去,目标函数(神经网络中的预测误差)也不断下降,最终就能找到一个解,使得目标函数(预测误差)比较小。
而在寻解过程中,步长太大,就会搜索得不仔细,可能跨过了优秀的解,而步长太小,又会使寻解过程进行得太慢。因此,步长设置适当非常重要。
学习率对原步长(在梯度下降法中就是梯度的长度)作调整,如果学习率lr = 0.1,那么梯度下降法中每次调整的步长就是0.1*梯度,
而在matlab神经网络工具箱里的lr,代表的是初始学习率。因为matlab工具箱为了在寻解不同阶段更智能的选择合适的步长,使用的是可变学习率,它会根据上一次解的调整对目标函数带来的效果来对学习率作调整,再根据学习率决定步长。
机制如下:
if newE2/E2 > maxE_inc %若果误差上升大于阈值
lr = lr * lr_dec; %则降低学习率
else
if newE2 < E2 %若果误差减少
lr = lr * lr_inc;%则增加学习率
end
详细的可以看《神经网络之家》nnetinfo里的《[重要]写自己的BP神经网络(traingd)》一文,里面是matlab神经网络工具箱梯度下降法的简化代码

若果对你有帮助,请点赞。
祝学习愉快

热点内容
跳转页源码 发布:2024-09-17 03:13:05 浏览:543
html文件上传表单 发布:2024-09-17 03:08:02 浏览:784
聊天软件编程 发布:2024-09-17 03:00:07 浏览:726
linuxoracle安装路径 发布:2024-09-17 01:57:29 浏览:688
两个安卓手机照片怎么同步 发布:2024-09-17 01:51:53 浏览:207
cf编译后没有黑框跳出来 发布:2024-09-17 01:46:54 浏览:249
安卓怎么禁用应用读取列表 发布:2024-09-17 01:46:45 浏览:524
win10设密码在哪里 发布:2024-09-17 01:33:32 浏览:662
情逢敌手迅雷下载ftp 发布:2024-09-17 01:32:35 浏览:337
安卓如何让软件按照步骤自动运行 发布:2024-09-17 01:28:27 浏览:197