У строительной компании 6 проектов, на каждый нужно $d_i$
рабочих. В начале проекта 1 у компании нет рабочих.
Каждый новый рабочий должен пройти курс безопасности, который стоит 300, и на 50 больше для каждого рабочего. Если нет нового рабочего, то и курса нет.
Увольнение рабочего не стоит денег, и его нельзя нанять повторно.
Учитывая, что зарплата рабочего составляет 100 за проект, сформулируйте задачу линейного программирования, которая минимизирует затраты на рабочих.
Что я пробовал:
Пусть $x_i$
будет количеством новых рабочих для проекта $i$
.
Пусть $y_i$
будет количеством старых рабочих, оставшихся от предыдущих проектов до проекта $i$
(все нанятые рабочие - все рабочие, которые были уволены).
Пусть $z_i$
будет таким индикатором, что $z_i =0 \iff x_i>0$
Я пытаюсь решить следующую функцию:
$\min(\sum_{i=1}^6 150x_i + 300(1-z_i) + 100y_i)$
s.t:
\begin{align}
x_i,y_i,z_i &\ge 0 \\
z_i &\ge 1-x_i \\
y_i + x_i &\ge d_i \\
y_i &\ge y_{i-1} + x_i
\end{align}
Что-то мне не нравится. Основная причина в том, что я пытался использовать Matlab для решения этой проблемы, но это не удалось.
Что я сделал не так? Как я могу решить этот вопрос?