文章目录

  • 优化问题概述
  • 遗传算法简介
  • 模型引入:函数寻优问题
  • 形象理解
  • 数学原理/实现过程
    • 一些概念
    • 编制袋鼠的染色体----基因的编码方式
      • 二进制编码法
      • 浮点数编码
      • 只编码主要特征
    • 物竞天择--适应性评分与及选择函数
      • 物竞――适应度函数(fitness function)
      • 天择――选择函数(selection)
        • 轮盘赌(Roulette Wheel Selection)选择法——选择繁衍的袋鼠
    • 遗传变异――基因重组(交叉)与基因突变
      • 基因重组/交叉(recombination/crossover)
        • 二进制编码
        • 浮点数编码
      • 基因突变(Mutation)
        • 二进制编码
        • 浮点数编码
  • 遗传算法案例代码求解
    • 完整代码
  • 微信公众号:邯郸路220号子彬院 获取更多内容

优化问题概述

最优化问题(optimization problem)

要选择一组参数(变量),在满足一系列有关的限制条件(约束)下,使设计指标(目标)达到最优值。

求解算法

遗传算法、模拟退火算法、蚁群算法等等……


遗传算法简介

遗传算法(Genetic Algorithm)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。遗传算法是在20世纪六七十年代由美国密歇根大学的 Holland教授创立。

遗传算法是一种仿生算法,最主要的思想是物竞天择,适者生存。这个算法很好的模拟了生物的进化过程,保留好的物种,同样一个物种中的佼佼者才会幸运的存活下来。转换到数学问题中,这个思想就可以很好的转化为优化问题,在求解方程组的时候,好的解视为好的物种被保留,坏的解视为坏的物种而淘汰,设置好进化次数以后开始迭代,记录下这些解里面最好的那个,就是要求解的方程组的解。

遗传算法是从代表问题可能潜在的解集的一个种群(population)开始的,而一个种群则由经过基因(gene)编码的一定数目的个体(individual)组成。每个个体实际上是染色体(chromosome)带有特征的实体。染色体作为遗传物质的主要载体,即多个基因的集合,其内部表现(即基因型)是某种基因组合,它决定了个体的形状的外部表现,如黑头发的特征是由染色体中控制这一特征的某种基因组合决定的。

遗传算法主要是用来寻优。如2011A滑雪场问题,2012B光伏电池。


模型引入:函数寻优问题

例子:已知一元函数:f(x)=xsin(10πx)+2,x[1,2]f(x)=x \sin (10 \pi x)+2 ,x \in[-1,2],求该指定区间内的最大值。

Image Name


形象理解

“袋鼠跳”问题

遗传算法中每一条染色体/个体,对应着遗传算法的一个解决方案,一般我们用**适应性函数(fitness function)**来衡量这个解决方案的优劣。所以从一个基因组到其解的适应度形成一个映射。可以把遗传算法的过程看作是一个在多元函数里面求最优解的过程。可以这样想象,这个多维曲面里面有数不清的“山峰”,而这些山峰所对应的就是局部最优解。而其中也会有一个“山峰”的海拔最高的,那么这个就是全局最优解。而遗传算法的任务就是尽量爬到最高峰,而不是陷落在一些小山峰。(另外,值得注意的是遗传算法不一定要找“最高的山峰”,如果问题的适应度评价越小越好的话,那么全局最优解就是函数的最小值,对应的,遗传算法所要找的就是“最深的谷底”)

Image Name

注意:以下求解过程均假设求解最大值!

既然我们把函数曲线理解成一个一个山峰和山谷组成的山脉。那么我们可以设想所得到的每一个解就是一只袋鼠,我们希望它们不断的向着更高处跳去,直到跳到最高的山峰(尽管袋鼠本身不见得愿意那么做)。所以求最大值的过程就转化成一个“袋鼠跳”的过程。

模拟物竞天择的生物进化过程,通过维护一个潜在解的群体执行了多方向的搜索,并支持这些方向上的信息构成和交换。以面为单位的搜索,比以点为单位的搜索,更能发现全局最优解。

生动理解1:

在遗传算法中,有很多袋鼠,它们降落到喜玛拉雅山脉的任意地方。这些袋鼠并不知道它们的任务是寻找珠穆朗玛峰。但每过几年,就在一些海拔高度较低的地方射杀一些袋鼠,并希望存活下来的袋鼠是多产的,在它们所处的地方生儿育女。

生动理解2:

有一大群袋鼠,它们被莫名其妙的零散地遗弃于喜马拉雅山脉。于是只好在那里艰苦的生活。海拔低的地方弥漫着一种无色无味的毒气,海拔越高毒气越稀薄。可是可怜的袋鼠们对此全然不觉,还是习惯于活蹦乱跳。于是,不断有袋鼠死于海拔较低的地方,而越是在海拔高的袋鼠越是能活得更久,也越有机会生儿育女。

结果

就这样经过许多年,这些袋鼠们竟然都不自觉地聚拢到了一个个的山峰上,可是在所有的袋鼠中,只有聚拢到珠穆朗玛峰的袋鼠被带回了美丽的澳洲(最优解)。


数学原理/实现过程

