Поиск:

Ответ в темуСоздание новой темы Создание опроса
> распределение по командам 
:(
    Опции темы
AmsTaFF
Дата 2.4.2010, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 17.9.2009
Где: г. Москва

Репутация: нет
Всего: нет



суть: расформировывается большой отдел из 50 человек, среди которых есть 3 класса рабочих (технари, экономисты .. и скажем, читатели), каждый из этих классов делится ещё на 3
технари на : мастер по компам, мастер по принтерам, мастер по электропроводке
экономисты на : бухгалтеры, выдавальщики зп, собиратели налогов
читальщики делятся на: читателей романов, рассказов и сказок

задача заключается в том, чтобы создать алгоритм, который распределил бы всех этиъ 50 человек на N отделов, скажем 2. Так, чтобы они были примерно равны, т.е. примерно равное кол-во технарей, экономистов и читателей И чтобы среди технарей в одном отделе были и мастера по компам, принтерам, среди экономистов бухгалтера и т.п.

главный критерий - равность кол-во работников в отделе, когда они равны распределение не такое жесткое и добавляет так, чтобы не изменить равновесие сил (например N технарей (по 1 в каждый отдел))

Вопрос
: есть ли уже готовые алгоритмы.
Почему пришлось задать вопрос: я начал делать и алгоритм становится уж очень большим (сбор информации по свободным работникам и текущему состоянию в отделах). Подумал, не создаю ли я велосипед с 10-ю колесами. Посмотрел сайты с алгоритмами... не знаю куда вообще тыкнутся

* все названия взяты для большей понятности проблемы, я не ручаюсь за правильное распределение )
PM MAIL ICQ Skype   Вверх
_Y_
Дата 2.4.2010, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



Непонятна задача. 

Если взять общее количество мастеров по компам и разделить на число новых отделов, потом общее количество мастеров по принтерам и т.д. Вот и получится поровну.

Что-то в вашем описании упущено наверное.


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
AmsTaFF
Дата 2.4.2010, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 17.9.2009
Где: г. Москва

Репутация: нет
Всего: нет



отлично, а что делать, если поделить с остатком (кол-во компьютерщиков) на (кол-во отделов) и остаток не равен нулю? что делать в таком случае?
а если компьютерщиков вообще 1? и наличие одного представителя класса в отделе обязательно

есть ли красивый алгоритм, который помог бы в распределении в таких вот случаях?

Это сообщение отредактировал(а) AmsTaFF - 2.4.2010, 22:21
PM MAIL ICQ Skype   Вверх
maxdiver
Дата 3.4.2010, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 29.1.2008
Где: Саратов

Репутация: 16
Всего: 18



Пожалуй, готового красивого алгоритма нет. Слишком специфичная задача. Просто надо самому случаи все поразбирать (и их вроде немного, только когда какое-то количество на 2 не делится). Обдумай, как это получше написать. Я бы просто перебор написал - т.е. берём очередную группу специалистов, делим пополам и сразу распределяем на 2 отдела, а если остался какой-то остаток, то перебираем, в какую из двух групп его отнести.
PM MAIL WWW ICQ   Вверх
AmsTaFF
Дата 3.4.2010, 23:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 17.9.2009
Где: г. Москва

Репутация: нет
Всего: нет



ну это ясное дело, просто не хочется изобрести велосипед, а потом найти уже готовый алгоритм smile спасибо 
PM MAIL ICQ Skype   Вверх
_Y_
Дата 4.4.2010, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



Цитата(AmsTaFF @ 2.4.2010,  22:15)
если поделить с остатком (кол-во компьютерщиков) на (кол-во отделов) и остаток не равен нулю? что делать в таком случае?
а если компьютерщиков вообще 1? и наличие одного представителя класса в отделе обязательно

Ну здесь никакой алгоритм не поможет. Только здравый смысл.  А он подсказывает следующие варианты:
  • Любой рассчет имеет предел точности. Вот пределом точности распределения специалистов по отделам будет один человек. Как бы ни делили, разница в числе определенных специалистов между отделами не будет превышать 1. Это вроде как единственное алгоритмическое решение - задание эпсилона.
  • Компьютерщика можно уволить. Тогда во всех отделах будет 0 компьютерщиков.
  • Можно нанять еще компьютерщиков, до количества, делимого без остатка на число отделов.
  • Можно переучить кого-то на компьютерщика.
  • Можно убить компьютерщика, расчленить тело и раздать по отделам на вес.
  • В конце концов, пусть работает в каждом отделе на часть ставки.



--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
ksnk
Дата 4.4.2010, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 7
Всего: 386



А что это вообще такое производится, что в каждом отделе - одинаковое число тварей? Мне как-то привычнее - команда грузчиков, бухгалтерия, it-отдел -- все в своей корзинке сидят, и не пересекаются особо...


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.1401 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.