#python #optimization #mathematical-optimization
#python #оптимизация #математическая-оптимизация
Вопрос:
Давайте предположим, что у нас есть двумерная функция
def f(x,y): #some calculations here
return value
из наблюдений мы знаем следующее
f(x,0.9y) = 10
f(x,0.8y)=15
f(x,0.8y) = 23
…
как я могу найти правильные значения для x, y, чтобы наилучшим образом соответствовать наблюдениям? какая процедура рекомендуется в случае такой проблемы оптимизации?
Комментарии:
1. взгляните на PSO — en.wikipedia.org/wiki/Particle_swarm_optimization
2. Я не думаю, что это правильно сформулировано. Наблюдение выглядит так
f(3,4)=12
. Обозначениеf(x,0.9y)=10
довольно бессмысленное.3. почему бессмысленно? мы хотим найти наилучшие значения x и y, чтобы погрешность наблюдений была минимальной. если мы знаем один из этих параметров, это простая задача оптимизации … мы можем начать, возможно, с двух начальных предположений
4. Понятно, но ваша математическая нотация бессмысленна.
5. да, вы правы
у вас есть идея, как это сделать?
Ответ №1:
Кажется, у вас есть опечатка в вашем вопросе. В любом случае, учитывая, что у нас есть только две точки данных, оптимизация не совсем выполнима, поскольку набор одновременных уравнений дает вам точный результат для многих различных типов функций.
Если вы хотели указать три точки данных, существует другой подход: обратите внимание, что x является постоянным. Это означает, что какой бы ни была функция, мы ничего не можем сказать о x-части 2D-функции. Итак, это действительно одномерная проблема: как ведет себя y?
Учитывая, что мы ничего не знаем о данных, о которых идет речь, и учитывая приведенные вами значения, я бы, вероятно, инстинктивно выбрал экспоненциальную / логарифмическую функцию (предполагая, что конечное значение предназначено для чтения 0,7). Это также может быть линейная функция, хотя, как только вы подберете производимую вами функцию, вам придется вычислить ошибку (вот как вы это сделаете). Помимо этого, по моему опыту, вы мало что можете сделать.
Комментарии:
1. Функция зависит от двух переменных. Сама функция определяет выходные данные (является целым числом) по 4 нелинейным обыкновенным дифференциальным уравнениям. Я хочу выбрать x и y, чтобы выходные данные как можно лучше соответствовали наблюдениям.