MOPSO学习小结:

一些基本的定义

1、 一般化的多目标优化问题即多目标优化问题的数学模型;(分最小化和最大化问题)决策空间和目标空间,不等和等式约束条件;

2、 Parto支配关系,非劣解;(决策向量的支配关系和目标向量的支配关系)一个决策向量X1支配另一个决策向量X2,当且仅当X1在所有的目标上都不差于X2,而且至少在一个目标上严格优于X2;

3、 Parto最优解;一个决策向量是Pareto最优解,条件就是不存在另外一个决策向量支配它(目标向量的最优类似)

4、 Parto最优解集;最优解组成的集合

5、 Parto前沿、端面;所有的Pareto最优目标向量组成的曲面

多目标优化问题考虑的基本因素:

收敛性:minimizing the distance to the Pareto front

多样性:maximizing the distribution over the Pareto front

分布性:其实等同于多样性

MOPSO简单描述:多目标粒子群(MOPSO)算法是在2004年提出来的,目的是将原来只能用在单目标上的粒子群算法(PSO)应用于多目标上。

MOPSO算法主要是针对以下一些问题进行研究:

1、如何选择pbest。对于多目标来说两个粒子的对比,并不能对比出哪个好一些。如果粒子的每个目标都要好的话,则该粒子更优。若有些更好,有些更差的话,就无法严格的说哪个好些,哪个差一些。(例如采用支配关系来选择)

2、 如何选择gbest。对于多目标来说,最优的个体有很多个。该如何选择,涉及到最优个体的存档、存档的管理等问题(多样性)

3、 速度更新公式优化;

4、 位置更新处理;

5、 增加扰乱算子即变异算子的选择问题,主要是为了解决PSO快速收敛到局部最优的问题,增加扰乱可以使得收敛到全局最优

6、 增加一些其他的操作来改善收敛性和多样性

MOPSO算法的一般流程:

->初始化需要设定的参数,如种群大小、存档大小、迭代次数等

->根据目标函数的评估在决策空间中随机初始化得到一个粒子群

->初始化每个粒子的速度为0.0;

->初始化粒子位置(一般都是随机生成)

->根据选定的方法初始化存档(存储最优解,也可以说是pareto临时最优断面)gbest就是在其中根据一定的方法选取

->初始化历史最优pbest为其本身;

进入主循环:

->根据速度和位置公式进行位置和速度的计算更新

->对每个粒子增加的一些操作(如变异算子)

->根据目标函数对每一个粒子做评估操作得到新的粒子群

->更新存档,更新gbest(存档若是超出最大存储粒子数做相应的裁剪操作如根据拥挤度距离裁剪、根据自适应网格法裁剪等)

->根据采用的方法更新历史最优pbest(支配法,无法判别优劣的情况下随机选则的方法)

->收敛或者达到最大迭代次数则退出循环

->返回存档中的最优解集

一般速度的更新公式如下:

vi(t)= w ·vi(t−1)+C1 ·r1·(xpbesti −xi)+C2 ·r2 ·(xgbesti −xi)

等式右边由三部分组成,第一部分是惯性量,是延续粒子上一次运动的矢量,如果w大于1会使得速度增加到无限大,所以w一般限制一个小于1的随机数;第二部分是个体认知量,是向个体历史最优位置运动的量r1是一个[0,1]的随机数C1是一个控制因子;

第三部分是社会认知量,是粒子向全局最优位置运动的量r2是一个[0,1]的随机数C2是一个控制因子;

一般的位置更新公式:

xi(t)= xi(t− 1) + vi(t)

其中当Xi的某一维上的量,超出限定范围时一般会做一下处理:

当超出最大值或最小值时,令Vi的值等于最大值或最小值然后乘以-1,或者乘以一个很小的数如0.001;

如何选择领导者?

如何进行存档?

在种群更新完成之后,是如何进行存档的呢?

MOPSO一般进行了三轮筛选。首先,根据支配关系进行第一轮筛选,将劣解去除,剩下的加入到存档中。其次,在存档中根据支配关系进行第二轮筛选,将劣解去除,并计算存档粒子在网格中的位置。最后,若存档数量超过了存档阀值,则根据自适应网格进行筛选,直到阀值限额为止。重新进行网格划分。

