2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Задача на оптимизацию
Сообщение21.11.2010, 15:33 
Добрый день уважаемые участники форума.

Есть набор чисел(массив) b - 0..n. Известно, что, к примеру b[5]>b[4]. Есть упорядоченный(по убыванию) массив c. Есть несколько опорных точек, вида b[4]*c[4] = X, X заранее известно. Так же, для всех b и c выполняется неравенство b[i]*c[i]>b[i+1]*c[i+1]. Стоит задача, минимизировать числа из массива b, причем желательно, чтобы отклонение элементов массива c от начальных было минимально.
Для того чтобы все стало понятно приведу график.
Изображение

Синим обозначен график построенный на основе элементов b
Красным - на основе c
И желтым обозначено произведение c[i]*b[i]
(Все с домножением на некоторые коэффициенты, чтобы можно было увидеть все 3 графика)

Необходимо максимально опустить синий график, при этом должен соблюдаться ряд условий, которые я указал выше, но еще раз скажу, другими словами.
Нам точно известен ряд точек на желтом графике, так же нам известно, что желтый график должен быть убывающим, т.е. b[i]*c[i]>b[i+1]*c[i+1] для всех i.
Начальное неравенство для всех b должно соблюдаться, т.е. к примеру b[1]<b[2]. Отклонение точек красного графика от начальных нежелательно, но, как видим при i = 8 и 9 без этого не обойтись, поскольку тогда не выполнится неравенство b[7]*c[7]>b[8]*c[8]>b[9]*c[9].

Симплекс, как я понимаю, тут неприменим, если воспользоваться метод градиентного спуска, то велика вероятность, что он где-нибудь застрянет.
Как лучше решить эту задачу?

 
 
 
 Re: Задача на оптимизацию
Сообщение21.11.2010, 18:27 
Аватара пользователя
Во-первых, симплекс-метод тут не причём, поскольку это не задача линейного программирования (ввиду нелинейных ограничений). Во-вторых, для задачи нелинейного программирования трудно дать гарантию, что какой-то метод не будет застревать (если, конечно, эта задача не является выпуклой). На первых шагах можно использовать градиентный метод (без гарантии). Смотрите книги по оптимизации (Практическая оптимизация - Гилла и Мюррея).

 
 
 
 Re: Задача на оптимизацию
Сообщение21.11.2010, 18:44 
мат-ламер в сообщении #378638 писал(а):
Во-первых, симплекс-метод тут не причём, поскольку это не задача линейного программирования (ввиду нелинейных ограничений). Во-вторых, для задачи нелинейного программирования трудно дать гарантию, что какой-то метод не будет застревать (если, конечно, эта задача не является выпуклой). На первых шагах можно использовать градиентный метод (без гарантии). Смотрите книги по оптимизации (Практическая оптимизация - Гилла и Мюррея).


Наверняка задача вроде моей является типовой и для нее уже есть библиотеки\пакеты. Например маткад или что-то типа того, может мне помочь? Что насчет полного перебора(точность должна быть до сотых).

 
 
 
 Re: Задача на оптимизацию
Сообщение21.11.2010, 18:49 
Аватара пользователя
Цитата:
Наверняка задача вроде моей является типовой и для нее уже есть библиотеки\пакеты
Не факт. Насчёт полного перебора также сомнительно.

 
 
 
 Re: Задача на оптимизацию
Сообщение22.11.2010, 17:04 
Начните, например, с функции "поиск решения" в Excel - только сначала четкую постановку напишите - желательно не словами, а нормальными формулами.

 
 
 [ Сообщений: 5 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group