遗传算法的实现过程实际上就像自然界的进化过程那样。首先寻找一种对问题潜在解进行**“数字化”编码的方案。(建立表现型和基因型的映射关系)然后用随机数初始化一个种群(那么第一批袋鼠就被随意地分散在山脉上),种群里面的个体就是这些数字化的编码。接下来,通过适当的解码过程之后(得到袋鼠的位置坐标),用适应性函数对每一个基因个体作一次适应度评估(袋鼠爬得越高,越是受我们的喜爱,所以适应度相应越高)。用选择函数按照某种规定择优选择**(我们要每隔一段时间,在山上射杀一些所在海拔较低的袋鼠,以保证袋鼠总体数目持平。)。让个体基因变异(让袋鼠随机地跳一跳)。然后产生子代(希望存活下来的袋鼠是多产的,并在那里生儿育女)。

遗传算法并不保证你能获得问题的最优解,但是使用遗传算法的最大优点在于你不必去了解和操心如何去“找”最优解。(你不必去指导袋鼠向那边跳,跳多远。)而只要简单的“否定”一些表现不好的个体就行了。

把那些总是爱走下坡路的袋鼠射杀,这就是遗传算法的精粹!

一些概念

基因型(genotype):性状染色体的内部表现;

表现型(phenotype):染色体决定的性状的外部表现,或者说,根据基因型形成的个体的外部表现;

进化(evolution):种群逐渐适应生存环境,品质不断得到改良。生物的进化是以种群的形式进行的。

适应度(fitness):度量某个物种对于生存环境的适应程度。

选择(selection):以一定的概率从种群中选择若干个个体。一般,选择过程是一种基于适应度的优胜劣汰的过程。

复制(reproduction):细胞分裂时,遗传物质DNA通过复制而转移到新产生的细胞中,新细胞就继承了旧细胞的基因。

交叉(crossover):两个染色体的某一相同位置处DNA被切断,前后两串分别交叉组合形成两个新的染色体。也称基因重组或杂交;

变异(mutation):复制时可能(很小的概率)产生某些复制差错,变异产生新的染色体,表现出新的性状。

编码(coding):DNA中遗传信息在一个长链上按一定的模式排列。遗传编码可看作从表现型到基因型的映射。

解码(decoding):基因型到表现型的映射。

个体(individual):指染色体带有特征的实体;

种群(population):个体的集合,该集合内个体数称为种群的大小。

编制袋鼠的染色体----基因的编码方式

二进制编码法

受到人类染色体结构的启发,我们可以设想一下,假设目前只有“0”,“1”两种碱基,我们也用一条链条把他们有序的串连在一起,因为每一个单位都能表现出 1 bit的信息量,所以一条足够长的染色体就能为我们勾勒出一个个体的所有特征。这就是二进制编码法,染色体大致如下:

010010011011011110111110

浮点数编码

上面的编码方式虽然简单直观,但明显地,当个体特征比较复杂的时候,需要大量的编码才能精确地描述,相应的解码过程(类似于生物学中的DNA翻译过程,就是把基因型映射到表现型的过程。)将过分繁复,为改善遗传算法的计算复杂性、提高运算效率,提出了浮点数编码。染色体大致如下:

1.2 –3.3 – 2.0 –5.4 – 2.7 – 4.3

只编码主要特征

那么我们如何利用这两种编码方式来为袋鼠的染色体编码呢?因为编码的目的是建立表现型到基因型的映射关系,而表现型一般就被理解为个体的特征。比如人的基因型是46条染色体所描述的却能解码成一个眼,耳,口,鼻等特征各不相同的活生生的人。所以我们要想为“袋鼠”的染色体编码,我们必须先来考虑“袋鼠”的“个体特征”是什么。也许有的人会说,袋鼠的特征很多,比如性别,身长,体重,也许它喜欢吃什么也能算作其中一个特征。但具体在解决这个问题的情况下,我们应该进一步思考:无论这只袋鼠是长短,肥瘦,黑白,只要它在低海拔就会被射杀,同时也没有规定身长的袋鼠能跳得远一些,身短的袋鼠跳得近一些。当然它爱吃什么就更不相关了。我们由始至终都只关心一件事情:袋鼠在哪里。因为只要我们知道袋鼠在那里,我们就能做两件必须去做的事情:

1、通过查阅喜玛拉雅山脉的地图来得知袋鼠所在的海拔高度(通过自变量求适应函数的值。)以判断我们有没必要把它射杀。

2、知道袋鼠跳一跳(交叉和变异)后去到哪个新位置。

Tips:必须把具体问题抽象成数学模型,突出主要矛盾,舍弃次要矛盾。只有这样才能简洁而有效的解决问题。

物竞天择--适应性评分与及选择函数

物竞――适应度函数(fitness function)

自然界生物竞争过程往往包含两个方面:生物相互间的搏斗与及生物与客观环境的搏斗过程。但在我们这个实例里面,你可以想象到,袋鼠相互之间是非常友好的,它们并不需要互相搏斗以争取生存的权利。它们的生死存亡更多是取决于你的判断。因为你要衡量哪只袋鼠该杀,哪只袋鼠不该杀,所以你必须制定一个衡量的标准。而对于这个问题,这个衡量的标准比较容易制定:袋鼠所在的海拔高度。(因为你单纯地希望袋鼠爬得越高越好。)所以我们直接用袋鼠的海拔高度作为它们的适应性评分。即适应度函数直接返回函数值就行了。

天择――选择函数(selection)