OMOPSO(Optimal):

位置更新公式:xi(t) = xi(t − 1) + vi(t)

速度更新公式:vi(t) = w ·vi(t−1)+C1 ·r1 ·(xpbesti −xi)+C2 ·r2 ·(xgbesti −xi)

其中0.1< w<0.5, 1.5< C1<2.0,1.5< C2<2.0,r1、r2是0到1上的随机数

1、如果第i个粒子的位置X[i][j]的值低于目标函数限定的最小值或者大于目标函数限定的最大值,则该粒子的V[i][j]要变方向及V[i][j]= V[i][j]*-1

2、  变异算子:第i个粒子采取何种变异操作分为三种情况,另j=i%3,若j==0则该粒子进行非均匀变异,若j==1则该粒子进行均匀变异操作,若j==2则该粒子不进行变异操作;

3、  存档操作,gbest的获取

leaders_=newCrowdingArchive(archiveSize_,problem_.getNumberOfObjectives());

eArchive_= newNonDominatedSolutionList(newEpsilonDominanceComparator(eta_));

采用的支配方式:EpsilonDominanceComparator,比较大小中引入1+eta因子

leaders_用来存储最优解,并采用拥挤度距离的方法来裁剪存档;

gbest是根据在leaders_中随机选择两个最优解,然后按拥挤的度选择其中一个;

算法流程与一般的MOPSO算法流程没太大区别;

SMOPSO(Speed-constrained):

在OMOPSO的基础上对速度进行了限制加入了压缩因子,变异算子采用的是polynomialMutation,外部存档也与OMOPSO不同采用一般的支配方式选择存储;

1、引进的收缩因子:其中

论文中是这样分开写的,但是在代码中是直接

2、在用以上公式求得速度V后,SMPOS另外还用以下公式对速度进一步进行了压缩限制:其中

, =-;

3、位置更新:OMOPSO中当位置超出范围时速度变向乘以-1,而在SMPSO论文中是说乘以一个可以调节的参数因子:chvel1和chvel2,但是在实际代码中chvel1= chvel2=-1,而在论文中提到chvel1=chvel2=0.001时效果更好

4、 SMPSO中惯性量 w =0.1,  1.5< C1<2.5,1.5< C2<2.5

CMPSO(Co-evolutionary):Multiple Populations for Multiple Objectives

CMPSO简单描述:一个基于MPMO框架的多目标优化的新的PSO算法,每一个目标函数对应一个种群,对于每个目标函数的优化分别在对应的种群上进行类似于单目标优化的PSO进化过程,然后引进一个外部的存档S,这个存档不仅存储每个粒子的pbest,而且存储前后两个指定大小的非劣解的集合A,因此这个外部存档的大小为N*M+2*A,这个存档也用来不同目标、种群之间的粒子进行信息交流;最后S中粒子基于所有的目标进行一次非劣解选择,选择其中基于所有目标的非劣解加入到另外一个存档R,如果R中的非劣解超出了指定的数量,则按照基于拥挤度排序再次选择;

1、新的速度计算公式:分为四个部分

在以前的速度公式基础上增加了第四部分,及基于存档的信息加入引导速度的更新(粒子的进化方向),其中是第i个粒子在共享存档A里随机选择的(收敛快、多样性好、计算复杂度低),如果存档A为空,则在另外m-1个目标对应的gbest中随机选一个;

2、精英学习策略:对于存档A中的每一个粒子,先复制成一个新粒子,然后对的随机选择的第d维上的变量做一个高斯变异,论文中的公式如下:

Eid= Eid+ (Xmax,d−Xmin,d)Gaussian(0, 1);

然后把新的粒子加入到存档S中;
3、非劣解的选取:

对于上述已经存有每个粒子的Pbest n*m个,以及未进行精英学习策略的A个非劣解,和对这A个非劣解进行复制然后进行高斯随机扰动后的A个解,总共M*N+2A个解进行非劣解的选取(基于全部目标),将非劣解存储于外部存档R,然后再跟进基于密度的排序对超出数量的非劣解进行处理(在代码中S、A、R都是用的同一个解集);

