小编dor*_*thy的帖子

找到全零答案的快速方法

对于每个长度为n + h-1的数组,其值为0和1,我想检查是否存在另一个长度为n的非零数组,其值为-1,0,1,以便所有h内部产品都是零.我天真的做法是

import numpy as np
import itertools
(n,h)= 4,3
for longtuple in itertools.product([0,1], repeat = n+h-1):
    bad = 0
    for v in itertools.product([-1,0,1], repeat = n):
        if not any(v):
            continue
        if (not np.correlate(v, longtuple, 'valid').any()):
            bad = 1
            break
    if (bad == 0):
        print "Good"
        print longtuple
Run Code Online (Sandbox Code Playgroud)

如果我们设置n = 19,这是非常慢的,h = 10这是我想要测试的.

我的目标是找到一个长度单一的"好"数组n+h-1.有没有办法加快这让n = 19h = 10是否可行?

当前的朴素方法需要2 ^(n + h-1)3 ^(n)次迭代,每次迭代大约需要n次.这是311,992,186,885,373,952次迭代n = 19,h = …

python algorithm math optimization numpy

22
推荐指数
2
解决办法
793
查看次数

如何在矩阵上执行函数的离散优化?

我想优化所有30到30个矩阵,条目为0或1.我的目标函数是决定因素.一种方法是采用某种随机梯度下降或模拟退火.

我看了一下,scipy.optimize但就我所知,它似乎并不支持这种优化.scipy.optimize.basinhopping看起来很诱人,但似乎需要连续变量.

Python中是否有用于此类通用离散优化的工具?

python numpy mathematical-optimization discrete-mathematics scipy

9
推荐指数
2
解决办法
4183
查看次数

使用特定总和迭代列表

我想迭代所有长度列表,n其元素总和为2.你怎么能有效地做到这一点?这是一种非常低效的方法n = 10.最终我想为'n> 25'这样做.

n = 10
for L in itertools.product([-1,1], repeat = n):
    if (sum(L) == 2):
        print L #Do something with L
Run Code Online (Sandbox Code Playgroud)

python math optimization

4
推荐指数
1
解决办法
88
查看次数