gpt4 book ai didi

python - 优化包含 8 个 for 循环的嵌套循环以最小化函数

转载 作者:太空宇宙 更新时间:2023-11-04 03:16:56 24 4
gpt4 key购买 nike

我有一个 python 代码,它使用嵌套的 for 循环最大化超过 8 个参数的函数。执行大约需要 16 分钟,这太长了,因为我必须针对我要解决的问题进行多次优化。

我试过了:

1.) 用列表理解替换 for 循环,但性能没有变化。

2.) Jug并行化,但整个系统卡住并重新启动。

我的问题:

1.) 有没有其他方法可以使用多处理模块并行化嵌套 for 循环?

2.) 有什么方法可以用完全不同的方法替换嵌套循环来最大化函数?

Code Snippet: 
def SvetMaxmization(): #Maximization function
Max = 0
res = 1.0 # Step Size, execution time grows expo if the value is reduced
for a1 in np.arange(0, pi, res):
for a2 in np.arange(0,pi, res):
for b1 in np.arange(0,pi, res):
for b2 in np.arange(0,pi, res):
for c1 in np.arange(0,pi, res):
for c2 in np.arange(0,pi, res):
for d1 in np.arange(0,pi, res):
for d2 in np.arange(0,pi, res):
present =Svet(a1,a2,b1,b2,c1,c2,d1,d2) #function to be maximized
if present > Max:
Max = present

svet() 函数:

def Svet(a1,a2,b1,b2,c1,c2,d1,d2):
Rho = Desnitystate(3,1) #Rho is a a matrix of dimension 4x4
CHSH1 = tensor(S(a1),S(b1)) + tensor(S(a1),S(b2)) + tensor(S(a2),S(b1)) - tensor(S(a2),S(b2)) # S returns a matrix of dimension 2x2
CHSH2 = tensor(S(a1),S(b1)) + tensor(S(a1),S(b2)) + tensor(S(a2),S(b1)) - tensor(S(a2),S(b2))
SVet3x1 = tensor(CHSH1, S(c2)) + tensor(CHSH2, S(c1))
SVet3x2 = tensor(CHSH2, S(c1)) + tensor(CHSH1, S(c2))
SVet4x1 = tensor(SVet3x1, S(d2)) + tensor(SVet3x2, S(d1))
Svd = abs((SVet4x1*Rho).tr())

return Svd

系统详细信息:主频为 3.2GHz 的英特尔酷睿 I5

感谢您的宝贵时间!!

最佳答案

很难给出一个“正确”的答案,因为这在很大程度上取决于成本函数的行为。

但是,考虑到您现在正在对参数空间进行网格搜索(基本上是暴力破解解决方案),我认为有些事情值得尝试。

  1. 看看您是否可以使用更复杂的优化算法。查看scipy.optimize module ,例如只是如果

    x0 = ... # something
    bounds = [(0,np.pi) for _ in range(len(x0))]
    result = minimize(Svet, x0, bounds=bounds)

    可以解决问题。

  2. 如果成本函数的表现如此糟糕以至于这些方法都不起作用,那么您唯一的希望可能就是加快成本函数本身的执行速度。根据我自己的经验,我会尝试以下方法:

    1. numba是一个很好的第一个选择,因为它不需要您更改当前代码中的任何内容,因此尝试起来非常简单。不过,它并不总能加速您的代码。

    2. Cython 重写成本函数.这需要您做一些工作,但可能会大大提高速度。同样,这取决于成本函数的性质。

    3. 使用例如C、C++ 或任何其他“快速”语言。

关于python - 优化包含 8 个 for 循环的嵌套循环以最小化函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35916495/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com