4、  算法的流程:目标数m,每个目标对应的种群大小m,限定的存档大小a=archive_size,存档A的大小为m*n+2*a

->根据目标函数估计随机初始化得到m*n粒子

->初始化每个粒子的速度;(代码中不是初始化为0.0)而是一个随机向量

->对每个粒子初始化pbest为其自身,然后将pbest加入存档A中

->初始化每个粒子的gbest

->对A中的m*n个粒子进行非劣选取操作,得到a个新粒子覆盖存储在A中

进入主循环

->根据新的速度计算公式更新每个粒子的速度

->更新每个粒子的位置

->根据目标函数的估计重新得到下一代新的m*n个粒子

->更新每一个粒子的pbest、和gbest,这里与单目标优化的pbest和gbest更新类似(代码中是比较对应的目标函数值的大小来选取)

->对A中的a个粒子进行精英学习策略得到新的a个粒子并加入到A中

->将每个粒子的新的Pbest也加入到存档A中(此时A中的粒子数为m*n+2*a)

->对A中的m*n+2*a个粒子进行非劣选取操作,选取其中的非劣解覆盖加入到A中

->如果A中的非劣粒子数大于a,则还需进行拥挤度排序,删除那些拥挤的粒子直到A的粒子数为a

->达到最大迭代次数则退出循环,否则继续主循环

->返回最后A中的a个非劣解

MOPSO/D:PSO技术与MOEA/D框架的结合

MOEA/D基于分解的多目标进化算法,通过预先产生一组均匀的权重向量将多目标优化问题分解为一组单目标子问题,并为每一个子问题分配一个个体,权重向量直接决定种群的性能,权重向量的均匀程度与具体优化问题有关;

1、如何根据优化问题调整权重向量和子问题?

Pareto最优解与权重向量的关系?如何根据这个关系来确定子问题的权重向量,并运用该权重向量指引子问题的进化?种群进化的过程即是共同基因聚集的过程,适合某一子问题的基因会不断向该子问题或邻域聚集,相邻的子问题最终会拥有更多的共同基因。个体在种群中存在最适合的子问题(权重向量),其取决于该个体的基因成分,可以将每个个体的基因成分分为沿权重向量向最优Pareto 面逼近的因素(即收敛性信息)和与权重向量的距离因素(即分布性信息)。聚合方法将权重向量方向转化为为一定方向的选择压力。聚合方法对子问题的进化方向起决定性作用,且子问题的最优解的位置与权重向量有关联。

2、权重向量的产生方法?MOEA/D中通常是在平面f1 +f2 +....+fm=1或曲面上均匀取点的方式生成均匀权重向量,MOEA/D 使用一组预先指定数目的均匀分布的权重向量,这些权重向量满足如下条件:

,H是用户定义的正整数,m为目标数,所以权重向量的个数为:,因此在MOEA/D中种群大小是不能随意设定的;

3、权重向量的进化过程?

5、相邻子问题:对的应权重向量的欧式距离最近的子问题;

6、得到均匀的权重向量后,权重向量的聚合方法?

MOEA/D论文中给出了三种不同的聚合方法:

1>  传统的加权方法(权重和):

数学表示为:,其中

是一组权重向量,对于所有的i=1,2,….m,有,且

,这种方法的缺点就是在最优pareto面的形状为非凸面的情况下,这种方法并不能获得每一个pareto最优向量

2>  Tchebycheff(切比雪夫)聚合方法:

数学公式:,其中=(,…..),且=

对于每一个pareto最优点x总存在一个权重向量使得上式的解为一个pareto最优解,该解对应着原多目标问题的pareto最优解

对于任意一个权重向量,Tchebycheff聚合方法将多目标问题转换为单目标子问题P,并将个体向最优Pareto 面的逼近转换为沿一定方向的选择压力,随着进化,个体将沿着向z靠近,直至与最优Pareto 面相交,那么交点A即为单目标子问题P的最优解。

与Weighted Sum 聚合方法不同,Tchebycheff聚合方法是沿着一条由参考点

