2014 dxdy logo

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

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


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


Посмотреть правила форума



Начать новую тему Ответить на тему
 
 Мат. программирование. Дизъюнктивная система неравенств.
Сообщение23.05.2016, 15:54 


23/12/07
1763
Подскажите, пожалуйста, каким образом в задачах нелинейного программирования обрабатываются ограничения, включающие систему неравенств с логическим "или", то есть, наподобие $g_1(x) < 0 \text{ или } g_2(x) < 0$.

(Систему равенств вроде понятно как свести: $g_1(x) = 0 \text{ или } g_2(x) = 0$ <=> $g_1(x) g_2(x) = 0$, а вот с неравенствами вопрос. Надеюсь, не разбиением на несколько задач оптимизации, каждая из которых соответствует своей области, ибо это чревато экспоненциальным взрывом даже в простейших случаях)

 Профиль  
                  
 
 Re: Мат. программирование. Дизъюнктивная система неравенств.
Сообщение23.05.2016, 16:15 
Заслуженный участник


16/02/13
4214
Владивосток
У вас что, так много подобных условий? Как по мне, вполне себе метод. Более того (это уже касательно вашего преобразования для равенств), решать две задачи попроще вполне может оказаться быстрее и точнее, чем одну задачу посложнее.

 Профиль  
                  
 
 Re: Мат. программирование. Дизъюнктивная система неравенств.
Сообщение23.05.2016, 16:21 


07/08/14
4231
Думал так (с нулем не работает):
$g_1(x) g_2(x)-|g_1(x) g_2(x)|<0$.

 Профиль  
                  
 
 Re: Мат. программирование. Дизъюнктивная система неравенств.
Сообщение23.05.2016, 16:24 


16/02/10
258
_hum_ в сообщении #1125394 писал(а):
Подскажите, пожалуйста, каким образом в задачах нелинейного программирования обрабатываются ограничения, включающие систему неравенств с логическим "или", то есть, наподобие $g_1(x) < 0 \text{ или } g_2(x) < 0$.

(Систему равенств вроде понятно как свести: $g_1(x) = 0 \text{ или } g_2(x) = 0$ <=> $g_1(x) g_2(x) = 0$, а вот с неравенствами вопрос. Надеюсь, не разбиением на несколько задач оптимизации, каждая из которых соответствует своей области, ибо это чревато экспоненциальным взрывом даже в простейших случаях)

$g_i(x)\le0$, $i=1,\dots,n$ эквивалентно $g_0(x)\le0$, где $g_0(x)=\max_{i}g_i(x)$.

 Профиль  
                  
 
 Re: Мат. программирование. Дизъюнктивная система неравенств.
Сообщение23.05.2016, 16:45 


23/12/07
1763
iifat в сообщении #1125400 писал(а):
У вас что, так много подобных условий? Как по мне, вполне себе метод. Более того (это уже касательно вашего преобразования для равенств), решать две задачи попроще вполне может оказаться быстрее и точнее, чем одну задачу посложнее.

да, немало (там из геометрической задачи вытекает, например, условия на касание двух прямоугольников - могут касаться или сверху, или снизу, или слева, или справа, см. dxdy.ru/topic108768). к тому же они начинают "перемешиваться" с конъюнкцией, и выдирать отдельно эти все варианты - очень сильно уменьшает читабельность и как следствие увеличивает ошибки.

VPro в сообщении #1125403 писал(а):
$g_i(x)\le0$, $i=1,\dots,n$ эквивалентно $g_0(x)\le0$, где $g_0(x)=\max_{i}g_i(x)$.

намекаете на то, что дизъюнкцию можно записать как $\min_{i}g_i(x) \leq 0$? хм.. может быть, и подойдет (ведь, я ничего не путаю, $\min$ может быть представлен через арифметические операции и взятие модуля?)

upgrade в сообщении #1125402 писал(а):
Думал так (с нулем не работает):
$g_1(x) g_2(x)-|g_1(x) g_2(x)|<0$.

нет, для случая $g_1(x) < 0$ и $g_2(x) < 0$ тоже не сработает.

 Профиль  
                  
 
 Re: Мат. программирование. Дизъюнктивная система неравенств.
Сообщение23.05.2016, 16:54 


