使用Python实现差分进化的Ackley函数

2024-10-04 11:21:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我为ackley提供了以下功能

def ackley(x):
    a,b,c = 20.0, 0.2, 2*np.pi 
    f  = -a*np.exp(-b*np.sqrt(np.mean(x**2)))
    f -= np.exp(np.mean(np.cos(c*x)))
    f += a + np.exp(1)
    return f
fm27 = lambda x: ackley(x)

如何调整此函数,以便迭代多个参数值 例如

a = 20
b = np.linspace(0.6,0.9,7)
c = np.linspace(0,0.5,6)

然后打印每个组合的所有结果? 到目前为止我已经试过了,但我仍然只得到一个结果


def ackley(x):
    a = 20.0
    b = np.linspace(0.6,0.9,7)
    pii = np.linspace(0,0.5,6)
    c = 2*pii
    #20.0, 0.2, 2*np.pi #here pi has to be 0, 0.1, up to 0.5 , and b has to be 0.6, 0.65 , up to 0.9
    for i in pii:
        for j in b:
            f  = -a*np.exp(-j*np.sqrt(np.mean(x**2)))
            f -= np.exp(np.mean(np.cos(c*x)))
            f += a + np.exp(1)
            print(f)
            return f
fm27 = lambda x: ackley(x)

多谢各位


Tags: tolambdareturndefnppisqrtbe
1条回答
网友
1楼 · 发布于 2024-10-04 11:21:45
def ackley(x):
    a = 20.0
    b = np.linspace(0.6,0.9,7)
    pii = np.linspace(0,0.5,6)
    c = 2*pii
    #20.0, 0.2, 2*np.pi #here pi has to be 0, 0.1, up to 0.5 , and b has to be 0.6, 0.65 , up to 0.9
    for i in pii:
        for j in b:
            f  = -a*np.exp(-j*np.sqrt(np.mean(x**2)))
            f -= np.exp(np.mean(np.cos(c*x)))
            f += a + np.exp(1)
            print(f)
            yield f
print(list(ackley(np.array([1, 2, 3, 4, 5, 6]))))

这可能对你有帮助

相关问题 更多 >