我需要为正值0→∞创建一个归一化的适应度函数。我想试验,从(输入→输出)开始,如0→0,1→1,∞→0。我的数学有点弱,如果你没有,我希望这真的不难。
因此函数的输出应该严重偏向0,我需要能够改变产生最大输出的输入值,1。
我可以创建一个线性函数,类似于三角形分布,但是我需要设置一个最大值,在该值处可以区分输入(在该值之上,所有内容看起来都相同。)我还可以合并两个简单的表达式像这样的东西:
from matplotlib import pyplot as plt
import numpy as np
from math import exp
def frankenfunc(x, mu):
longtail = lambda x, mu: 1 / exp((x - mu))
shortail = lambda x, mu: pow(x / mu, 2)
if x < mu:
return shortail(x, mu)
else:
return longtail(x, mu)
x = np.linspace(0, 10, 300)
y = [frankenfunc(i, 1) for i in x]
plt.plot(x, y)
plt.show()
这没关系,应该有效,特别是因为它返回的实际值并不重要,因为它们将用于二元锦标赛。它仍然很丑陋,我希望尽可能灵活地使用scipy或类似的统计分布。
答案 0 :(得分:0)
所以你想用这种形式的pdf进行概率分配?然后你需要:
或者,浏览scipy.stats中实现的分发列表。有几个pdf形状的这种一般形式你正在草绘。