07/08/14
4231
Можно конечно сделать финт ушами и просто ошибки вылавливать $\sqrt{g_1(x)}\cdot\sqrt{g_2(x)}$

 Профиль  
                  
 
 Re: Мат. программирование. Дизъюнктивная система неравенств.
Сообщение23.05.2016, 16:58 


16/02/10
258
_hum_ в сообщении #1125405 писал(а):
VPro в сообщении #1125403 писал(а):
$g_i(x)\le0$, $i=1,\dots,n$ эквивалентно $g_0(x)\le0$, где $g_0(x)=\max_{i}g_i(x)$.

намекаете на то, что дизъюнкцию можно записать как $\min_{i}g_i(x) \leq 0$? хм.. может быть, и подойдет (ведь, я ничего не путаю, $\min$ может быть представлен через арифметические операции и взятие модуля?)

Да, "намекаю". Я по привычке написал условия одновременного выполнения всех неравенств, те условие конъюнкции. Вы правы, если требуется выполнение хотя бы одного из условий (дизъюнкция), то максимум меняем на минимум:
$\bigvee_{i}{\left(g_i(x)\le0\right)} \Leftrightarrow   \min_{i}g_i(x)\le0$

-- Пн май 23, 2016 17:32:56 --

_hum_ в сообщении #1125405 писал(а):
ведь, я ничего не путаю, $\min$ может быть представлен через арифметические операции и взятие модуля?

$\min\{g_1;g_2\}=-\frac12\left(|g_2-g_1|-g_2-g_1 \right)$

 Профиль  
                  
 
 Re: Мат. программирование. Дизъюнктивная система неравенств.
Сообщение23.05.2016, 17:40 


07/08/14
4231
С мнимыми работает.
$-\Biggl(i\Bigl(\sqrt{g_1(x)}\Bigr)+i\Bigl(\sqrt{g_1(x)}\Bigr)\right \Biggr)<0$
Находим коэффициенты при мнимой единице корней из $g_1(x)$, $g_2(x)$, и их суму умножаем на $-1$

 Профиль  
                  
 
 Re: Мат. программирование. Дизъюнктивная система неравенств.
Сообщение23.05.2016, 17:48 


17/10/08

1313
Классика жанра - это псевдобулевы переменные $b_i$ и "большое число" $M$:
$g_1(x)<b_1M$
$g_2(x)<b_2M$
$b_1+b_2<=1$

 Профиль  
                  
 
 Re: Мат. программирование. Дизъюнктивная система неравенств.
Сообщение23.05.2016, 18:01 


23/12/07
1763
upgrade, эта проблема относится к теме нелинейного программирования, а не просто "как можно задать множество одним неравенством" :)

VPro, да, спасибо.

mserg, о, вот этот подход с "релаксацией" уже, действительно, интересен. спасибо.
п.с. может, еще подскажете литературу, где бы можно было бы быстро познакомиться со всеми такими приемами, используемыми в нелинейном программировании?

 Профиль  
                  
 
 Re: Мат. программирование. Дизъюнктивная система неравенств.
Сообщение23.05.2016, 18:05 


07/08/14
4231
_hum_ в сообщении #1125433 писал(а):
а не просто "как можно задать множество одним неравенством"

Тогда к чему написано это:
_hum_ в сообщении #1125394 писал(а):
Систему равенств вроде понятно как свести: $g_1(x) = 0 \text{ или } g_2(x) = 0$ <=> $g_1(x) g_2(x) = 0$,

 Профиль  
                  
 
 Re: Мат. программирование. Дизъюнктивная система неравенств.
Сообщение23.05.2016, 18:10 


23/12/07
1763
upgrade, имелось в виду, нужно, чтобы новая функция была хорошей для применения методов решения задач нелинейной оптимизации

 Профиль  
                  
 
 Re: Мат. программирование. Дизъюнктивная система неравенств.
Сообщение23.05.2016, 18:22 


17/10/08

1313
Если речь идет об создания логических ограничений, то линейность / нелинейность $g(x)$ не имеет значения.
Насчет литературы не подскажу, но припоминаю, довольно много приемов описано в документации пакета lpsolve.

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

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



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

Сейчас этот форум просматривают: Mikhail_K


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

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