2014 dxdy logo

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

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


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


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



Начать новую тему Ответить на тему
 
 Система линейных уравнений с целочисленными ограничениями
Сообщение14.09.2018, 21:08 


18/05/09
111
Задана система линейных уравнений такого вида

$\left\{
\begin{array}{rcl}
 \left\lfloor\frac{x_{0}}{a_{00}}\right\rfloor+\left\lfloor\frac{x_{1}}{a_{01}}\right\rfloor+\left\lfloor\frac{x_{2}}{a_{02}}\right\rfloor=b_{0} \\
\\
 \left\lfloor\frac{x_{0}}{a_{10}}\right\rfloor+\left\lfloor\frac{x_{1}}{a_{11}}\right\rfloor+\left\lfloor\frac{x_{2}}{a_{12}}\right\rfloor=b_{1} \\
\\
{a_{20}}*x_{0}+{a_{21}}*x_{1}+{a_{22}}*x_{2}=b_{2} \\
\end{array}
\right.$

где $a_{ij}$, $b_{i}$ - целые числа, $\left\lfloor\frac{x_{j}}{a_{ij}}\right\rfloor$ - целая часть от деления $\frac{x_{j}}{a_{ij}}$
Количество неизвестных совпадает с количеством уравнений.
Как искать неизвестные $x_{j}$?
Решения можно подобрать. Но есть ли жадный алгоритм?

 Профиль  
                  
 
 Re: Система линейных уравнений с целочисленными ограничениями
Сообщение15.09.2018, 09:50 
Заслуженный участник


08/04/08
8562
А как Вы пытались и что получилось?
От балды можно посоветовать:
1. Воспользоваться неравенством $t-1\leqslant [t]\leqslant t$, получить какую-то область и перебрать ее.
2. Или, например, если $a_{0j}, a_{1j}$ невелики, выполнить подстановки $x_j=a_{0j}a_{1j}y_j+r_j, 0\leqslant r_j < a_{0j}a_{1j}$. Или даже заменить $a_{0j}\cdot a_{1j}$ на $\text{НОК}(a_{0j}\cdot a_{1j})$, затем перебрать все варианты $r_j$ - получится множество систем обычных линейных уравнений.
3. Можно решить третье уравнение в общем виде, подставить решение в первые 2 уравнения и попробовать упростить.
Надо поперебирать методы, м.б. покомбинировать их. Можно выбрать наугад задачу такого типа побольше и попытаться ее решить руками.
Насчет жадного алгоритма не очень понятно - решений здесь скорее всего мало, хотя бы одно найти. А целевой функции здесь нет.

 Профиль  
                  
 
 Re: Система линейных уравнений с целочисленными ограничениями
Сообщение15.09.2018, 11:22 
Заслуженный участник
Аватара пользователя


06/10/08
6422
Как вариант, привести к смешанному целочисленному линейному программированию. Для этого ввести новые целочисленные переменные $q_{ij} = \lfloor \frac{x_i}{a_ji} \rfloor$ и записать соответствующие неравенства.

 Профиль  
                  
 
 Re: Система линейных уравнений с целочисленными ограничениями
Сообщение15.09.2018, 14:49 


11/07/16
828
Mathematica решает такие системы.

 Профиль  
                  
 
 Re: Система линейных уравнений с целочисленными ограничениями
Сообщение16.09.2018, 17:57 


18/05/09
111
Спасибо! С переходом к смешанному целочисленному линейному программированию понятно.
Цитата:
Насчет жадного алгоритма не очень понятно - решений здесь скорее всего мало, хотя бы одно найти. А целевой функции здесь нет.

Когда число неизвестных совпадало с количеством уравнений, напрашивалась ошибочная мысль о ненужности целевой функции. Если ввести новые целочисленные переменные $q_{ij} = \lfloor \frac{x_i}{a_ji} \rfloor$, неизвестных станет больше и целевая функция станет необходима.
Цитата:
Mathematica решает такие системы.

LinearProgramming — real and integer linear programming in matrix form?
Какие именно пакеты рекомендуете?

 Профиль  
                  
 
 Re: Система линейных уравнений с целочисленными ограничениями
Сообщение16.09.2018, 17:59 


21/05/16
4292
Аделаида
0101 в сообщении #1339430 писал(а):
переменные

Они будут выражаться друг через друга. Переменных не станет больше.

 Профиль  
                  
 
 Re: Система линейных уравнений с целочисленными ограничениями
Сообщение16.09.2018, 20:42 


11/07/16
828
0101
Цитата:
LinearProgramming — real and integer linear programming in matrix form?
Какие именно пакеты рекомендуете?

Нет. Вот пример
Код:
sol = Reduce[{4*x1 + 7*x2 + 6*x3 == 186,
   Floor[(1/2)*x1] + Floor[(1/5)*x2] + Floor[(1/3)*x3] == 18,
   Floor[(1/5)*x1] + Floor[(1/2)*x2] + Floor[(1/4)*x3] == 21}, {x1,
   x2, x3}, Reals]

((155/2<x1<78&&1/7 (744-4 x1)<x2<62)||(72<=x1<=73&&1/7 (714-4 x1)<x2<62)||(73<x1<=147/2&&1/7 (714-4 x1)<x2<=1/7 (726-4 x1))||(147/2<x1<74&&60<=x2<=1/7 (726-4 x1))||(74<=x1<75&&1/7 (726-4 x1)<x2<62)||(153/2<x1<78&&1/7 (726-4 x1)<x2<60)||(x1==72&&58<=x2<60)||(72<x1<74&&58<=x2<=1/7 (708-4 x1))||(75<=x1<76&&1/7 (714-4 x1)<x2<60)||(x1==74&&442/7<x2<64)||(74<x1<75&&1/7 (738-4 x1)<x2<=1/7 (744-4 x1))||(74<=x1<75&&1/7 (708-4 x1)<x2<=1/7 (714-4 x1))||(151/2<x1<76&&1/7 (708-4 x1)<x2<58)||(157/2<x1<80&&1/7 (762-4 x1)<x2<64)||(68<=x1<137/2&&56<=x2<=1/7 (666-4 x1))||(x1==137/2&&x2==56)||(x1==70&&56<x2<58)||(70<x1<=71&&56<=x2<58)||(71<x1<72&&56<=x2<=1/7 (690-4 x1))||(70<=x1<=281/4&&54<=x2<55)||(281/4<x1<72&&54<=x2<=1/7 (666-4 x1)))&&x3==1/6 (186-4 x1-7 x2)



\begin{multline*} \left(\left(\frac{155}{2}<x_1<78\land \frac{1}{7} (744-4 x_1)<x_2<62\right)\lor \left(72\leq x_1\leq 73\land \frac{1}{7} (714-4 x_1)<x_2<62\right)\\
\lor \left(73<x_1\leq \frac{147}{2}\land \frac{1}{7} (714-4 x_1)<x_2\leq \frac{1}{7} (726-4 x_1)\right)\lor \left(\frac{147}{2}<x_1<74\land 60\leq x_2\leq \frac{1}{7} (726-4 x_1)\right)\\
\lor \left(74\leq x_1<75\land \frac{1}{7} (726-4 x_1)<x_2<62\right)\lor \left(\frac{153}{2}<x_1<78\land \frac{1}{7} (726-4 x_1)<x_2<60\right)\\
\lor (x_1=72\land 58\leq x_2<60)\\
\lor \left(72<x_1<74\land 58\leq x_2\leq \frac{1}{7} (708-4 x_1)\right)\lor \left(75\leq x_1<76\land \frac{1}{7} (714-4 x_1)<x_2<60\right)\\
\lor \left(x_1=74\land \frac{442}{7}<x_2<64\right)
\lor \left(74<x_1<75\land \frac{1}{7} (738-4 x_1)<x_2\leq \frac{1}{7} (744-4 x_1)\right)\\
\lor \left(74\leq x_1<75\land \frac{1}{7} (708-4 x_1)<x_2\leq \frac{1}{7} (714-4 x_1)\right)
\lor \left(\frac{151}{2}<x_1<76\land \frac{1}{7} (708-4 x_1)<x_2<58\right)\\
\lor \left(\frac{157}{2}<x_1<80\land \frac{1}{7} (762-4 x_1)<x_2<64\right)\\
\lor \left(68\leq x_1<\frac{137}{2}\land 56\leq x_2\leq \frac{1}{7} (666-4 x_1)\right)\lor \left(x_1=\frac{137}{2}\land x_2=56\right)\lor (x_1=70\land 56<x_2<58)\\
\lor (70<x_1\leq 71\land 56\leq x_2<58)\\
\lor \left(71<x_1<72\land 56\leq x_2\leq \frac{1}{7} (690-4 x_1)\right)\lor \left(70\leq x_1\leq \frac{281}{4}\land 54\leq x_2<55\right)\\
\lor \left(\frac{281}{4}<x_1<72\land 54\leq x_2\leq \frac{1}{7} (666-4 x_1)\right)\right)\land x_3=\frac{1}{6} (-4 x_1-7 x_2+186)\end{multline*}

 Профиль  
                  
 
 Re: Система линейных уравнений с целочисленными ограничениями
Сообщение16.09.2018, 20:58 


18/05/09
111
Markiyan Hirnyk Спасибо!
Теперь буду искать алгоритмы, которые использует для решения этой задачи Mathematica.

 Профиль  
                  
 
 Re: Система линейных уравнений с целочисленными ограничениями
Сообщение16.09.2018, 22:01 


20/03/14
12041
 i  Оффтоп отделен сюда: «Оформительский оффтоп»

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

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



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

Сейчас этот форум просматривают: YandexBot [bot]


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

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