出发的直线Az进化,即随着进化,个体逐渐向直线Az靠近,并沿直线Az逼

近最优Pareto 面。由于直线Az与最优Pareto 面的交点是唯一的,不管最优Pareto

面是什么形状,算法总能搜索到每一个子问题唯一的确定解,因此Tchebycheff

聚合方法可以很好的处理非凸问题。

3>  PBI聚合方法,Penalty-based Boundary Intersection带惩罚因子的边界交叉法:

边界交叉法的目标是把F(x)推尽可能的远,这样算法能够搜索到可行目标空间的边界,

而一般的边界交叉法必须处理等式约束,所以通常采用惩罚的方法来处理约束;

数学表示为:=,>0是一个预设的参数

理论上PBI聚合方法将个体向最优Pareto面的逼近分为与权重向量间的距离和沿着权重向量与最优Pareto面的距离,PBI 被设计为两个部分:沿权重向量向最优Pareto 面逼近的因素(即收敛性信息)和与权重向量的距离因素(即分布性信息)。惩罚系数定义了适应度中分布性和收敛性比例。一般情况下,取值较小。使用PBI聚合函数得到的最优解在由参考点出发方向为权重向量的向量与最优Pareto 面的交点附近。反过来,根据最优解在目标空间的位置可以近似找到求该解所对应子问题的权重向量。

上述三种聚合方法可以用来将多目标进化算法对Pareto 最优边界的逼近转化为一组标量优化问题。足够大的均匀分布的权重向量通常会引导一组Pareto最优向量,这些解可能不是均匀分布的,但可以很好的逼近Pareto 最优边界。MOEA/D 的性能在很大程度上是由聚合方法决定的,个体的进化方向也取决于聚合方法。数学意义上,三种不同的聚合方法将权重向量转换为沿一定方向的选择压力,即通过加权得到的子问题的进化方向是由聚合方法决定的。在MOEA/D 实现中的一个重要的问题是如何选择一个合适的聚合方法。众

所周知,Weighted sum 不能适当地处理最优Pareto 前沿非凸的多目标问题而Tchebycheff可以处理它们。此外,Tchebycheff具有良好的理论特性。因此,在MOEA/D 中与Weighted sum 相比Tchebycheff似乎是一个更好的选择。然而,应用MOEA/D 处理多目标背包问题时清楚地表明Weightedsum 可以获得比Weighted Tchebycheff更好的效果。这种现象表明,在凸问题中使用Weightedsum,而Tchebycheff适合在其他最优Pareto 前沿是非凸的问题。

7、  MOEA/D使用若干个临近子问题的信息优化每个子问题

8、  MOEA/D算法框架:

输入:

MOP:需要解决的多目标问题,及多目标的目标个数m

N:子问题的个数,即种群的大小

权重向量:一组均匀分布的权重向量,分别对应每一个子问题

T:预先定义的每个权重向量的邻居范围

输出:EP(external population)外部存档 外部种群

算法流程:

第一步:初始化EP为空集,计算每组权重向量之间的欧几里得距离,并对于每一个权重向量,每一个子问题,计算出它的最邻近的T个邻居,并用一个B(i)存储这T个邻居(存储的是个体的索引,包括自己本身,自己是最近的邻居),然后根据目标问题随机初始化一个大小为N的种群,并为每一个子问题分配一个个体,计算每个目标函数相对应的值为f(xi),这样就初始化得到参考点向量Z;

第二步:更新种群,对于每一个子问题(个体)首先在它的邻居(大小T)B(i)中随机选择两个子问题对应的个体进行遗传算子的操作(交叉)得到一个新个体y,然后对这个新个体y进行进一步的修补改善操作(变异)得到另一新个体y’; 对于新的个体求出它相对应的每个目标的值更新参考向量Z(m维) ,Zj =f(y’);然后更新邻居B(i),根据你选用的聚合方法来更新,如果选择切比雪夫的方法就根据这个方法的公式来比较邻居中的个体使得对应子问题的值最优情况来更新,如果选择的是带惩罚因子的边界交叉法也相应的根据它的公式来更新;最后更新外部存档(EP),根据计算每个子问题的值来更新

