У меня есть набор переменных X, Y, ..., Z
. Моя задача - создать функцию, которая принимает этот набор переменных и дает целое число. У меня есть функция фитнеса, чтобы проверить это.Как лучше всего подойти к проблеме определения формы неизвестной функции
Мой первый удар на проблему заключается в предположении, что я могу моделировать f
быть линейной функцией:
f(X, Y, ..., Z) -> aX + bY ... cZ
Моя первая идея состояла в том, чтобы использовать либо ПСО (Particle Swarm Optimization) или генетические алгоритмы для решения f
для a, b, .., c
, и я уверен, что они наверняка принесут хорошие результаты.
С другой стороны, мне кажется, что такие эволюционные алгоритмы действительно не нужны. Прежде всего, я могу представить пару хороших «отправных точек» для a,b, .., c
. Будучи f
линейной функцией, не должно быть проще просто попробовать пару точек, а затем сделать что-то вроде линейной регрессии? И после линейной регрессии, пробуя еще пару очков, на этот раз ближе к тому, что выглядит как хорошее «пятно», снова создавая линейную регрессию?
Каковы же его недостатки? Любой, у кого есть опыт в подобных проблемах? Самый большой, о котором я могу думать, это то, что, может быть, то, что я считаю хорошим стартовым значением для a,b, .., c
, может быть «локальным оптимизмом», и наличие какого-то эволюционного алгоритма даст мне глобальный характер.
f
Предполагается, что это функция приближения для алгоритма Minimax шахматной игры, если это имеет значение.
Благодаря
Я считаю, что эту проблему почти невозможно решить, если вы не надели на нее * некоторую * колпачку на ней, например, предполагая, что целевая функция линейна или многочлен фиксированной степени. –
Да, я хорошо знаю об этом. Одна из целей этого поста заключалась в том, чтобы попытаться понять, являются ли люди, как правило, функциями линейными, как я, или, вообще говоря, неплохо попробовать какую-то другую функцию. Может быть, полиномиальный, я не знаю? –
«Функции линейные» - это всего лишь гипотеза, которую нужно протестировать против ваших данных. –