自然界中,越适应的个体就越有可能繁殖后代。但是也不能说适应度越高的就肯定后代越多,只能是从概率上来说更多。(毕竟有些所处海拔高度较低的袋鼠很幸运,逃过了你的眼睛。)那么我们怎么来建立这种概率关系呢?下面我们介绍一种常用的选择方法――轮盘赌(Roulette Wheel Selection)选择法

轮盘赌(Roulette Wheel Selection)选择法——选择繁衍的袋鼠

比如我们有5条染色体,他们所对应的适应度评分分别为:5,7,10,13,15

所以累计总适应度为:

F=i=1nfi=5+7+10+13+15=50 F=\sum_{i=1}^{n} f_{i}=5+7+10+13+15=50

所以各个个体被选中的概率分别为:

P1=f1F×100%=550×100%=10%P2=f2F×100%=750×100%=14%P3=f3F×100%=1050×100%=20%P4=f4F×100%=1350×100%=26%P5=f5F×100%=1550×100%=30% \begin{array}{l}{P_{1}=\frac{f_{1}}{F} \times 100 \%=\frac{5}{50} \times 100 \%=10 \%} \\ {P_{2}=\frac{f_{2}}{F} \times 100 \%=\frac{7}{50} \times 100 \%=14 \%} \\ {P_{3}=\frac{f_{3}}{F} \times 100 \%=\frac{10}{50} \times 100 \%=20 \%} \\ {P_{4}=\frac{f_{4}}{F} \times 100 \%=\frac{13}{50} \times 100 \%=26 \%} \\ {P_{5}=\frac{f_{5}}{F} \times 100 \%=\frac{15}{50} \times 100 \%=30 \%}\end{array}

Image Name

适应度评分越高的个体被选中的概率越大,也就是繁殖后代的概率越大。

遗传变异――基因重组(交叉)与基因突变

基因重组与基因突变是使得子代不同于父代的根本原因。对于这两种遗传操作,二进制编码和浮点型编码在处理上有很大的差异,其中二进制编码的遗传操作过程,比较类似于自然界里面的过程,下面将分开讲述。

注意,子代不一定优于父代,只有经过自然的选择后,才会出现子代优于父代的倾向

基因重组/交叉(recombination/crossover)

二进制编码

二进制编码的基因交换过程非常类似高中生物中所讲的同源染色体的联会过程――随机把其中几个位于同一位置的编码进行交换,产生新的个体。

Image Name

浮点数编码

如果一条基因中含有多个浮点数编码,那么也可以用跟上面类似的方法进行基因交叉,不同的是进行交叉的基本单位不是二进制码,而是浮点数。而如果对于单个浮点数的基因交叉,就有其它不同的重组方式了,比如中间重组:随机产生就能得到介于父代基因编码值和母代基因编码值之间的值作为子代基因编码的值。比如5.5和6交叉,产生5.7,5.6。

考虑到“袋鼠跳”问题的具体情况――袋鼠的个体特征仅仅表现为它所处的位置。可以想象,同一个位置的袋鼠的基因是完全相同的,而两条相同的基因进行交叉后,相当于什么都没有做,所以我们不打算在这个例子里面使用交叉这一个遗传操作步骤。(当然硬要这个操作步骤也不是不行的,你可以把两只异地的袋鼠捉到一起,让它们交配,然后产生子代,再把它们送到它们应该到的地方。)

基因突变(Mutation)

二进制编码

基因突变过程:基因突变是染色体的某一个位点上基因的改变。基因突变使一个基因变成它的等位基因,并且通常会引起一定的表现型变化。正如上面所说,二进制编码的遗传操作过程和生物学中的过程非常相类似,基因串上的“ 0”或“ 1”有一定几率变成与之相反的“ 1”或“ 0”。例如下面这串二进制编码:

101101001011001

经过基因突变后,可能变成以下这串新的编码:

001101011011001

浮点数编码

浮点型编码的基因突变过程一般是对原来的浮点数增加或者减少一个小随机数。比如原来的浮点数串如下:

1.2,3.4,5.1, 6.0, 4.5

变异后,可能得到如下的浮点数串:

1.3,3.1,4.9, 6.3, 4.4

当然,这个小随机数也有大小之分,我们一般管它叫“步长”。(想想“袋鼠跳”问题,袋鼠跳的长短就是这个步长。)一般来说**步长越大,开始时进化的速度会比较快,但是后来比较难收敛到精确的点上。**而小步长却能较精确的收敛到一个点上。

很多时候为了加快遗传算法的进化速度,而又能保证后期能够比较精确地收敛到最优解,会采取动态改变步长的方法。(与模拟退火过程比较相类似)


至此,我们了解了遗传算法的各个步骤,流程图如下:

Image Name


遗传算法案例代码求解

https://blog.csdn.net/quinn1994/article/details/80501542

现在我们用 Python 来实现遗传算法(求解例1)

1.种群初始化

(1)随机生成若干个数的二进制染色体。

# -*-coding:utf-8 -*-
#目标求解2*sin(x)+cos(x)最大值
import random
import math
import matplotlib.pyplot as plt
#初始化生成chromosome_length大小的population_size个个体的二进制基因型种群
def species_origin(population_size,chromosome_length):population=[[]]#二维列表,包含染色体和基因for i in range(population_size):temporary=[]#染色体暂存器for j in range(chromosome_length):temporary.append(random.randint(0,1))#随机产生一个染色体,由二进制数组成population.append(temporary)#将染色体添加到种群中return population[1:]# 将种群返回,种群是个二维数组,个体和染色体两维

