-
2019-01-10 15:57:13
//1、得到最小值
private static int min(int... is) {
int min = Integer.MAX_VALUE;
for (int i : is) {
if (min > i) {
min = i;
}
}
return min;
}
// 2、得到最小值
private static int min(int one, int two, int three) {
return (one = one < two ? one : two) < three ? one : three;
}更多相关内容 -
使用模拟退火算法求函数的最小值
2020-07-22 14:31:31该实验使用模拟退火算法求取函数的最小值,matlab自编程实现。该实验可以观察到搜索点的过程,也可以自行修改参数。 -
利用遗传算法求函数最小值-实例验证
2022-01-28 16:27:28资源包含以下内容: Sheffield的遗传算法工具箱 利用遗传算法求函数最小值.m -
matlab遗传算法求二元函数最小值.zip
2020-12-15 14:52:34求下列二元函数的最大值,f(x1,x2)=x1^2+x2^2,x1与x2的取值区间为{0,1,2,...,7} -
数组的最小值和最大值:查找第 k 个最小值或最大值及其索引。-matlab开发
2021-05-30 16:51:17MINMAX 查找第 k 个最小值或最大值及其索引。 用法: vals = minmax(data) % 找到最小值vals = minmax(data,k) % 找到第 k 个最小值vals = minmax(data,k,flag) % 找到第 k 个最大值[vals,loci] = minmax(:) [vals,... -
C#获取数组中最大最小值的方法
2020-09-03 14:31:10主要介绍了C#获取数组中最大最小值的方法,本文直接给出实例代码,需要的朋友可以参考下 -
python+遗传算法求解Ackley函数最小值问题
2022-04-19 14:59:26计算智能大作业,帮你们到这里了 -
使用遗传算法求二元函数的最小值
2020-09-17 23:37:21今天小编就为大家分享一篇使用遗传算法求二元函数的最小值,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 -
python实现列表中最大最小值输出的示例
2020-09-19 03:09:29今天小编就为大家分享一篇python实现列表中最大最小值输出的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 -
Java查找 List 中的最大最小值实例演示
2020-08-30 18:51:48主要介绍了JAVA得到数组中最大值和最小值的简单实例,需要的朋友可以参考下 -
linux shell实现求一个多维数组中的最大和最小值
2020-09-15 15:46:18主要介绍了linux shell实现求一个多维数组中的最大和最小值,需要的朋友可以参考下 -
java 求解二维数组列最小值
2020-08-30 12:37:10主要介绍了java 求解二维数组列最小值的相关资料,需要的朋友可以参考下 -
matlab返回最大值最小值及其对应的下标
2022-01-21 13:45:281. 基于matlab实现的返回矩阵的最大值最小值及其对应的小标 2. 函数特别简单,直接输入矩阵或者向量,返回矩阵的最大值最小值及其下标 -
遗传算法求解函数最小值问题
2019-05-17 10:21:51遗传算法求解函数最小值问题 继上一次用遗传算法求解TSP问题问题以后,万万没有想到,实验的时候,老师居然改了题目,改成了求解函数的最小值问题(有点坑哈),而且要求结果尽量的稳定,可以确定得到最小值,并且,...遗传算法求解函数最小值问题
继上一次用遗传算法求解TSP问题问题以后,万万没有想到,实验的时候,老师居然改了题目,改成了求解函数的最小值问题(有点坑哈),而且要求结果尽量的稳定,可以确定得到最小值,并且,精度尽可能的高……虽然有点坑,不过老师还是简单的说明了一下基本的思路,思路和上一次没有太大的变化,唯一的难点就是怎样尽可能的提高解的精度。
不管怎样,终究在实验课的时候解决了这个问题,唯一的问题就是进度最多10的负六次方,老师说他的精度可以达到10的负几百次方(膜拜……)。
思路不变,选择用轮盘赌,变异要稍微变一下,具体会在下面讲解,废话少说,进入正题。.问题描述:
设计高效遗传算法,求解下列函数在-5<=x1,x2<=5上的最小值:
在正式的开始求解之前,老师先将函数的图片展示了出来,如下图所示:
并且公布结果,在(0,0)的位置取得最小值0。
在这个结果的基础上,我们开始试验。代码编写:
首先是个体的类代码:
class problem1_individual(object): def __init__(self, n1, n2): self.gene = [n1, n2] self.score = 0 pass
接着轮盘赌选择的代码,和上一次没有多少变化,同样是采用倒数的方式来作为个体的适配值,因为事先知道结果的最小值为0,所以采用倒数的方式很好,因为越接近0,倒数越大,被选中的概率就越大。
代码如下所示:def roulette_wheel(self): """ 轮盘赌普通方法得到被选中的基因型 :param individuals: 种群中各个基因类型的数量 :return: 返回被选中的基因型的代号 """ all_individual = 0 for i in range(len(self.list)): all_individual += 1 / self.list[i].score probabilities = [] for i in range(len(self.list)): probabilities.append((1 / self.list[i].score) / all_individual) selected_individual = random.uniform(0, 1) now_individual = 0.0 for ind, val in enumerate(probabilities): now_individual += val if now_individual > selected_individual: return self.list[ind]
接着是交叉的代码。在编写之前还没有办法,个体是两个自变量,但是交叉怎么办?上网查了一下,有了思路,很简单,就是用不同的比例进行划分。
随机生成一0-1的数字,作为其中一个父个体的基因比例,再用1减去这个数字,得到另一个父个体的基因比例,两者相加得到的就是最后的孩子的基因序列:def crossgene(self, parent1, parent2, index1, index2): child = [0, 0] child[0] = parent1.gene[0] * index1 + parent2.gene[0] * index2 child[1] = parent1.gene[1] * index1 + parent2.gene[1] * index2 return child def crossover(self, father, mother): """ :param father: 需要进行遗传的父类个体 :param mother: 需要进行遗传的母类个体 :return: """ x = random.randint(0, 9999) # 变异有概率,大于某个值就不发生,小于某个值就发生变异 k = 10000 * self.variationrate if x < k: # 进行单点交换 index1 = random.uniform(0, 1) index2 = 1 - index1 child1 = self.crossgene(father, mother, index1, index2) child2 = self.crossgene(mother, father, index1, index2) else: child1 = father.gene child2 = mother.gene return child1, child2
结果测试:
代码编写完毕,现在进行测试,看看结果如何:
from problem1_GA import problem1_GA test = problem1_GA(1, 1) test.initpopulation() for i in range(10000): test.next_generation() generation, answer, score = test.get_what_we_need() print(str(answer[0])+" "+str(answer[1])+" "+str(score)) print() pass
迭代次数就采用10000次,看看最后的结果达到什么样的精度:
运气不错,最后的结果精度可以达到10^-9次方的水平。当然这次是运气好,但是不是每一次都可以重现这种操作,我还会继续的进行代码的优化,下一次让结果有更好的精度。
当然这都是后话。
最后完整的代码就放在以下链接中
遗传算法求解函数最小值问题
提取码:v2y6
还有上一次的文章缺少的CSDN链接,是tomcat的安装包和eclipse插件:
CSDN—tomcat
谢谢大家阅读! -
MATLAB_基于谷底最小值_
2021-09-29 09:02:35基于谷底最小值的阈值利用matlab平台实现所用图为基础雷纳图 -
python实现差分进化(DE)算法求解目标函数的最小值(最大值)
2022-03-26 14:53:55该代码实现了运用差分进化算法解决目标函数的最小值,这里解决的是目标函数y=x*sin(10*PI*x)+2的最小值,读者可以根据自己的需要进行修改目标函数求解最小值,同时可以修改代码求解最大值。 -
粒子群算法计算二元函数的最小值
2019-06-14 11:32:11本文件使用粒子群算法计算出二元函数的最小值,运行速度快。得到的最小值非常接近最优值。只需修改对应的函数表达式,根据所需要的区间,即可运行 -
局部最小值、最大值、最近邻:在向量中查找局部最小值、最大值、匹配值。-matlab开发
2021-06-01 21:24:54在向量中寻找局部最小值或最大值的函数集,在向量中找到最接近某个值的点,以及清除所有内容的小函数。 -
JavaScript 数组中最大最小值
2020-10-22 04:56:08本文给大家汇总介绍的是获取JavaScript 数组中最大最小值的方法和示例,非常的详细和全面,希望对大家学习JavaScript能够有所帮助 -
numpy找出array中的最大值,最小值实例
2020-12-24 16:30:23在python中利用numpy创建一个array, 然后我们想获取array的最大值,最小值。可以使用一下方法: 一、创建数组 这样就可以获得一个array的最大值和最小值了。 并且可以利用np.where(np.max(a))来获得最大值,最小值... -
python寻找list中最大值、最小值并返回其所在位置的方法
2020-09-20 08:04:59今天小编就为大家分享一篇python寻找list中最大值、最小值并返回其所在位置的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 -
遗传算法的应用————求函数最小值Matlab仿真
2019-08-04 19:16:51的最小值. 函数图像如图(及程序)所示: clear all; close all; clc; x=0:0.01:10; y=x+10*cos(5*x)+7*sin(4*x); figure plot(x,y) grid on xlabel('x') ylabel('f(x)') title('f(x)=x+10*cos(5*x)+7*sin(4*x)')...用标准遗传算法求函数:
的最小值.
函数图像如图(及程序)所示:
clear all;
close all;
clc;
x=0:0.01:10;
y=x+10*cos(5*x)+7*sin(4*x);
figure
plot(x,y)
grid on
xlabel('x')
ylabel('f(x)')
title('f(x)=x+10*cos(5*x)+7*sin(4*x)')
仿真过程如下:
(1)初始化种群数目NP=50
染色体二进制编码长度L=20
最大进化代数G=100
交叉概率Pc=0.8
变异概率pm=0.05
(2)a.产生初始化种群,将二进制编码转化为十进制;
b.计算个体适应度,并且进行归一化操作;
c.在选择操作中,选择基于轮盘赌的方式进行;
d.在交叉和变异过程,选择基于概率的方式进行;
e.产生新的种群,并把历代的最优个体留在新的种群之中;
f.重复b——e过程,进行下一步遗传操作。
(3)遗产算法的终止条件判断:
I.判断是否满足终止条件,若满足,则终止搜索过程,输出最优值;若不满足则继续进行迭代;
II.为了防止遗传过程过长,可以设置遗传代数控制搜索过程。
程序如下:
function result=func(x)
fit=x+10*cos(5*x)+7*sin(4*x);
result=fit;
%%%%%%%%%%%%%%求最小值%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%参数初始化%%%%%%%%%%%%%%%%%%%%%%
clear all;%清变量
close all;%清图
clc;%清屏NP=50;%种群规模为50个
L=20 ;%二进制字串长度
Pc=0.8;%交叉概率
Pm=0.05;%变异概率
G=100;%max generation
Xs=10;%上限
Xx=0;%下限
f=randint(NP,L);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%算法循环部分%%%%%%%%%%%%%
for k =1:G
for i=1:NP
U=f(i,:);
m=0;
for j=1:L
m=U(j)*2^(j-1)+m;
end
x(i)=Xx+m*(Xs-Xx)/(2^L-1);
Fit(i)=-func(x(i));
end
maxFit=max(Fit);%最大值
minFit=min(Fit);%最小值
rr=find(Fit==maxFit);
fBest=f(rr(1,1),:);%历代最小值
xBest=x(rr(1,1));
Fit=(Fit-minFit)/(maxFit-minFit);
%%%%基于轮盘赌的选择操作%%%%%%%
sum_Fit=sum(Fit);
fitvalue=Fit./sum_Fit;
fitvalue=cumsum(fitvalue);
ms=sort(rand(NP,1));
fiti=1;
newi=1;
while newi<=NP
if(ms(newi)<fitvalue(fiti))
nf(newi,:)=f(fiti,:);
newi=newi+1 ;
else
fiti=fiti+1;
end
end
%%%%基于概率的交叉操作%%%%%
for i=1:2:NP
p=rand;
if p<Pc
q=randint(1,L);
for j=1:L
if q(j)==1;
temp=nf(i+1,j);
nf(i+1,j)=nf(i,j);
nf(i,j)=temp;
end
end
end
end
%%%%基于概率的变异操作%%%
for m=1:NP
for n=1:L
r=rand(1,1);
if r<Pm
nf(m,n)=rand(1,1)*(Xs-Xx)+Xx;
end
end
end
f=nf;
f(1,:)=fBest;
trace(k)=-maxFit;
end
xBest;
figure
plot(trace)
xlabel('迭代次数')
ylabel('目标函数值')
title('适应度进化曲线')
x=xBest
y=-maxFit
运行结果:
-
JAVA得到数组中最大值和最小值的简单实例
2020-09-04 06:22:02主要介绍了JAVA得到数组中最大值和最小值的简单实例,需要的朋友可以参考下 -
PSO粒子群算法求最大最小值 -——python
2020-10-29 22:54:15通过PSO粒子群算法求最大最小值,可直接运行。粒子群算法通过设计一种无质量的粒子来模拟鸟群中的鸟,粒子仅具有两个属性:速度和位置,速度代表移动的快慢,位置代表移动的方向。每个粒子在搜索空间中单独的搜寻最... -
基于matlab实现牛顿法求最小值
2021-01-03 13:27:01基于matlab实现牛顿法求最小值 -
求js数组的最大值和最小值的四种方法
2020-10-20 07:17:05本篇文章主要介绍了求js数组的最大值和最小值的四种方法,具有很好的参考价值。下面跟着小编一起来看下吧 -
粒子群算法PSO优化方程最小值
2020-11-11 11:42:35利用粒子群算法优化方程最小值,方程变量个数可变,方程可自行定义,运行结果正确。粒子群算法( Particle Swarm Optimization, PSO)最早是由Eberhart和Kennedy于1995年提出,它的基本概念源于对鸟群觅食行为的研究... -
ArcGIS计算最大最小值
2019-06-10 21:08:331、ArcTools——Data Management Tools ——Raster——Raster Properties1、ArcTools——Data Management Tools ——Raster——Raster Properties
-
java利用数组求平均值,最大值,最小值
2020-09-04 22:49:30java利用数组求平均值,最大值,最小值。需要的朋友可以过来参考下,希望对大家有所帮助 -
C语言程序设计-给定n个数据, 求最小值出现的位置(如果最小值出现多次,求出第一次出现的位置即可);...
2021-10-31 21:50:43C语言程序设计-给定n个数据, 求最小值出现的位置(如果最小值出现多次,求出第一次出现的位置即可);.c