Как передать / получить доступ к переменным, используемым внутри целевой функции в scipy-дифференциальной эволюции - PullRequest
0 голосов
/ 08 мая 2020

Я использую DE для оптимизации проблемы нейронной сети. И мне нужно получить доступ к переменным внутри объектной функции, чтобы создать график.

Я привожу здесь простой пример без NN, чтобы лучше объяснить мою проблему.

from scipy.optimize import differential_evolution

def obj_fun(x):
    A= x[0]
    B= x[1]
    C= A*B+B**3
return C

solution=differential_evolution(obj_fun,
                            bounds=[(10,20),(5,15)],
                            strategy='rand1exp',
                            popsize=10,
                            maxiter=20,
                            polish=True,
                            disp=True,
                            seed=0)

Я хотел бы знаю, как я могу создать DataFrame, содержащий все A и B, опробованные DE, поэтому я могу создать трехмерный график для визуализации лучших пар A, B, которые обеспечивают лучшее C.

Я думаю, что это решение было бы что-то, что позволяет переменным, используемым внутри целевой функции, «извлекаться» из нее при каждом запуске для создания DF с использованием метода добавления. Но я действительно не знаю, как это сделать.

Я очень признателен за помощь в этом. Спасибо

Стив.

1 Ответ

0 голосов
/ 11 мая 2020
def obj_fun(x):
    A= x[0]
    B= x[1]
    C= A*B+B**3
    obj_fun.dump.append([A, B, C])
return C
obj_fun.dump = []

, а затем доступ к obj_fun.dump после запуска DE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...