Lua альтернатива optim()

#r #optimization #programming-languages #lua

#r #оптимизация #языки программирования #lua

Вопрос:

В настоящее время я ищу альтернативу lua для языков программирования R; функция optim(), если кто-нибудь знает, как с этим справиться?

Ответ №1:

http://numlua.luaforge.net / выглядит интересно, но, похоже, не имеет минимизации. Наиболее многообещающим направлением, по-видимому, является оболочка Lua для GSL, которая включает в себя множество алгоритмов многомерной минимизации.

С производными — BFGS ( method="BFGS" in optim ) и два метода сопряженных градиентов (Флетчера-Ривза и Полака-Рибьера), которые являются двумя из трех вариантов, доступных для method="CG" in optim . Без производных — симплекс Нелдера-Мида ( method="Nelder-Mead" , используемый по умолчанию в optim ).

Более конкретно, смотрите здесь документацию по оболочке Lua, касающуюся минимизации.

Я согласен с @Zack в том, что вы должны попытаться использовать существующие реализации, если это вообще возможно, и что вам может понадобиться немного больше базовых знаний, чтобы знать, какие алгоритмы будут полезны для ваших конкретных проблем…

Комментарии:

1. Тогда все готово, при условии, что оболочка, на которую я указываю выше, работает так, как рекламируется.

Ответ №2:

Реализация R optim фактически не написана на R. Если вы введете «optim» без круглых скобок в командной строке, это выведет определение функции, и вы можете видеть, что после некоторой проверки ошибок и перетасовки аргументов она вызывает .Internal подпрограмму (закодированную на C и / или Fortran) для выполнения всей реальной работы.

Итак, вам лучше всего найти библиотеку C для математической оптимизации — извините, у меня нет рекомендаций — и перенести это в Lua. Я сомневаюсь, что кто-либо написал для этого код на родном языке Lua, и я бы не рекомендовал пытаться закодировать его самостоятельно; эффективное выполнение математической оптимизации по-прежнему является активной областью фундаментальных исследований, и лучшие на данный момент алгоритмы решительно нетривиальны для реализации.