Parameters 遗传算法二进制表示

Parameters 遗传算法二进制表示,parameters,genetic-algorithm,Parameters,Genetic Algorithm,我似乎找不到一个好的网站来解释GA(我对GA完全陌生),但我正在读一本书,上面说: 如果我们将截距的可能值限制在范围[-5,1.5],并将范围线性变换为二进制范围[0,2^8-1],那么值0.74将转换为10011110,[.74,-.11]的参数值可能由10011110110010表示 有人能给我解释一下吗 1) 范围的线性变换是如何工作的,以及 2) 10011110如何表示0.74 我对二进制的粗略了解会把它翻译成 2^8 0 0 2^5 2^4 2^3 2^2 2^1 也就是318 如

我似乎找不到一个好的网站来解释GA(我对GA完全陌生),但我正在读一本书,上面说:

如果我们将截距的可能值限制在范围[-5,1.5],并将范围线性变换为二进制范围[0,2^8-1],那么值0.74将转换为10011110,[.74,-.11]的参数值可能由10011110110010表示

有人能给我解释一下吗
1) 范围的线性变换是如何工作的,以及
2) 10011110如何表示0.74

我对二进制的粗略了解会把它翻译成

2^8 0 0 2^5 2^4 2^3 2^2 2^1
也就是318


如果你知道任何一个网站可能会将此解释为一个很好的介绍,这将有助于。谢谢

线性变换范围非常简单。一开始使用整数可能更容易

假设您的范围为[0,10],您希望将其转换为范围[0,20]。每个值只需乘以2,因此0=>0,1=>2,2=>4,3=>6,等等

现在让我们再举一个例子,你想把[1,10]翻译成[2,11]。为此,只需减去1(第一个范围的底部),然后再加2(第二个范围的最小值)。每个数字加1,1=>2,2=>3,3=>4,以此类推

现在如果你想把它们结合起来会发生什么。假设你想把10110翻译成30230。首先减去第一个数字的最小值10,所以最小值是0。然后乘以比例因子。在这种情况下,110-10=100和230-30=200,因此比例因子为200/100=2。然后添加第二个范围的最小值,即30。因此,要将i1转换为i2,需要i2=(i1-10)*2+30,然后可以对其进行简化

如果要将[-5,1.5]范围转换为[0255],可以减去-5(即加5),乘以256,除以6.5(从1.5--5=6.5),然后加0。因为处理的是整数值,所以需要将结果四舍五入到最接近的整数


此外,二进制计算中有一个小错误,最低数字是2^0,而不是2^1。所以你需要将318除以2才能得到正确的答案。

线性变换范围非常简单。一开始使用整数可能更容易

假设您的范围为[0,10],您希望将其转换为范围[0,20]。每个值只需乘以2,因此0=>0,1=>2,2=>4,3=>6,等等

现在让我们再举一个例子,你想把[1,10]翻译成[2,11]。为此,只需减去1(第一个范围的底部),然后再加2(第二个范围的最小值)。每个数字加1,1=>2,2=>3,3=>4,以此类推

现在如果你想把它们结合起来会发生什么。假设你想把10110翻译成30230。首先减去第一个数字的最小值10,所以最小值是0。然后乘以比例因子。在这种情况下,110-10=100和230-30=200,因此比例因子为200/100=2。然后添加第二个范围的最小值,即30。因此,要将i1转换为i2,需要i2=(i1-10)*2+30,然后可以对其进行简化

如果要将[-5,1.5]范围转换为[0255],可以减去-5(即加5),乘以256,除以6.5(从1.5--5=6.5),然后加0。因为处理的是整数值,所以需要将结果四舍五入到最接近的整数


此外,二进制计算中有一个小错误,最低数字是2^0,而不是2^1。因此,你需要把318到2除以得到正确的答案。

< P>我已经编写了一些C++中的函数优化的简单遗传算法。以下是源代码:

有两种实现:一种用于实数编码,另一种用于二进制表示,它还显示了如何从二进制字符串转换为实数间隔

代码中有很多注释,在你需要更多的时候,请告诉我什么不清楚,我会补充更多

问候,,
米哈伊

< P>我编写了一些C++函数优化的简单遗传算法。以下是源代码:

有两种实现:一种用于实数编码,另一种用于二进制表示,它还显示了如何从二进制字符串转换为实数间隔

代码中有很多注释,在你需要更多的时候,请告诉我什么不清楚,我会补充更多

问候,,
mihai

如果断章取义,就很难理解作者所说的话。请提供这样的书。如果断章取义,就很难理解作者所说的话。请提供这本书。