Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 7, 2018 21:17:45

alien308
Зарегистрирован: 2012-06-23
Сообщения: 62
Репутация: +  0  -
Профиль   Отправить e-mail  

pyOpt. Передать дополнительные аргументы в минимизируемую функцию.

При попытке передать дополнительные аргументы в минимизируемую функцию происходит ошибка сегментирования.

 #!/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 (Янв. 7, 2018 21:27:46)

Офлайн

#2 Янв. 7, 2018 22:22:33

alien308
Зарегистрирован: 2012-06-23
Сообщения: 62
Репутация: +  0  -
Профиль   Отправить e-mail  

pyOpt. Передать дополнительные аргументы в минимизируемую функцию.

Нашёл в примерах. Надо так:

 #!/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)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version