2014 dxdy logo

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

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


Правила форума


В этом разделе нельзя создавать новые темы.



Начать новую тему Ответить на тему
 
 Выбрать точку удовлетворяющую линейной системе неравенств
Сообщение05.11.2014, 01:51 


12/10/12
134
Пишу программу для решения задачи линейного программирования, методом внутренней точки. Если я правильно понял описание алгоритма, то в самом начале нужно выбрать какую-нибудь начальную точку из допустимой области. Вопрос: а как это сделать?
$A \cdot x \leqslant b$
$\min c^T \cdot x $
Матрица $A$ размера $m$ на $n$
Нужно найти хоть какой-нибудь x, для которого верно: $A \cdot x \leqslant b$, подать этот $x$ на вход алгоритму, а он уже найдет тот, который минимизирует $ c^T \cdot x $.

 Профиль  
                  
 
 Re: Выбрать точку удовлетворяющую линейной системе неравенств
Сообщение05.11.2014, 21:52 
Заслуженный участник
Аватара пользователя


30/01/09
7068
А поиск начальной точки для этого метода - это отдельная песня и отдельная глава в учебнике (должна быть, но зачастую её нет). Как вариант, могу предложить следующее. Занулите целевую функцию. Далее минимизируйте её при ваших линейных оганичениях методом штрафной функции. Для каждого неравенства, в области где оно выполняется, аппроксимируёте её нулём. Там где не выполняется - квадратичной функцией. В результате получится кусочноквадратичноая функция, которую можно минимизировать методом сопряжённых градиентов. Но есть одна тонкость. Точка минимума у вас не должна близко подходить к гиперплоскостям ограничений, иначе промежуточные задачи метода внутренней точки будут плохо обусловленными. Как вариант могу предложить изучить документацию по МАТЛАБу. там есть ссылки на статьи. И посмотреть, как там это реализовано.

 Профиль  
                  
 
 Re: Выбрать точку удовлетворяющую линейной системе неравенств
Сообщение07.11.2014, 12:35 


15/06/12
56
Стандартным "входом" является создание т.н. дополнительных переменных $m$ штук справа. То есть, в матричном виде: рассмотрим новую задачу линейного программирования $B\cdot x\leqslant b$, где матрица $B$ есть матрица $A$, расширенная справа единичной матрицей порядка $m$. То есть $B=(AE)$
Легко видеть, что любое решение такой системы $x^T=(x_1,...,x_n,x_{n+1},...,x_{n+m})$ соответствует решению исходной системы $(x_1,...,x_n)$
То есть, просто, вместо исходной задачи решаем задачу ЛП для $B\cdot x\leqslant b$. Здесь же начальное решение выписывается легко: $x^T=(0,...,0,b_1,...,b_m)$, где $b_i$ это компоненты столбца $b$ свободных членов системы.

 Профиль  
                  
 
 Re: Выбрать точку удовлетворяющую линейной системе неравенств
Сообщение07.11.2014, 13:25 
Заслуженный участник
Аватара пользователя


30/01/09
7068
Хочу дополнить, что начальная точка в методе внутренней точки должна быть действительна внутренней, а не граничной.
мат-ламер в сообщении #927167 писал(а):
иначе промежуточные задачи метода внутренней точки будут плохо обусловленными

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group