(2)编码

将二进制的染色体基因型编码成十进制的表现型。

#从二进制到十进制#input:种群,染色体长度
def translation(population,chromosome_length):temporary=[]for i in range(len(population)):total=0for j in range(chromosome_length):total+=population[i][j]*(math.pow(2,j))#从第一个基因开始,每位对2求幂,再求和# 如:0101 转成十进制为:1 * 2^0 + 0 * 2^1 + 1 * 2^2 + 0 * 2^3 = 1 + 0 + 4 + 0 = 5temporary.append(total)#一个染色体编码完成,由一个二进制数编码为一个十进制数return temporary# 返回种群中所有个体编码完成后的十进制数

2.适应度计算

个体适应度与其对应的个体表现型x的目标函数值相关联,x越接近于目标函数的最优点,其适应度越大,从而其存活的概率越大。反之适应度越小,存活概率越小。这就引出一个问题关于适应度函数的选择,本例中,函数值总取非负值,以函数最大值为优化目标,故直接将目标函数作为适应度函数。这里我们直接将目标函数2*sin(x)+cos作为个体适应度。如果,你想优化的是多元函数的话,需要将个体中基因型的每个变量提取出来,分别带入目标函数。比如说:我们想求x1+lnx2的最大值。基因编码为4位编码,其中前两位是x1,后两位是x2。那么我们在求适应度的时候,需要将这两个值分别带入f(x1)=x,f(x2)=lnx。再对f(x1)和f(x2)求和得到此个体的适应度。在本篇中,虽然染色体长度为10,但是实际上只有一个变量。

# 目标函数相当于环境 对染色体进行筛选,这里是2*sin(x)+cos(x)
def function(population,chromosome_length,max_value):temporary=[]function1=[]temporary=translation(population,chromosome_length)# 暂存种群中的所有的染色体(十进制)for i in range(len(temporary)):x=temporary[i]*max_value/(math.pow(2,chromosome_length)-1)#一个基因代表一个决策变量,其算法是先转化成十进制,然后再除以2的基因个数次方减1(固定值)。function1.append(2*math.sin(x)+math.cos(x))#这里将2*sin(x)+cos(x)作为目标函数,也是适应度函数return function1

我们对个体的适应度调整的目的有两个:

一是维持个体之间的合理差距,加速竞争。

二是避免个体之间的差距过大,限制竞争。

3.选择操作

(1).只保留非负值的适应度/函数值(不小于0)——避免轮盘赌出现负的概率

def fitness(function1):fitness1=[]min_fitness=mf=0for i in range(len(function1)):if(function1[i]+mf>0):temporary=mf+function1[i]else:temporary=0.0# 如果适应度小于0,则定为0fitness1.append(temporary)#将适应度添加到列表中return fitness1

(2).首先计算出所有个体的适应度总和Σfi

#计算适应度和
def sum(fitness1):total=0for i in range(len(fitness1)):total+=fitness1[i]return total#计算适应度斐波纳挈列表,这里是为了求出累积的适应度
def cumsum(fitness1):for i in range(len(fitness1)-2,-1,-1):# range(start,stop,[step])# 倒计数total=0j=0while(j<=i):total+=fitness1[j]j+=1#这里是为了将适应度划分成区间fitness1[i]=totalfitness1[len(fitness1)-1]=1

(3).再产生一个0到1之间的随机数,依据随机数出现在上述哪个概率区域内来确定各个个体被选中的次数。

#3.选择种群中个体适应度最大的个体
def selection(population,fitness1):new_fitness=[]#单个公式暂存器total_fitness=sum(fitness1)#将所有的适应度求和for i in range(len(fitness1)):new_fitness.append(fitness1[i]/total_fitness)#将所有个体的适应度概率化,类似于softmaxcumsum(new_fitness)#将所有个体的适应度划分成区间ms=[]#存活的种群population_length=pop_len=len(population)#求出种群长度#根据随机数确定哪几个能存活for i in range(pop_len):ms.append(random.random())# 产生种群个数的随机值ms.sort()# 存活的种群排序fitin=0newin=0new_population=new_pop=population#轮盘赌方式while newin<pop_len:if(ms[newin]<new_fitness[fitin]):new_pop[newin]=pop[fitin]newin+=1else:fitin+=1population=new_pop

4.交叉

def crossover(population,pc):
#pc是概率阈值,选择单点交叉还是多点交叉,生成新的交叉个体,这里没用pop_len=len(population)for i in range(pop_len-1):cpoint=random.randint(0,len(population[0]))#在种群个数内随机生成单点交叉点temporary1=[]temporary2=[]temporary1.extend(pop[i][0:cpoint])temporary1.extend(pop[i+1][cpoint:len(population[i])])#将tmporary1作为暂存器,暂时存放第i个染色体中的前0到cpoint个基因,#然后再把第i+1个染色体中的后cpoint到第i个染色体中的基因个数,补充到temporary2后面temporary2.extend(pop[i+1][0:cpoint])temporary2.extend(pop[i][cpoint:len(pop[i])])# 将tmporary2作为暂存器,暂时存放第i+1个染色体中的前0到cpoint个基因,# 然后再把第i个染色体中的后cpoint到第i个染色体中的基因个数,补充到temporary2后面pop[i]=temporary1pop[i+1]=temporary2# 第i个染色体和第i+1个染色体基因重组/交叉完成

