Найти - Пользователи
Полная версия: pyOpt. Передать дополнительные аргументы в минимизируемую функцию.
Начало » Python для экспертов » pyOpt. Передать дополнительные аргументы в минимизируемую функцию.
1
alien308
При попытке передать дополнительные аргументы в минимизируемую функцию происходит ошибка сегментирования.
 #!/usr/bin/env python
# -*- coding: utf-8 -*-
from pyOpt import Optimization
from pyOpt import NSGA2
from pyOpt import SLSQP
b0 = 1.1
def objfunc2(x, b = (b0)):
    b1 = b[0]
    f = (x[0]**2 - b1)**2 + 4.*x[1]**2
    g = 1.; fail = 0
    return f, g, fail
opt_prob = Optimization('simpe quadric', objfunc2)
x = [0.0]*2;     xa = [-3.]*2;     xb = [3.]*2
opt_prob.addVarGroup('x', 2, type = 'c', lower=xa, upper=xb, value=x)
opt_prob.addObj('f')
print "\nopt_prob:"
print opt_prob
# Global Optimization
nsga2 = NSGA2()
print '-------------'
nsga2(opt_prob)
print "========================================================================\nopt_prob.solution(0):"
print opt_prob.solution(0)
вылетает на nsga2(opt_prob)
alien308
Нашёл в примерах. Надо так:
 #!/usr/bin/env python
# -*- coding: utf-8 -*-
from pyOpt import Optimization
from pyOpt import NSGA2
from pyOpt import SLSQP
b0 = 1.1
def objfunc2(x, **kwargs):
    
    b1 = kwargs['b']
    f = (x[0]**2 - b1)**2 + 4.*x[1]**2
    g = 1.; fail = 0
    return f, g, fail
opt_prob = Optimization('simpe quadric', objfunc2)
x = [0.0]*2;     xa = [-3.]*2;     xb = [3.]*2
opt_prob.addVarGroup('x', 2, type = 'c', lower=xa, upper=xb, value=x)
opt_prob.addObj('f')
print "\nopt_prob:"
print opt_prob
# Global Optimization
nsga2 = NSGA2()
print '-------------'
nsga2(opt_prob, b = b0)
print "========================================================================\nopt_prob.solution(0):"
print opt_prob.solution(0)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB