2012-09-01 4 views
0

Я не уверен, что такой подход необходим, но позвольте мне описать проблему:перебором или алгоритм

  1. Учитывая произвольное число рабочих (2 или более) планируется работать в любой месяц (включая выходные).
  2. Только один работник может работать в назначенный день. 2a. Этот рабочий может не работать днем ​​до или после.
  3. Работники также работают выходные и, по возможности, равномерно распределяются по количеству рабочих. 3a. Суббота и воскресенье взвешиваются одинаково.
  4. Апартамент для возможных отпусков 4a. Без ограничений на последовательные дни 4b. Не допускайте столько отдыха, которое будет мешать правилам (правилам) № 2 и № 3

Что является наиболее гибким способом сортировки этих критериев. Что это за проблема?

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

Уточнение: я не ищу, сколько [дней] и рабочих дней каждый рабочий работал бы, но способ [равномерно] распределять дни, проработанные в этом месяце.

E.g. Рабочие A B C; Запрашиваемый отпуск 17 до 20

Очевидно, что есть другие перестановки, кроме приведенного ниже примера.

 M T W Th F Sa Su 
     ==================== 
October 1 2 3 4 5 6 7 
2012 A B C A B C A 

     8 9 10 11 12 13 14 
     B C A B C A B 

     15 16 17 18 19 20 21 
     C A B C B C A 

     22 23 24 25 26 27 28 
     B A C A C B C 

     29 30 31 
     A B A 
+4

Похоже, динамическое программирование, возможно, целочисленное программирование, так как будни являются дискретным набором. –

+0

Как @BenVoigt Said, это похоже на проблему с Integer-programming (Operation-Research). –

+0

Я обновил свой вопрос, и я начну читать о целочисленном программировании. –

ответ

0

Использовать симплекс-алгоритм. Вы можете запрограммировать ограничения, как так:

Каждый день должен быть заполнен ровно один человек В течение каждого дня и для каждого работника, они должны работать по крайней мере один из каждых три дня блока никто не должен работать на своих дней отпуска Максимальное количество выходных дней работника за месяц должно быть не более 1 + этаж (выходные смены/работники)

+0

Я читал о методе Simplex, но я не думаю, что правильно сформулировал свой ответ, я обновил свой вопрос с примера и разъяснения. –