5.变异

#step4:突变
def mutation(population,pm):# pm是概率阈值px=len(population)# 求出种群中所有种群/个体的个数py=len(population[0])# 染色体/个体中基因的个数for i in range(px):if(random.random()<pm):#如果小于阈值就变异mpoint=random.randint(0,py-1)# 生成0到py-1的随机数if(population[i][mpoint]==1):#将mpoint个基因进行单点随机变异,变为0或者1population[i][mpoint]=0else:population[i][mpoint]=1

6.其他

# 将每一个染色体都转化成十进制 max_value为基因最大值,为了后面画图用
def b2d(b,max_value,chromosome_length):total=0for i in range(len(b)):total=total+b[i]*math.pow(2,i)#从第一位开始,每一位对2求幂,然后求和,得到十进制数?total=total*max_value/(math.pow(2,chromosome_length)-1)return total#寻找最好的适应度和个体
def best(population,fitness1):px=len(population)bestindividual=[]bestfitness=fitness1[0]for i in range(1,px):# 循环找出最大的适应度,适应度最大的也就是最好的个体if(fitness1[i]>bestfitness):bestfitness=fitness1[i]bestindividual=population[i]return [bestindividual,bestfitness]

7.主程序

population_size=500
max_value=10
# 基因中允许出现的最大值
chromosome_length=10
pc=0.6
pm=0.01results=[[]]
fitness1=[]
fitmean=[]population=pop=species_origin(population_size,chromosome_length)
#生成一个初始的种群for i in range(population_size):#注意这里是迭代500次function1=function(population,chromosome_length,max_value)fitness1=fitness(function1)best_individual,best_fitness=best(population,fitness1)results.append([best_fitness,b2d(best_individual,max_value,chromosome_length)])#将最好的个体和最好的适应度保存,并将最好的个体转成十进制selection(population,fitness1)#选择crossover(population,pc)#交配mutation(population,pm)#变异results=results[1:]
results.sort()
X=[]
Y=[]
for i in range(500):#500轮的结果X.append(i)Y.append(results[i][0])
plt.plot(X,Y)
plt.show()

完整代码

