我可以在Python中使用像scipy.stats这样的东西来创建一个像分布一样响应的适应度函数

时间:2016-08-29 02:35:12

标签: python scipy fitness

我需要为正值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()

Franken function output

这没关系,应该有效,特别是因为它返回的实际值并不重要,因为它们将用于二元锦标赛。它仍然很丑陋,我希望尽可能灵活地使用scipy或类似的统计分布。

1 个答案:

答案 0 :(得分:0)

所以你想用这种形式的pdf进行概率分配?然后你需要:

或者,浏览scipy.stats中实现的分发列表。有几个pdf形状的这种一般形式你正在草绘。

相关问题