Optprob/Назначение инженеров на проекты
Мы планируем распределять инженеров по проектам компании.
В течение следующего года компания имеет возможность участвовать в десяти инженерных проектах. Каждый проект требует персонала (для проекта j потребуется Aj инженеров любого типа), приносит доход (G_j) и имеет общие расходы (C_j).
Projects | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
A | 3 | 3 | 3 | 2 | 2 | 2 | 4 | 4 | 4 | 5 |
C | 10000 | 20000 | 25000 | 40000 | 10000 | 40000 | 20000 | 25000 | 10000 | 30000 |
G | 55000 | 60000 | 60000 | 90000 | 30000 | 100000 | 65000 | 50000 | 50000 | 60000 |
Инженеры компании делятся на две категории:
- S: Старший инженер (с опытом)
- JJ: Младший инженер (без достаточного опыта)
Каждый инженер имеет годовую зарплату M.
В настоящее время компания располагает штатом, состоящим из семи старших инженеров и четырех младших инженеров.
Engineers | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
S | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 |
JJ | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |
M | 50000 | 45000 | 30000 | 35000 | 28000 | 58000 | 36000 | 55000 | 35000 | 50000 | 33000 |
Каждый инженер, будь то старший или младший, подходит для каждого из проектов, в зависимости от их подготовки. Эта пригодность измеряется в виде непрерывного индекса от 0 (нет) до 1 (оптимально).
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | |
1 | 0 | 1 | 0.5 | 0.5 | 0.5 | 1 | 0.3 | 0.2 | 0.4 | 0.8 |
2 | 0.5 | 0.5 | 1 | 0.3 | 0.2 | 0.4 | 1 | 1 | 0 | 0 |
3 | 1 | 1 | 0 | 0 | 1 | 0 | 0.4 | 0.5 | 0.6 | 0.5 |
4 | 2 | 0.5 | 0.5 | 1 | 0.3 | 0.2 | 0.4 | 2 | 0.3 | 0.5 |
5 | 0.5 | 1 | 0.3 | 0.2 | 0.4 | 1 | 1 | 1 | 0.3 | 0 |
6 | 0.2 | 0.5 | 0.5 | 3 | 0 | 0 | 1 | 1 | 1 | 0.6 |
7 | 1 | 0.6 | 0.7 | 0.5 | 0.5 | 1 | 0.3 | 0.2 | 0.4 | 0.6 |
8 | 1 | 3 | 3 | 3 | 0.5 | 1 | 0.3 | 0.2 | 0.4 | 1 |
9 | 0 | 1 | 1 | 0.5 | 0.5 | 1 | 0.3 | 0.2 | 0.4 | 0.1 |
10 | 0.5 | 1 | 0.3 | 0.2 | 0.5 | 1 | 0.3 | 0.2 | 0.4 | 1 |
11 | 0.5 | 1 | 0.3 | 0.2 | 0.5 | 1 | 0.3 | 0.2 | 0.4 | 1 |
Компания имеет возможность нанимать новых инженеров.
Затраты, которые компания оценивает для найма новых сотрудников, следующие следующим образом:
- Старший инженер: $50 000/год
- Младшие инженеры: $35 000/год
Для новых инженеров компания присваивает пригодность 75% старшим инженерам и 50% младшим, так как персонал будет подбираться в соответствии к проектам.
Существует два типа назначений для инженеров:
- частичная занятость
- полный рабочий день
Компания позволяет назначить инженера на неполный или полный рабочий день на проекты. Если он работает полный рабочий день, он может быть занят только в одном проекте.
Если неполный рабочий день — может быть максимум в двух.
Новые инженеры могут быть назначены только эксклюзивно. На проекте затраты на зарплату инженера, назначенного на неполный рабочий день, будут составлять половину ее оклада.
Количество инженеров, необходимых проекту, всегда является величиной, предполагающей исключительности.
Если инженеры назначены на неполный рабочий день, то два инженера на неполный рабочий день считаются как один инженер.
Компания хочет, чтобы
- в каждом проекте, в котором она участвует, был как минимум один старший инженер (новый или уже работающий) на полную ставку.
- общая пригодность инженеров, назначенных на проект, была выше 50% — расчет общей пригодности производится как сумма пригодности инженеров, назначенных на проект, деленная на количество назначенных инженеров, независимо от того, работают ли они неполный или полный рабочий день.
Помимо всего этого, существуют и другие спецификации:
- В проекте не должно быть более трех инженеров, работающих неполный рабочий день.
- Проекты 5 и 6 не могут иметь ни одного общего инженера в этих двух проектах.
- Участие в проекте 2 на неполный рабочий день требует участия в проекте 3.
Цель компании — максимизация прибыли: «Доход от проектов» - «Расходы» (расходы на заработную плату + общие расходы).
- 📺 видео 📺
- * Код решения в проекте «adv2022-course-pyomo-business-optimization» в «optprob/Назначение_инженеров_на_проекты.ipynb»
[ Хронологический вид ]Комментарии
Войдите, чтобы комментировать.