2014 dxdy logo

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

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


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


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



Начать новую тему Ответить на тему
 
 Очередная задача про "шары" и "ящики"
Сообщение07.10.2018, 20:21 


07/10/18
3
Приветствую всех. Недавно в моей жизни появилась одна задача, для решения которой нужно написать код. Суть этой задачи такова: есть $n$ ящиков и $m$ типов шаров. Нужно раскидать эти шары по всем ящикам таким образом, чтобы а) все ящики были примерно равно заполнены и б) разброс шаров одного типа по всем ящикам был как можно более равномерен.
При этом накладываются ограничения:
1) известно заранее количество шаров каждого типа и их нужно разложить абсолютно все
2) на каждый тип шаров накладывается ограничение по расположению (я дальше объясню).

В математике я не силен абсолютно, но вот, что я сделал:
1) для начала представил всю задачу в виде матрицы $m \times n$, где в узлах элемент $a_{ij}$ соответствует количеству шаров типа $i$ в ящику $j$. По условиям задачи на эту величину накладываются условия, что в некоторые ящики шары одного типа класть нельзя ($a_{ij}=0$), или их не должно быть меньше определенного количества ($a_{ij} \geq k_{ij}$). Причем значение $k_{ij}$ мы знаем, но оно может быть любым. Сделал это для удобства представление, но, как я понял это просто вектор размерности $mn$.
2) составил целевую функцию, где через метод наименьших квадратов записал условия а и б. Размер шаров и их "ценность" не имеют значения т.к. они все одного размера и одной ценности. Эту функцию нужно минимизировать при условиях из предыдущего пункта.

После этого для меня начался ад, потому что пришлось лезть в такие места, о существовании которых я и не подозревал. Соответственно мне нужна помощь с выбором стратегии решения этой задачи. Как я понял это np-полная задача (прав ли я?) и решать ее можно методом ветвей и границ, но я не знаю, как выбрать функцию ветвления и нижнюю границу. Или, как вариант, убрать условие целочисленности и решать обычную непрерывную задачу, а в конце округлить? Природа количества шаров сама по себе не очень точная и в каких-то разумных пределах может меняться, если очень захотеть. Но по этому пути я идти не хочу, хочу разобраться и сделать правильно. Заранее спасибо

 Профиль  
                  
 
 Posted automatically
Сообщение07.10.2018, 20:25 
Заслуженный участник


09/05/12
25179
 i  Тема перемещена из форума «Помогите решить / разобраться (М)» в форум «Карантин»
по следующим причинам:

- неправильно набраны формулы (краткие инструкции: «Краткий FAQ по тегу [math]» и видеоролик Как записывать формулы).

Исправьте все Ваши ошибки и сообщите об этом в теме Сообщение в карантине исправлено.
Настоятельно рекомендуется ознакомиться с темами Что такое карантин и что нужно делать, чтобы там оказаться и Правила научного форума.

 Профиль  
                  
 
 Posted automatically
Сообщение08.10.2018, 00:43 
Заслуженный участник


09/05/12
25179
 i  Тема перемещена из форума «Карантин» в форум «Помогите решить / разобраться (М)»

 Профиль  
                  
 
 Re: Очередная задача про "шары" и "ящики"
Сообщение15.10.2018, 21:36 


07/10/18
3
Решил задачу кривым способом, т.е. сначала получил непрерывное решение а после округлил его. Но до сих пор думаю над целочисленным подходом

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

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



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

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


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

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