imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 26.01.2007, 15:59     # 21
doro
Full Member
 
Аватар для doro
 
Регистрация: 30.04.2002
Сообщения: 1 419

doro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собой
Количество людей может варьироваться от единиц до сотен.
Период - от дня до месяца или даже года (вобщем то тоже величина неизвестная).
doro вне форума  
Старый 27.01.2007, 17:10     # 22
v_mirgorodsky
Junior Member
 
Регистрация: 08.12.2004
Сообщения: 132

v_mirgorodsky Реально крут(а)v_mirgorodsky Реально крут(а)v_mirgorodsky Реально крут(а)v_mirgorodsky Реально крут(а)
Оки, теперь резюмируем все, что стало известно о задаче.
1. Есть некий перечень работ с фиксированными весовыми коеффициентами.
2. Вероятно есть количество людей, требуемых для выполнения каждой из работ.
3. Вероятно есть среднее целевое количество баллов, которое необходимо набрать каждому из работников.
4. Есть некий список людей, которых необходимо расставить по местам.
5. Есть длительность планируемого периода.
6. Возможно есть личные преференции отдельных людей, могущих выполнять только работы определенного вида.

Необходимо расставить людей по работам таким образом, дабы разница набраных ними баллов за выполнение конкретных работ была минимальна за планируемый период.

Если описание задачи верно, то необходимости в алгоритме разложения числа на сумму из коэффициентов сложности работ я не вижу. Очевидно, что такое разложение будет не единственным, количество вариантов таких разложений будет расти очень быстро по мере увеличения значения самого числа, а главное, построенный массив таких разложений никак не помогает в решении поставленной задачи. Окончательному алгоритму все равно придется заниматься перебором вариантов, а именно брать каждый элемент такого массива и проверять его на применимость в контексте уже принятых решений - запланированных людей на определенные работы.

IMHO, если бы передо мной стояла подобная задача я бы решал ее прямым перебором "в лоб". При реальных числах работников и длительности планируемых периодов число вариантов окажется совсем небольшим.
v_mirgorodsky вне форума  
Старый 27.01.2007, 18:12     # 23
doro
Full Member
 
Аватар для doro
 
Регистрация: 30.04.2002
Сообщения: 1 419

doro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собой
v_mirgorodsky

Третий пункт не нужен.

"…прямым перебором "в лоб" - это ими?
doro вне форума  
Старый 27.01.2007, 20:21     # 24
v_mirgorodsky
Junior Member
 
Регистрация: 08.12.2004
Сообщения: 132

v_mirgorodsky Реально крут(а)v_mirgorodsky Реально крут(а)v_mirgorodsky Реально крут(а)v_mirgorodsky Реально крут(а)
Цитата:
Сообщение от doro Посмотреть сообщение
"…прямым перебором "в лоб" - это ими?
Нет, это все же не работниками Как я понял, они договориться между собой сами не могут

Просто создается массив работ, потом массив работников. Далее прога пытается учесть преференции работника по поводу работ и другие объективные факторы, заполняя план работ для каждого из работников по календарным дням. Далее, останутся частично "недозаполненные" работники - вот эти остатки и будем заполнять перебором. По мере уменьшения количества доступных работ количество вариантов будет быстро уменьшаться. Для ограничения количества вариантов стоит ограничить планируемый период определенной длительностью, к примеру, неделей. Тогда планирование месяца будет состоять из планирования четырех недель и еще 3-х дней. Даже самый старый PIII будет перебирать в секунду пару десятков тысяч вариантов. Однако будет необходимо аккуратно подойти к критерию определения хорошего варианта, иначе работа программы может затянуться
v_mirgorodsky вне форума  
Старый 28.01.2007, 14:36     # 25
doro
Full Member
 
Аватар для doro
 
Регистрация: 30.04.2002
Сообщения: 1 419

doro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собойdoro Имеются все основания чтобы гордиться собой
all
Чего-то не понял к чему пришли в итоге.
Я то, например, находил в последовательности медианное или среднее арифметическое значение. Потом к наименьшему значению прибавлял, а от наибольшего отнимал тот коэффициент, с которым в данный момент работаем (начинаю всегда с наибольшего коэффициента), при условии, что результат сложения/вычитания не больше/меньше значения наибольшего/наименьшего значения последовательности в данный момент.
Но часто программа на этом моменте зацикливалась. Да и тяжело и не красиво как-то. Чувствую есть какое-то более элегантное решение.
doro вне форума  
Старый 29.01.2007, 19:14     # 26
v_mirgorodsky
Junior Member
 
Регистрация: 08.12.2004
Сообщения: 132

v_mirgorodsky Реально крут(а)v_mirgorodsky Реально крут(а)v_mirgorodsky Реально крут(а)v_mirgorodsky Реально крут(а)
Цитата:
Сообщение от doro Посмотреть сообщение
Я то, например, находил в последовательности медианное или среднее арифметическое значение. Потом к наименьшему значению прибавлял, а от наибольшего отнимал тот коэффициент, с которым в данный момент работаем (начинаю всегда с наибольшего коэффициента), при условии, что результат сложения/вычитания не больше/меньше значения наибольшего/наименьшего значения последовательности в данный момент.
А вот это и есть решение задачи методом прямого перебора "в лоб". Начальное приближение, взятое как "медианное или среднее арифметическое значение" относится к стратегии ведения перебора вариантов. В зависимости от выбора стратегии можно получить более быструю или медленную сходимость к приемлемому результату.
Цитата:
Сообщение от doro Посмотреть сообщение
Но часто программа на этом моменте зацикливалась.
Здесь, вероятнее всего есть алгоритмическая или логическая ошибка. Скорее логическая, поскольку алгоритмическая проявлялась бы более регулярно. Еще, возможно, недостаточно хорошо проработано условие выхода из циклов перебора и/или фиксации приемлемого варианта. BTW, необходимо очень аккуратно следить, чтобы следующая итерация перебора возможно меньше зависела от результатов предыдущей - иначе очень вероятны зацикливания на определенных наборах входных значений.
Цитата:
Сообщение от doro Посмотреть сообщение
Да и тяжело и не красиво как-то. Чувствую есть какое-то более элегантное решение.
К сожалению, все переборы не отличаются красотой и имеют ограниченную область применения. Возможно и есть более элегантное решение вашей задачи, однако с моими познаниями в дискретной математике оно не просматривается.
v_mirgorodsky вне форума  


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

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 02:30.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.