9、  MOPSO/D算法的流程:

->计算任意两个权重向量的欧式距离,并为每一个粒子求得最近的T个邻居;

->初始化产生一个种群,并初始化每个粒子的速度为0.0

->初始化参考点z

->初始化每个粒子的pbest和gbest都为其本身

->根据速度和位置更新公式更新每个粒子的速度和位置

->更新z

->根据所选的聚合方法更新每个粒子的pbest和gbest

->更新存档

dMOPSO,另外一种基于分解的多目标粒子群算法

1、avoidsthe use of an external archive

2、基本框架:与MOEA/D类似 W的获取也是采取MOEA/D中的方法,采用的是PBI聚合方法

3、算法流程

Step 1.1Initialize parameters (iteration_ = 0)

Step 1.2 Generate a swarm of N random particles

Step 1.3 Initialize the speed_ and age_ of each particle to 0

接下来的流程就与MOPSO/D类似了

Step 1.4 Generate a well-distributed set of N weightedvectors

Step 1.5 and 1.6 Define the personal best and the globalbest

Step 2 Shuffle the global best

如果一个粒子在飞行过程中它未能提供自己的位置信息,则它的age+1

if (age_[i] < maxAge_) { Step 3.1 Update particle

}else{ Step 3.2 Reset particle}

在选择pbest和gbest时采用一个带参数的概率密度函数来重新初始化粒子的记忆(高斯分布的概率密度函数)

Step 3.3 Repair bounds

Step 3.4 Evaluate the particle and update Z*

Step 3.5 Update the personal best

Step 4 Update the global best

Gbest 加入存档ss 并返回 ss

缺点:1、因为它是达到一定的年龄就重新初始化每个粒子的记忆,这样就有可能会导致在进化过程中丢失一些有利的经验,而且会增加算法的复杂度

2、因为用分解的策略代替支配的方法,该算法没有用支配关系来处理pbest和gbest,这样会限制种群的大小,而且无法达到收敛到全局的PF

DDMOPSO(MOPSO Based on Decomposition andDominance with Archiving Using

Crowding Distance in Objectiveand Solution Spaces)

Decomposition assiststhe optimization process to find potential solutions that are evenlydistributed along the PF (Zhang and Li, 2007). By associating each particlewith a distinct aggregation problem (i.e., λ value), the direction of exploration activity of each particleis focused on a specific region in the objective space and is aimed at reducingthe distance to the reference point.

Substituting entirelythe dominance approach with decomposition in MOPSO (i.e.,using the aggregationvalue instead of dominance as the leaders’ selection criterion)might lead topremature convergence as each particle is strictly directed to one destination.Atsome point during the optimization process, the particles would be unable to updatetheir positions and personal best memory as the local best and neighborhood informationbecome static.

In addition, solvingan MOP with complicated PF raises a serious challenge, as some λ vectors direct the corresponding particlesto unattainable areas. In such cases, part of the swarm would be exploringundesirable regions in the objective space for a considerable number ofevaluations. Figure 2 demonstrates this problem, where only eight out of 20particles are directed toward the true PF.

Another limitation ofdecomposition relates to how it operates in high-dimensional objective spaces.It struggles to produce a sufficient number of non-dominated solutions thatcover the entire PF as the space to be covered by the swarm/population using λ vectors grows exponentially with thenumber of dimensions. This requires decomposition-based approaches to use alarge swarm/population in order to offer a good PF coverage, thereforeincreasing the number of necessary function evaluations, which can be adisadvantage for real-life problems with expensive or difficult-to-obtain evaluations.

To overcome all these drawbacks within theMOPSO framework, D2MOPSO integrates

both dominance and decomposition.

D2MOPSO uses PBI to transform the optimizationobjective defined by Equation(1) into N scalar optimization problems, where N is the swarm size.

Decomposition is used to select the leaders from adominance-based archive

MMOPSO(A Novel Multi-objective ParticleSwarm Optimization with Multiple

SearchStrategies)

