Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

27 Апрель 2018, 07:19 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Вы можете задать вопрос по LibreOffice или Apache OpenOffice  без регистрации, используя форму
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Планирование работ  (Прочитано 433 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Netlog
Новичок
*
Offline Offline

Сообщений: 20


« Стартовое сообщение: 29 Март 2018, 16:56 »

Есть список заданий в виде
1 - наименование задания
2 - дата начала (не ранее)
3 - дата завершения (не позднее)
4 - трудозатраты, человеко-часы
сами задачи по нормочасам сильно разные, от минутных до несколькосуточных.
Осложняется ситуация тем, что задания попадаются долгие, на несколько рабочих дней. Но с этим в алгоритмическом смысле проще всего кажется, что справиться можно будет разбивая долгое задание на части по 8 рабочих часов.

И есть список исполнителей в виде
1 - ФИО
2 - Дата
3 - Рабочих часов
На выходе надо получить
список в виде
Дата - ФИО - Задание
21.01 - Иванов - БолтыМ6
21.01 - Иванов - ГайкиМ10
21.01 - Сидоров - ШпилькиМ6
22.01 -  Иванов - БолтыМ10
...
примерно так.
Исполнителей хватает на выполнение всех задач, оптимизации не требуется.
Не вижу, с какой стороны подступиться к задаче...
Пока придумал только то, что задания на раздачу исполнителям стоит сортировать в порядке даты завершения, с тем, чтобы задачи с более близким сроком попадали в обработку раньше.
Записан
mikekaganski
Ветеран
*****
Offline Offline

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 889


« Ответ #1: 29 Март 2018, 17:15 »

Хм, Вы решили решить одностадийную задачу теории расписаний в Calc? Улыбка Интересно, конечно, но мне кажется, трудновато будет.
Записан

С уважением,
Михаил Каганский
Netlog
Новичок
*
Offline Offline

Сообщений: 20


« Ответ #2: 29 Март 2018, 17:30 »

Решать по большому счёту всё равно в чём. Сложность задачи с директивными сроками из-за отсутствия требований по оптимальности должна быть меньше, чем О(n^3).
Записан
tagezi
Ветеран
*****
Offline Offline

Пол: Мужской
Расположение: Finland
Сообщений: 782



WWW
« Ответ #3: 29 Март 2018, 17:55 »

Исполнителей хватает на выполнение всех задач, оптимизации не требуется.
То есть мы имеем бесконечное количество работы и рабочей силы. И нам просто нужно придумать для, например, начальника, логичное распределение этой рабочей силы?
У Васи пахнет плохо изо рта  - пойдёт пахать восьми часовую смену.
У Пети дети, пусть не выматывается сильно, будет несколько раз за смену менять работу.
Так?

Или всё таки мы пытаемся минимизировать время простоя, то есть сделать так, чтобы минимальным количеством рабочей силы было охвачено максимальное количество работ?
« Последнее редактирование: 29 Март 2018, 18:03 от tagezi » Записан

(x86_64) Kubuntu 16.04.3 - LibreOffice 6.0.2 / 6.1 alpha
Netlog
Новичок
*
Offline Offline

Сообщений: 20


« Ответ #4: 29 Март 2018, 20:49 »

Конечно есть оптимизация по рабочей силе, но работяг то целое и небольшое число.
Решаем задачу для одного рабочего, потом для двух, потом для трёх... Уложились - хорошо. Нет - следующая итерация, причём в LO эти итерации можно делать вручную. Сроки задач достаточно свободные, т.е. число работяг с большой вероятностью - это просто округление вверх от суммы времён исполнения задач делённой на 8 рабочих часов в сутки.
На простой чихать.
----------------------------------------
Самое интересное, что вручную задача решается довольно просто
1. Получаем отсортированный список директивных дат завершения работ, и начинаем цикл по этим датам
2. Берём первую из дат. И выполняем все работы, которые ДОЛЖНЫ быть исполнены
3. Для исключения простоя исполняем работы, которые МОЖНО исполнить.
4. Переходим к следующей дате, и снова пункт 2.
У меня этих дат заведомо меньше, чем рабочих дней в году. Улыбка
Записан
tagezi
Ветеран
*****
Offline Offline

Пол: Мужской
Расположение: Finland
Сообщений: 782



WWW
« Ответ #5: 29 Март 2018, 23:34 »

Самое интересное, что вручную задача решается довольно просто
1. Получаем отсортированный список директивных дат завершения работ, и начинаем цикл по этим датам
2. Берём первую из дат. И выполняем все работы, которые ДОЛЖНЫ быть исполнены
3. Для исключения простоя исполняем работы, которые МОЖНО исполнить.
4. Переходим к следующей дате, и снова пункт 2.
У меня этих дат заведомо меньше, чем рабочих дней в году.
А сколько у вас работников и работ?
И интересно ещё узнать:
минимальное время работы;
максимальное время работы;
и кратность по времени (все ли работы кратны часу?).

А ещё, каждый ли рабочий может выполнять любую работу?
« Последнее редактирование: 29 Март 2018, 23:40 от tagezi » Записан

(x86_64) Kubuntu 16.04.3 - LibreOffice 6.0.2 / 6.1 alpha
Netlog
Новичок
*
Offline Offline

Сообщений: 20


« Ответ #6: 30 Март 2018, 09:13 »

работников от 2 до 20,
работ минимум пара сотен максимум десять тысяч
время работы от десятков секунд до 16 часов и не кратно ничему.
Даты начала и завершения - календарные рабочие дни, в пределах года, максимум около 200 штук. я их сейчас округляю до недели в более жёсткую сторону, внутрь интервала, для простоты.
Про кратность я уже думал.
Записан
tagezi
Ветеран
*****
Offline Offline

Пол: Мужской
Расположение: Finland
Сообщений: 782



WWW
« Ответ #7: 30 Март 2018, 09:36 »

работников от 2 до 20,
работ минимум пара сотен максимум десять тысяч
Как на производстве может постоянно меняться количество работников и количество видов работ?

А с этим:
время работы от десятков секунд до 16 часов и не кратно ничему.
Я затрудняюсь, даже число сочетаний посчитать. Думаю, что нули придется выписывать достаточно долго.
Число сочетаний: 200! / 20!(200 - 20) = чо-то где-то примерно 5,834941795787915E358 (нулей)
И оно противоречит
Даты начала и завершения - календарные рабочие дни, в пределах года, максимум около 200 штук.
Если работник выполняет задание на 10 секунд, это нужно округлить до недели? Улыбка

Ставьте в теме не решаемо Улыбка
Записан

(x86_64) Kubuntu 16.04.3 - LibreOffice 6.0.2 / 6.1 alpha
Netlog
Новичок
*
Offline Offline

Сообщений: 20


« Ответ #8: 30 Март 2018, 09:40 »

округляется не задание а интервал времени, в который надо уложиться
С разным числом работников - самих объектов много, и число работников фактически изменится только в следующем году, а на одном объекте оно - константа. но на след год его надо вычислить по нормативам.
Записан
tagezi
Ветеран
*****
Offline Offline

Пол: Мужской
Расположение: Finland
Сообщений: 782



WWW
« Ответ #9: 30 Март 2018, 10:01 »

округляется не задание а интервал времени, в который надо уложиться
С разным числом работников - самих объектов много, и число работников фактически изменится только в следующем году, а на одном объекте оно - константа. но на след год его надо вычислить по нормативам.
По вашему условию, я не могу вообще представить реальную картину, даже отдалённо и приблизительно. Потому что, сейчас у меня складывается ощущение, что есть задание "ударить молотком по гвоздю" - 10 секунд, округляем до рабочего дня. И таких 1000 заданий должны выполнить 2 сотрудника за производственный год.
Записан

(x86_64) Kubuntu 16.04.3 - LibreOffice 6.0.2 / 6.1 alpha
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 2 466


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #10: 30 Март 2018, 10:15 »

Netlog, завершайте "Вступительное слово" и переходите к таблицам данных. Для начала дайте таблицу исходных данных для двух-трёх работников на три дня и пояснения как эти данные обработать и что должно получиться.
Записан

economist
Ветеран
*****
Offline Offline

Сообщений: 859


« Ответ #11: 31 Март 2018, 13:17 »

Netlog - ставить в первую очередь в работу те заказы, которые надо "быстрее отдавать", безотносительно их реальной "срочности/обязательности", как написано в топике - неправильно.

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

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

Написал бы больше, но мой основательный пост про планирование потерли, поэтому "обижаюсь" и ухожу в read-only отпуск на месяц :-) А тот пост повторил в личку.
Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!