# -*-coding:utf-8 -*-
#目标求解2*sin(x)+cos(x)最大值
%matplotlib notebook
import random
import math
import matplotlib.pyplot as plt
%matplotlib inline
class GA(object):
#初始化种群 生成chromosome_length大小的population_size个个体的种群def __init__(self,population_size,chromosome_length,max_value,pc,pm):self.population_size=population_sizeself.choromosome_length=chromosome_length# self.population=[[]]self.max_value=max_valueself.pc=pcself.pm=pm# self.fitness_value=[]def species_origin(self):population=[[]]for i in range(self.population_size):temporary=[]#染色体暂存器for j in range(self.choromosome_length):temporary.append(random.randint(0,1))#随机产生一个染色体,由二进制数组成population.append(temporary)#将染色体添加到种群中return population[1:]# 将种群返回,种群是个二维数组,个体和染色体两维#从二进制到十进制#编码  input:种群,染色体长度 编码过程就是将多元函数转化成一元函数的过程def translation(self,population):temporary=[]for i in range(len(population)):total=0for j in range(self.choromosome_length):total+=population[i][j]*(math.pow(2,j))#从第一个基因开始,每位对2求幂,再求和# 如:0101 转成十进制为:1 * 20 + 0 * 21 + 1 * 22 + 0 * 23 = 1 + 0 + 4 + 0 = 5temporary.append(total)#一个染色体编码完成,由一个二进制数编码为一个十进制数return temporary# 返回种群中所有个体编码完成后的十进制数#from protein to function,according to its functoin value#a protein realize its function according its structure
# 目标函数相当于环境 对染色体进行筛选,这里是2*sin(x)+math.cos(x)def function(self,population):temporary=[]function1=[]temporary=self.translation(population)for i in range(len(temporary)):x=temporary[i]*self.max_value/(math.pow(2,self.choromosome_length)-10)function1.append(2*math.sin(x)+math.cos(x))#这里将sin(x)作为目标函数return function1#定义适应度def fitness(self,function1):fitness_value=[]num=len(function1)for i in range(num):if(function1[i]>0):temporary=function1[i]else:temporary=0.0# 如果适应度小于0,则定为0fitness_value.append(temporary)#将适应度添加到列表中return fitness_value#计算适应度和def sum(self,fitness_value):total=0for i in range(len(fitness_value)):total+=fitness_value[i]return total#计算适应度斐伯纳且列表def cumsum(self,fitness1):for i in range(len(fitness1)-2,-1,-1):# range(start,stop,[step])# 倒计数total=0j=0while(j<=i):total+=fitness1[j]j+=1fitness1[i]=totalfitness1[len(fitness1)-1]=1#3.选择种群中个体适应度最大的个体def selection(self,population,fitness_value):new_fitness=[]#单个公式暂存器total_fitness=self.sum(fitness_value)#将所有的适应度求和for i in range(len(fitness_value)):new_fitness.append(fitness_value[i]/total_fitness)#将所有个体的适应度正则化self.cumsum(new_fitness)#ms=[]#存活的种群population_length=pop_len=len(population)#求出种群长度#根据随机数确定哪几个能存活for i in range(pop_len):ms.append(random.random())# 产生种群个数的随机值# ms.sort()# 存活的种群排序fitin=0newin=0new_population=new_pop=population#轮盘赌方式while newin<pop_len:if(ms[newin]<new_fitness[fitin]):new_pop[newin]=population[fitin]newin+=1else:fitin+=1population=new_pop#4.交叉操作def crossover(self,population):
#pc是概率阈值,选择单点交叉还是多点交叉,生成新的交叉个体,这里没用pop_len=len(population)for i in range(pop_len-1):if(random.random()<self.pc):cpoint=random.randint(0,len(population[0]))#在种群个数内随机生成单点交叉点temporary1=[]temporary2=[]temporary1.extend(population[i][0:cpoint])temporary1.extend(population[i+1][cpoint:len(population[i])])#将tmporary1作为暂存器,暂时存放第i个染色体中的前0到cpoint个基因,#然后再把第i+1个染色体中的后cpoint到第i个染色体中的基因个数,补充到temporary2后面temporary2.extend(population[i+1][0:cpoint])temporary2.extend(population[i][cpoint:len(population[i])])# 将tmporary2作为暂存器,暂时存放第i+1个染色体中的前0到cpoint个基因,# 然后再把第i个染色体中的后cpoint到第i个染色体中的基因个数,补充到temporary2后面population[i]=temporary1population[i+1]=temporary2# 第i个染色体和第i+1个染色体基因重组/交叉完成def mutation(self,population):# pm是概率阈值px=len(population)# 求出种群中所有种群/个体的个数py=len(population[0])# 染色体/个体基因的个数for i in range(px):if(random.random()<self.pm):mpoint=random.randint(0,py-1)#if(population[i][mpoint]==1):#将mpoint个基因进行单点随机变异,变为0或者1population[i][mpoint]=0else:population[i][mpoint]=1#transform the binary to decimalism
# 将每一个染色体都转化成十进制 max_value,再筛去过大的值def b2d(self,best_individual):total=0b=len(best_individual)for i in range(b):total=total+best_individual[i]*math.pow(2,i)total=total*self.max_value/(math.pow(2,self.choromosome_length)-1)return total#寻找最好的适应度和个体def best(self,population,fitness_value):px=len(population)bestindividual=[]bestfitness=fitness_value[0]# print(fitness_value)for i in range(1,px):# 循环找出最大的适应度,适应度最大的也就是最好的个体if(fitness_value[i]>bestfitness):bestfitness=fitness_value[i]bestindividual=population[i]return [bestindividual,bestfitness]def plot(self, results):X = []Y = []for i in range(500):X.append(i)Y.append(results[i][0])plt.plot(X, Y)plt.show()def main(self):results = [[]]fitness_value = []fitmean = []population = pop = self.species_origin()for i in range(500):function_value = self.function(population)# print('fit funtion_value:',function_value)fitness_value = self.fitness(function_value)# print('fitness_value:',fitness_value)best_individual, best_fitness = self.best(population,fitness_value)results.append([best_fitness, self.b2d(best_individual)])# 将最好的个体和最好的适应度保存,并将最好的个体转成十进制,适应度函数self.selection(population,fitness_value)self.crossover(population)self.mutation(population)results = results[1:]results.sort()self.plot(results)if __name__ == '__main__':population_size=400max_value=10chromosome_length=20pc=0.6pm=0.01ga=GA(population_size,chromosome_length,max_value,pc,pm)ga.main()

作为对比下面简单介绍“袋鼠跳”的几种方式。

1、爬山法(最速上升爬山法):

从搜索空间中随机产生邻近的点,从中选择对应解最优的个体,替换原来的个体,不断重复上述过程。因为爬山法只对“邻近”的点作比较,所以目光比较“短浅”,常常只能收敛到离开初始位置比较近的局部最优解上面。对于存在很多局部最优点的问题,通过一个简单的迭代找出全局最优解的机会非常渺茫。(在爬山法中,袋鼠最有希望到达最靠近它出发点的山顶,但不能保证该山顶是珠穆朗玛峰,或者是一个非常高的山峰。因为一路上它只顾上坡,没有下坡。)

2、 模拟退火:

这个方法来自金属热加工过程的启发。在金属热加工过程中,当金属的温度超过它的熔点(Melting Point)时,原子就会激烈地随机运动。与所有的其它的物理系统相类似,原子的这种运动趋向于寻找其能量的极小状态。在这个能量的变迁过程中,开始时,温度非常高, 使得原子具有很高的能量。随着温度不断降低,金属逐渐冷却,金属中的原子的能量就越来越小,最后达到所有可能的最低点。利用模拟退火的时候,让算法从较大的跳跃开始,使到它有足够的“能量”逃离可能“路过”的局部最优解而不至于限制在其中,当它停在全局最优解附近的时候,逐渐的减小跳跃量,以便使其“落脚 ”到全局最优解上。(在模拟退火中,袋鼠喝醉了,而且随机地大跳跃了很长时间。运气好的话,它从一个山峰跳过山谷,到了另外一个更高的山峰上。但最后,它渐渐清醒了并朝着它所在的峰顶跳去。)

