Я создаю простую функцию стохастической оптимизации в Джулии и использую изменяемую структуру для хранения значений параметров.По сути, я изменяю параметр в изменяемой структуре, передаю эти параметры через функцию производительности и обновляю параметр на основе производительности.
У меня есть версия, которая работает, когда я вручную указываю, какие параметры я хотел бы изменить,Тем не менее, я хотел бы обобщить это, чтобы я мог изменить любой данный параметр.Например, обозначая изменяемую структуру параметров как «args», и я изменяю параметр «P», ключевой раздел моего текущего кода выглядит следующим образом:
args.P = P_new
loss_new = performance_function(args)
if loss_new < loss_old # performance better, keep the new value
loss_old = loss_new
else # performance worse, go back to old value
args.P = P_old
end
Я хотел бы обобщить это вфункция:
update_parameter(args,P,performance_function)
, чтобы я мог использовать любой набор аргументов, изменять любой параметр P в аргументах и иметь возможность использовать произвольную функцию производительности.Чтобы проиллюстрировать, что аргументы определены как имеющие тип Parameter,
mutable struct Parameter
a::Float64
b::Float64
end
args = Parameter(1,2)
Затем я хотел бы обновить a затем b, используя ту же функцию,
update_parameter(args,a,performance_function)
update_parameter(args,b,performance_function)
Я не могу работатькак это можно сделать.Есть ли какой-нибудь умный способ использования словарей?Или лучший способ, который удовлетворяет тому, что я хочу, избегая прямого манипулирования изменчивыми структурами вообще?Спасибо