Decomposition approach is adoptedin MMOPSO to decompose MOPs into a set of SOPs and then each particle isassigned to optimize each SOP. Two search strategies for updating theparticle’s velocity are presented to accelerate the convergence speed andmaintain the population diversity respectively. Their cooperation is controlledby a pre-defined threshold.

All the non-dominated solutionsvisited by the particles are stored in a finite-size external archive. Once theexternal archive is full, only the non-dominated solutions with biggercrowding-distance values will be remained, which are considered to be theelitist solutions and a good representative of the entire PF

New definitions of personal-bestand global-best particles are given in MMOPSO

personal-best and global-best particles are considered to be the bestvalues of each aggregation problem and all of SOPs, respectively

MMOPSO算法流程:

->初始化外部存档A

->初始化N个权重向量,采用PBI边界交叉法把多目标问题转换为N个不同子问题

->随机的初始化每个粒子的位置,每个粒子的初始速度设置为0

->初始化外部存档A(一开始把非支配的粒子都加入外部存档),存档更新

->进入主循环:

->速度更新:设置一个门限d

for i = 1 to N

if r <d

selection for xpbest (Algorithm1): for i =1 to N

xpbesti= 1 A ;

for j = 2 to | A|

if ( |li , z*) >g xpbesti g (Aj |li , z*)

xpbesti = Aj ;

end if

end for

endfor;

update the velocity using Eq. (1):vi(t) = w ·vi(t−1)+C1·r1 ·(xpbesti −xi)

else

randomly select a solution from A as xgbest;

update the velocity using Eq.(2): vi(t) = w ·vi(t−1)+C2·r2 ·(xgbesti −xi)

end if

updatethe position using Eq. (3): xi(t) = xi(t − 1) + vi(t)

evaluatethe objectives of new particles;

update the reference point z* in Eq. (4): Min g (x |l, z*) = d1 +q d2

end for

存档更新,然后对存档进行进化算子操作,然后根据目标对粒子进行估计得到新的粒子群再更新z *

然后再进行存档更新,这里对存档进行进化算子操作的算法如下:它是先在存档A中选择一定数量e的具有较大拥挤度距离的非支配粒子加入一个新的解集E中,e小于存档A的大小N,然后执行以下算法:

for i =1 to | A| 对于外部存档A中的每一个非支配粒子

generate a randomnumber j in [1, | E| ]; 在E中随机的选择一个非支配粒子

{C1 ,C2 } =SBX( Ai , Ej );    对以上选择的两个非支配粒子进行SBX交叉操作得到新的两个子代粒子

generate a randomnumber k in [0, 1];  在以上两个子代粒子中随机选择一个粒子

Si =PM(Ck );  选择的子代粒子进行变异操作

end for  这样就会得到一个新的存档A的子代粒子群集S, S的大小也是N,然后将S与A进行存档更新操作,删除A中被S中解支配的粒子,将A和S中的非支配解都加入到A中,如果A的大小大于N,则进行裁剪操作

外部存档更新:仍然使用支配关系和拥挤度距离来更新存档

原文:https://blog.csdn.net/sbcypress/article/details/50727907