微信公众号:邯郸路220号子彬院 获取更多内容

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 辽宁鞍山铁东区“惠斯勒”小区违章建筑

    原标题:辽宁鞍山铁东区“惠斯勒”小区违章建筑辽宁省鞍山市铁东区“惠斯勒”小区是鞍山比较高档的全封闭管理住宅小区。相对文明程度以及住宅人员素质较高,有相当部分的离退休老干部以及在职的高级干部居住在此。 按照常理,这样的一个小区人员素质要高于普通的居住居民。然…...

    2024/4/30 16:55:48
  2. 关于navicat报错:Server unexpectedly closed network connection

    破解navicat后 使用navicat连接本地虚拟机 发现出现以下错误在百度以及谷歌上面查找很多博客 发现我这里的报错信息跟他们不一样 解决方法 1-打开本地虚拟机 进入mysql mysql -uroot -pqwe1232-执行代码use mysql然后发现这里有个问题 用户root的权限仅在localhost 没有为%(…...

    2024/4/13 23:01:46
  3. 550份简历、300套大公司笔/面试题,限时免费分享

    原标题:550份简历、300套大公司笔/面试题,限时免费分享提醒:文末查看求职大礼包下载方式,限时免费下载! 【写在前面】 春风吹过的时候,又到了求职的黄金期,如果你想换工作,那么3-4月,将是你跳槽最理想的时间。 这个时候。 大部分人已经拿到了年终奖。 很多想离职…...

    2024/4/30 18:45:44
  4. kbengine 常见问题汇总

    Q: KBEngine是什么,能用来做什么? A: KBEngine是一个通用网络游戏服务器引擎,适合绝大多数中心拓扑结构的网络游戏,包括但不限于即时和回合制MMORPG、副本类、房间类、卡牌、棋牌等。不适合基于P2P技术的游戏类型。 Q: 服务器的网络协议用的是什么? A: 组网时用UDP协议,其…...

    2024/4/30 19:44:22
  5. 名古屋中部国际机场将从3月9日(周一)起展出利用现代技术描绘日本茶道精神世界的装置

    日本爱知县--(美国商业资讯)--日本政府文化厅正针对入境游客推行一项新倡议——“在机场和其他机构宣传日本文化媒体艺术的倡议”。此新闻稿包含多媒体内容。完整新闻稿可在以下网址查阅:https://www.businesswire.com/news/home/20200306005229/en/名古屋中部国际机场展览概述…...

    2024/4/30 19:35:19
  6. 执行力差是现象,管理不善才是本质

    原标题:执行力差是现象,管理不善才是本质《致加西亚的信》传入国内之后,陆续成为很多企业管理者眼中的“圣经”,有的管理者会采购一批书分发给团队学习,美其名曰:学习执行力。 「交代你这么简单的任务怎么都没完成,就不能让我省点心?」 「我要的不是这个,你给我这个…...

    2024/4/30 20:40:33
  7. xingtai -调皮的小球

    # 窗口,退出,图画,操作,战绩,,五毛特效,音乐 # 2D 游戏 import pygame import sys # 1.加载中,初始化,loading pygame.init() # 2.窗口 dis分开 play玩 ---展览馆--展示 screen = pygame.display.set_mode((700,600))# 3。刷新 update 升级 ball_x = 350 ball_y =…...

    2024/4/30 19:22:04
  8. 《人民的名义》折射的中国式家庭教育

    原标题:《人民的名义》折射的中国式家庭教育最近,最火的电视剧就是《人民的名义》了。当然,阿布也一直在追剧。 不过,阿布除了看到大家都看到的东西,还可能看到一些很难引起大家注意的细节,比如家庭教育问题。 虽然剧中表现的并不是很多,但包含的内容却很丰富,不妨来…...

    2024/3/22 13:56:23
  9. gitlab安装

    依赖安装配置sudo yum install curl policycoreutils openssh-server openssh-clientssudo systemctl enable sshdsudo systemctl start sshdsudo yum install postfixsudo systemctl enable postfixsudo systemctl start postfixgitlab 安装 curl https://packages.gitlab.com…...

    2024/4/30 22:29:31
  10. 速读原著-TCP/IP(TCP窗口大小)

    第20章 TCP的成块数据流 20.4 窗口大小 由接收方提供的窗口的大小通常可以由接收进程控制,这将影响 T C P的性能。4 . 2 B S D默认设置发送和接受缓冲区的大小为2 0 4 8个字节。在4 . 3 B S D中双方被增加为4 0 9 6个字节。正如我们在本书中迄今为止所看到的例子一样, SunOS …...

    2024/4/30 19:45:02
  11. 尼基塔第4季 第6集

    原标题:尼基塔第4季 第6集Nikita对MDK组织仍然活跃的事实感到不满,发誓要用自己的方式来彻底终结它。Nikita再次离开Michael及她的团队,带Alex一起踏上复仇之路。Nikita和Alex抓住了Jones,强迫他提供其余MDK组织成员的名单。在掌握充分的信息之后,Nikita决定向一条黑暗的道…...

    2024/4/14 3:48:28
  12. ZZULIOJ-1017,判断正整数位数(Python)

    题目描述:给定一个不多于5位的正整数,判断它是几位数,并输出。 输入: 一个不多于5位的正整数。 输出: 输出正整数的位数,单独占一行。 样例输入: 111 样例输出: 3 程序代码①: import math n=int(input()) x=(int)(math.log10(n))+1 print(x)程序代码②: n=int(i…...

    2024/4/30 19:16:26
  13. 600万家长信赖的睿莱体测助力YBDL篮球冬令营

    原标题:600万家长信赖的睿莱体测助力YBDL篮球冬令营近日,中小学寒假在即,各家体育机构各出奇招,争抢寒假班生源;YBDL青少年篮球发展联盟始终精于品质和服务,引进了600万家长都信赖的运动体能测评体系,开展“篮球冬令营训练+篮球运动体能测评+数据化呈现教学成果”的定制…...

    2024/3/22 13:56:20
  14. 速读原著-TCP/IP(PUSH标志)

    第20章 TCP的成块数据流 20.5 PUSH标志 在每一个T C P例子中,我们都看到了 P U S H标志,但一直没有介绍它的用途。发送方使用该标志通知接收方将所收到的数据全部提交给接收进程。这里的数据包括与 P U S H一起传送的数据以及接收方T C P已经为接收进程收到的其他数据。 在最…...

    2024/4/30 19:37:20
  15. 2019中国足协女甲联赛|山东,浙江直接升入女超;河北华夏参加升级附加赛

    原标题:2019中国足协女甲联赛|山东,浙江直接升入女超;河北华夏参加升级附加赛2019中国足协女甲联赛第18轮于10月26日下午3点统一进行。八一客场不敌四川女足,浙江女足主场完胜河北精英,河北华夏同样在主场战胜重庆,最终,山东、浙江直接获得女超资格,河北华夏获得参加升…...

    2024/3/22 13:56:16
  16. linux 命令

    linxu 解压war包 unzip -oq jenkins2.164.war -d jenkins 查询所有的软连接 find ./ -lname v1.txt 查询全部服务 systemctl list-unit-files 服务文件放置的位置 /lib/systemd/system/ 查看 开机启动状态 systemctl status rc-local.service nohup nohup ./program >/dev/n…...

    2024/4/30 20:43:10
  17. 扎心了,老铁!买沙发趁现在,折扣进行中ing

    原标题:扎心了,老铁!买沙发趁现在,折扣进行中ing号外号外!!!青岛爱诺家具儿童爬行垫、韩国进口床垫清仓大甩卖啦~ 接下来跟大家介绍一下我们的产品 儿童爬行垫 儿童爬行垫 环保材料制成,安全没异味 1.5*2米 ,可折叠 全国包邮,朋友们快行动起来啊,超低价格哦。…...

    2024/3/22 13:56:14
  18. ZZULIOJ-1018,奇数偶数(Python)

    题目描述:输入一个整数,判断该数是奇数还是偶数。 输入: 输入整数n。 输出: 如果该数是奇数就输出“odd”,偶数就输出“even”(输出不含双引号)。 样例输入: 8 样例输出: even 程序代码: a=int(input()) if a%2==0 :print("even") else :print("od…...

    2024/3/8 13:30:23
  19. 速读原著-TCP/IP(慢启动)

    第20章 TCP的成块数据流 20.6 慢启动 迄今为止,在本章所有的例子中,发送方一开始便向网络发送多个报文段,直至达到接收方通告的窗口大小为止。当发送方和接收方处于同一个局域网时,这种方式是可以的。但是如果在发送方和接收方之间存在多个路由器和速率较慢的链路时,就有可…...

    2024/4/1 8:27:36
  20. mysql时区与系统时区不一致问题:The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized

    错误消息:java.sql.sqlexception: the server time zone value ‘’ is unrecognized or represents more than one time zone. you must configure either the server or jdbc driver (via the servertimezone configuration property) to use a more specifc time zone valu…...

    2024/3/22 13:56:13

最新文章

  1. 树莓派驱动开发----spi flash设备w25q64开发

    这期使用的是spi驱动开发框架&#xff0c;其实spi和iic合起来有一个 Regmap 子系统&#xff0c;下回讲这个&#xff01;&#xff01; 使用方法 &#xff1a;./w25q64App /dev/w25q64-device <cmd> <address> <cnt> <data> ... 可读写擦&#xff0…...

    2024/4/30 23:53:48
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. windows更新驱动导致Linux虚拟机网卡找不到

    windows更新驱动导致Linux虚拟机网卡找不到 1、现象2、解决过程3、参考 1、现象 原先虚拟机配置了静态IP&#xff0c;更新windows驱动后xshell连接不上这台虚拟机&#xff08;其他几台也是&#xff09;。 2、解决过程 service network restart出现一下报错&#xff1a; Rest…...

    2024/4/30 4:13:40
  4. 分享一个基于Multi-SLAM+3DGS的新一代三维内容生产技术

    基于智能空间计算&#xff0c;新一代超逼真三维内容生成技术。 可自动化生成超逼真的大场景三维模型&#xff0c;并在各类终端和空间计算设备中&#xff0c;实现前所未有的沉浸式体验。 更可接入专业三维软件和应用平台&#xff0c;进行深度的模型开发与场景落地。 支持超大复杂…...

    2024/4/30 3:04:10
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/4/29 23:16:47
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/30 18:14:14
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/29 2:29:43
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/30 18:21:48
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/28 1:28:33
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/30 9:43:09
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/25 18:39:16
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/28 1:34:08
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/29 20:46:55
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/30 22:21:04
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/4/26 23:04:58
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/27 23:24:42
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/28 5:48:52
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/30 9:42:22
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/30 9:43:22
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/30 9:42:49
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57