Я пытаюсь создать график смен для каждого сотрудника с учетом доступности смены. У меня есть кортеж, который включает время начала смены, время окончания смены, максимальное количество людей в смене. Входные данные также включают список массивов для предпочтений смены сотрудников, например [[1 0 0 1 1], ...], который представляет, что сотрудник 1 доступен для смен 1, 4, 5, но не 2, 3. Обратите внимание, что время смены не исключает друг друга и может перекрываться.
У меня есть переменная решения x [i, j], которая равна 1, если сотрудник i работает на смене j, в противном случае - 0. После выполнения я ожидаю, что x [i, j] будет матрицей, указывающей для каждого сотрудника, к какой смене он назначен. У меня есть другие ограничения, включая количество смен. Но я застрял в том, как создать ограничение, чтобы гарантировать, что назначенные смены не перекрываются.
У меня есть одна идея - сравнить x [i, j] и x [i, k], где j = / = k, и посмотреть, проверяют ли они, если время начала i> время окончания j ИЛИ время начала j> время окончания из я. Но я не уверен, как это реализовать в OPL.