Найти - Пользователи
Полная версия: Оптимизация целочисленных параметров
Начало » Python для экспертов » Оптимизация целочисленных параметров
1
pasaranax
Привет!

Мне нужно оптимизировать параметры конфига для программы. Я использую для этого алгоритмы из scipy.optimize.minimize и pybrain.optimization.

Возникла проблема - эти алгоритмы воспринимают все значения как float, а у меня часть параметров должны быть int. И даже если я задаю, где возможно, шаг в единицу, все равно алгоритм крутится вокруг стартовых значений, уменьшая шаг и практически не изменяя их.

Уважаемое сообщество, подскажите либо как использовать данные алгоритмы для оптимизации целочисленных параметров, либо какие-то другие алгоритмы предназначенные для моей задачи.
Volobuev_Ilya
Как я понял тебе нужно преобразований типов. Вот так оно делается:
a=int(/*значение*/) #конвертация в целое число
a=float(/*значение*/) #конвертация в число с плавающей точкой
a=str(/*значение*/) #конвертация в строку
pasaranax
Объясню немного подробнее, предыдущий пост писал на ночь глядя, немного сумбурно вышло.

Вопрос адресован людям, разбирающимся в алгоритмах оптимизации.

Задача:
У меня есть функция (симуляция автоматической биржевой торговли на исторических данных), которая принимает десяток параметров типов float и int (настройки, влияющие на логику). Функция возвращает число (прибыль по итогам симуляции), которое зависит от настроенной логики.
Мне нужно подобрать такие параметры, чтобы число на выходе было максимальным (наибольшая прибыль).

Проблема:
С параметрами типа float проблем нет, алгоритмы оптимизации (CMAES, BFGS, HillClimber и прочие) подбирают их хорошо. А вот с целочисленными параметрами возникла проблема: алгоритмы оптимизации начинают изменять их не на целое число, а на десятые и сотые доли единицы, некоторые еще и уменьшают шаг. Я пробовал задавать шаг и диапазон интересные мне (к примеру, от 0 до 100 с шагом 1) и округлять подбираемые параметры до целых, но в результате для алгоритма числа 5.4, 5.45, 5.1 являются разными, а для оптимизируемой функции после округления одинаковыми. И вместо подбора алгоритм запускает функцию с одними и теми же параметрами, не пробуя пройтись по большому диапазону.

Что я хочу:
Либо понять как существующие алгоритмы оптимизации использовать для подбора целочисленных параметров, либо найти специфические алгоритмы, которые работают непосредственно с оптимизацией целочисленных значений.
У алгоритмов оптимизации бывают сложные параметры типа градиентов, якобиана, хессиана и различной толерантности, но я пока их осилить не могу, а возможно решение в них. Поэтому вопрос адресован людям, разбирающимся в алгоритмах оптимизации.
4kpt_IV
Корбут А.А., Финкельштейн Ю.Ю. Дискретное программирование
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB