Scipy最大限度地减少了大量变量的错误

时间:2014-05-02 08:39:47

标签: python numpy scipy optimization

您好我正在尝试使用scipy进行优化。最小化功能的方法是' COBYLA'对于较小的数组大小工作正常,但对于较大大小的数组则出错。我试过COBYLA'和' SLSQP'方法,因为我对非线性函数有一个约束优化问题。

代码段:

import scipy as sp
import random

def mytest7obj(x, x_d, y_d, z_d, power):
    for x_i in x:
        if x_i < 0:
            return 0.
    sum = 0.
    for i in range(x_d):
        for j in range(z_d):
            term = 1.
            for k in range(y_d):
                term *= (x[i*(y_d*z_d)+j*(y_d)+k] ** power[k])
            sum += term
    return 0. - sum
def mytest7():
    x_d = 30
    y_d = 10
    z_d = 100
    goal = 1000000.
    constraints = []
    power = []
    for i in range(y_d):
        power.append(random.uniform(0.,0.3))
    constraints.append({'type':'ineq', 'fun': lambda x: goal - sum(x)})
    print 'power: %s\n' % (power,)
    result = sp.optimize.minimize(fun = mytest7obj, x0 = [30.] * (x_d*y_d*z_d), method = 'COBYLA', args = (x_d, y_d, z_d, power), jac=False, constraints=constraints, options={'disp':True, 'rhobeg':3., 'maxiter': 10000})
    print 'goal attained: %s'% (sum(result.x),)

if __name__ == “__main__”:
    mytest7()

使用方法&#39; COBYLA&#39;回溯错误。是:

Traceback (most recent call last):
  File "opt_test.py", line 584, in <module>
    print 'mytest7'; mytest7()
  File "opt_test.py", line 571, in mytest7
    result = sp.optimize.minimize(fun = mytest7obj, x0 = [30.] * (x_d*y_d*z_d), method = 'COBYLA', args = (x_d, y_d, z_d, power), jac=False, constraints=constraints, options={'disp':True, 'rhobeg':3., 'maxiter': 10000})
  File "/usr/lib64/python2.7/site-packages/scipy/optimize/_minimize.py", line 385, in minimize
    return _minimize_cobyla(fun, x0, args, constraints, **options)
  File "/usr/lib64/python2.7/site-packages/scipy/optimize/cobyla.py", line 238, in _minimize_cobyla
    dinfo=info)
ValueError: failed to create intent(cache|hide)|optional array-- must have defined dimensions but got (-1594577286,)

使用&#39; SLSQP&#39;,错误是:

File "opt_test.py", line 586, in <module>
    print 'test'; test()
  File "opt_test.py", line 454, in test
    x = get_optimal(base, budget, initial_values, x_elas, y_elas, x_history, y_history, constraint_coeffs, opt_method = 'SLSQP')
  File "opt_test.py", line 355, in get_optimal
    constraints=constraints, options=opts)
 File "/usr/lib64/python2.7/site-packages/scipy/optimize/_minimize.py", line 388, in minimize
    constraints, **options)
  File "/usr/lib64/python2.7/site-packages/scipy/optimize/slsqp.py", line 316, in _minimize_slsqp
    w = zeros(len_w)
MemoryError

我正在使用python 2.7.5, scipy版本:0.14.0rc1, numpy版本:1.8.1

0 个答案:

没有答案