MOPSO算法总结,包括OMOPSO,SMPSO,dMOPSO,CMPSO,DDMOPSO,MMOPSO等相关推荐

  1. C#的加密解密算法,包括Silverlight的MD5算法

    C#的加密解密算法,包括Silverlight的MD5算法 下面是一段加密解密工具类,其中的WinFormMD5Encrypt方法可以使得Winform和WebForm下的MD5加密结果一致,默认他们 ...

  2. 全数字OQPSK调制解调的基本算法,包括成形滤波器、NCO模型、载波恢复

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 OQPSK调制技术是一种恒包络调制技术,受系统非线性影响小,具有较高的带宽利用率和功率利用率,在卫星 ...

  3. 机器学习——NB算法(包括符号型与数值型两种)

    1.学习该算法之前需要掌握一些数学中概率的知识,如条件概率与正态分布的概率密度函数等知识. 2.本算法主要是根据概率计算,要先搞懂算法的思想再学习代码,可以在 NB 算法 (包括符号型与数值型, 结合 ...

  4. 【重磅开源】一文汇总顶会 SOTA 图像恢复算法,包括图像去噪、去雨、去模糊等等...

    [导读]今天给大家推荐一个很棒的开源项目,该项目主要汇总了一系列Low-Level-vision领域当前主流的SOTA算法网络结构,主要包括图像去噪,图像去雨.图像去模糊等.该项目详细介绍了各大主流L ...

  5. kotlin写的加解密算法,包括模式和填充方式

    DES加密 DES是一种对称加密(Data Encryption Standard)算法. DES算法一般有两个关键点,第一个是加密算法,第二个是数据补位. 加密算法常见的有ECB模式和CBC模式: ...

  6. c语言编程实现dsa算法,C语言实现DSA算法(不包括质数生成)

    1.头文件部分 #include #include #include 2.判断大数是不是0或1 参见<C语言实现RSA算法> 3.大数加减乘除幂模 参见<C语言实现RSA算法> ...

  7. 圆弧插补程序c语言,用C语言写的简易的逐点比较法插补算法,包括直线逐点插补和圆弧插补...

    源文件:https://pan.baidu.com/s/17FQKqn3UaEPQHkmTcOXKOg 提取码:atb2 #include #include #include #include //运 ...

  8. 用java实现4种加密解密算法(包括:换位加密解密、替换加密解密、位加密解密、一次一密)

    案例1: 换位加密解密算法 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamR ...

  9. mopso算法代码程序_JAVA程序员的必杀技,面试中常考的8个经典算法题,过程精妙,代码精炼...

    总有一些题,超越了岁月,即便是经过了新框架的层层迭代,它依然散发着令人回味无穷的味道.下面的几个笔试题目,是JAVA面试中经常遇见的,大家一定要牢记于心,可别复习到了到时候又说不出来.我就吃过这种亏, ...

最新文章

  1. 如何认识TOS----DSCP 对照表
  2. 不要和Java“结婚”
  3. 比特币的区块结构解析
  4. Python 异步操作文件 aiofiles
  5. tft lcd驱动参数详解_LED拼接屏和LCD拼接屏的区别
  6. mybatis mysql 调用存储过程 多个返回值_MyBatis的SQL执行流程不清楚?很简单!
  7. 如何动态为 tabstrip 中的 tab 页签指定标题
  8. linux下无线网卡安装debian,Debian/Linux下无线网卡驱动的安装,网卡型号是「BCM43228」...
  9. building for iOS simulator, but linking in object file built for tvOS, for architecture x86_64
  10. spark mysql java_使用Spark/Java将数据框架中的记录插入到MySQL表中
  11. VS2005中ajax安装指南
  12. Eclipse的环境配置
  13. flash视频的param属性解释
  14. win10文件夹加密_文件隐私保护工具文件夹隐藏精灵
  15. FPGA实现信号n倍插值(内插0)
  16. 以分割栅格为例实现FME模板的方案优化
  17. Zetero引用特定格式参考文献的手把手操作
  18. 基于AForge.Net框架的扑克牌识别
  19. 分布式系统(三) 分布式事务服务搭建
  20. 1060显卡用什么软件测试,科技 篇七:有了它,GTX1060竟变智商检测卡!

热门文章

  1. MM的爆强语录(转)
  2. python 源代码 macd双底 高 低_MACD双底背离_选股公式,炒股软件,炒股公式,股票软件,股票公式_指标编写互助答疑论坛_理想论坛 - 股票论坛...
  3. python猜字游戏算法设计_python入门到实践-猜字游戏
  4. eclipse theia_如何在Ubuntu 18.04上设置Eclipse Theia Cloud IDE平台[快速入门]
  5. [深度学习论文笔记]Knowledge distillation from multi-modal to mono-modal segmentation networks从多模态到单模态分割的知识提取
  6. 零售药店计算机操作内容培训,零售药店gsp培训计划.doc
  7. 学习并使用HC-SR04超声波测距模块+STM32
  8. 远程调用:远程过程调用(RPC)和远程方法调用(RMI)
  9. 《计算机绘图》期末试卷d,计算机绘图试卷
  10. Tello无人机马达更换