График Дежурств Программа

График Дежурств Программа

График Дежурств Программа

Пиликов Н.П. Как составить график работы для воспитателей детского сада? Ружицкий В.Е. Формирование сменного графика работы персонала с .

Андрей МИРОНОВ: Cool. Plan. Bro. Привет, друзья!

Практически во всех отраслях посменная работа ведется в несколько бригад, и программа График Работы разработана специально с . Программы » Деловые программы » Ведение дел. Скользящий график дежурств 2.13, Бесплатно. Во время запуска не отказывайтесь .

Программа позволяет сформировать график месячных дежурств. Написана в Delphi. Позволяет экспортировать график в Excel для . Они помогут улучшить программу и повысить удобство использования. График не дежурств, а рабочих дней и выходных.

Прошу сразу простить: статью старался писать для «самых маленьких» и очень понятным языком. Однажды, в далёком 2. Предыстория такова: я служил по контракту, и среди сотрудников нашего отдела было организовано дежурство. Ежедневно (и даже в выходные) кто- то назначался дежурным, и на этого несчастного возлагались ответственные и тяжёлые задачи по работе; дежурство было занятием не из простых. Мой командир заранее составлял и подписывал у командования график дежурства отдела на месяц.

График Дежурств Программа

И эта задача, надо отметить, занимала у него вовсе не пять минут. Так как командир был добрый человек и всегда старался идти навстречу своим людям, он мог составлять график и неделю, потому что нужно было учесть все пожелания сотрудников: кто- то уходил в отпуск, кто- то из него возвращался, у кого- то были командировки, а кому- то просто нужно было забирать пораньше детей из садика по понедельникам и четвергам. Бывало и так, что командир составлял «несправедливые» графики дежурств, в которых одним людям явно доставалось побольше работы, чем другим.

В работе отдела также были и «трудные дни» недели (когда в пинципе и работы было чуть больше, и она была чуть напряжённее), и если дежурство выпадало одному и тому же человеку целый месяц подряд на такие дни, то график также считался несправедливым. Такие несправедливые графики коллектив отклонял, и командиру приходилось заново с нуля составлять новый график, иногда по невнимательности кого- то «ущемляя». А что вы хотели: человеческий фактор! Так как я был программистом, я не мог позволить продолжаться этому «обезьяннему» труду дальше.

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

Были учтены все ньюансы и пожелания, которые мы обсудили. Так и родился проект «Cool. Plan. Bro». Cool.

Plan. Bro изначально создавался как бесплатное программное обеспечение с закрытым исходным кодом: если бы его «вынесли» из отдела и распространили, то ничего страшного в этом бы не было. Забегая вперёд скажу, что проект всё- таки получил дальнейшее распространение, инициатором которого был я сам.

Уж очень нужна была такая программа моим друзьям, друзьям друзей и так далее. Так и пошло, ведь аналогов не было. Кроме того, люди видели, что программа работает довольно сносно и выдаёт хороший, справедливый результат, а это было заложено в её архитектуру при создании как один из основополагающих базовых принципов. Итак, как же я создавал эту программу и что легло в её основные принципы работы? Для начала я просто сел и написал на бумажке то, что обязательно должен делать Cool. Plan. Bro. уметь создавать расписания на любой указанный месяц и год; брать данные о заданном месяце не с потолка, а из календаря, помечая выходные и праздники; позволять быстро и просто корректировать выходные и праздничные дни прямо на графике дежурств перед рассчётом; позволять быстро и просто редактировать список сотрудников, поддерживать любую длину такого списка и хранить его; предоставлять пользователю возможность легко помечать прямо на графике дежурств желательные/нежелательные для каждого сотрудника дни дежурств, а также дни отпуска/отсутствия на службе перед рассчётом графика; по возможности быстро производить рассчёт графика дежурств (быстрее, чем за неделю ; ) ); иметь возможность аккуратно сбросить результат рассчёта и внести корректировки в типы дней; уметь экспортировать подсчитанный график в «какой- нибудь Word» для последующей печати и подписи. Задачи детские, и я приступил.

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

График Дежурств Программа

В результате я пришёл вот к чему: придумал и ввёл систему штрафов. Каждый график имеет штраф. Какой бы вы график дежурств из того триллиона не рассмотрели, у него есть некий конкретный штраф — это просто целое положительное число, например, 2. Чем меньше штраф, тем лучше график.

Надеюсь, я понятно рассказываю ; ) То есть, если у нас есть три графика дежурств: со штрафом 1. Самый несправедливый же — второй. Итак, задача нашего алгоритма — пройти по всем графикам дежурств, для каждого из них подсчитать штрафные баллы и найти лучший график с минимальныйм штрафом. Как же считается штраф для конкретного графика? Очень просто: по всему графику подсчитывается и суммируется общее количество косяков. За каждый косяк на график налагается определённый штраф в баллах. Косяки бывают разные: подежурил на графике какой- то бедолага два дня подряд — штраф +3.

Специальный парсер анализирует график и находит все его косяки. Вот так вот после анализа для каждого графика получаем штраф. Ну а, собственно, систему штрафов придумывли и согласовывали всем отделом. Во что у нас получилось. Штраф за дежурство два дня подряд.

Штраф за дежурство через 1 день. Штраф за дежурство через 2 дня. Штраф за дежурство через 3 дня. Штраф за дежурство через 4 дня.

Штраф за дежурство через 5 дней. Штраф за дежурство через 6 дней. Штраф за дежурство в одноименный день. Штраф за дежурство в нежелательный день. Штраф за недежурство в желательный день.

Штраф за недобор/перебор дежурств. Штраф за дежурство в день отпуска. Отлично, научили программу считать штраф для каждого графика. Теперь вопрос: как рассмотреть все графики? Допустим, у нас 2.

Даже если бы компьютер строил и обрабатывал и считал штраф для одного графика дежурств в один такт одного ядра своего процессора, то четырёхъядерный процессор с тактовой частотой 4. GHz на каждое ядро выполнял бы эту работу 6 7. Столько ждать мы не сможем: у кого- то через неделю уже командировки, а мы должны ориентироваться на дежурных. Вновь повторюсь: на момент создания Cool.

Plan. Bro я очень смутно представлял себе «жадные» алгоритмы, однако, ко мне в голову пришло весьма схожее с ними решение. Важное замечнание, которое я хотел бы упомянуть перед началом рассказа о придуманном алгоритме: парсер может подсчитать штраф и для не до конца заполненого графика. А алгоритм я запрограммировал так: вначале программа насильно перебирает все возможные графики для некоторого «вменяемого» количества первых дней месяца, так, чтобы рассчёт не превысил в сумме 6. То есть для P сотрудников надо найти такое количество дней D, чтобы PD было меньше 6. Например, для P = 1. D = 4. Это так называемая «база» для дальнейшего построения графика.

Из 1. 24 = 2. 07. Если лучших графиков получилось много (например, 1. В конце концов, база (лучший, но не до конца заполненный график) найдена. Далее, отталкиваясь от базы, алгоритм перебирает все возможные графики на один день вперёд. Их число будет равно числу сотрудников.

Если P = 1. 2, то различных вариантов «база плюс один день» будет всего 1. Из 1. 2 вариантов выбирается лучший и запоминается как текущая база. И так далее до конца месяца, алгоритм срабатывает быстро. Если на любом этапе было найдено несколько оптимальных баз, то алгоритм рассматривает их все, последовательно, и для всего множества находит лучшую следующую базу.

График Дежурств Программа
© 2017