0

我需要为正值 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 或类似的统计分布。

4

1 回答 1

0

所以你想要一个带有这种形式的pdf的概率分布?然后你需要:

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

于 2016-08-29T09:34:53.517 回答