Описание проблемы
Я пытаюсь добавить ограничение к моей задаче оптимизации планирования, чтобы гарантировать, что сгенерированные расписания имеют последовательные часы (т. е. отсутствие промежутков между временными интервалами в течение дня). Однако текущая реализация не работает должным образом и возвращает INFEASIBLE, несмотря на наличие достаточных ресурсов (учителей, классов и предметов). Ниже приведен проблемный раздел моего кода:
# C - Problematic - Timetable needs to be consecutive
for lvl_idx, level in enumerate(self._problem.levels):
for sub_idx, subject in enumerate(self._problem.subjects):
if self._problem.curriculum_contains(level, subject):
required_slots = self._problem.curriculum_time_request(level, subject)
for day, (start, end) in self._problem.slots_per_day().items():
for tch_idx in self._all_teachers:
for loc_idx in self._all_locations:
for slt_start in range(start, end - required_slots + 1):
sequence = [
self._assignment[lvl_idx, sub_idx, tch_idx, slt_start + offset, loc_idx]
for offset in range(required_slots)
]
for i in range(len(sequence) - 1):
self._model.Add(sequence[i] == sequence[i + 1])
Что я пробовал
Добавлено больше учителей, удалены некоторые уровни (расписания занятий, а не помещения), с никакого успеха. Переменные, похоже, не являются проблемой.
Изменено положение этого ограничения в коде, чтобы увидеть, влияет ли порядок на результаты.
Удалены другие ограничения, чтобы изолировать проблему.
Контекст
Я создаю программное обеспечение, используя OR-Tools для генерации расписания средних школ Румынии.
Я работаю с слегка измененная версия примера SAT по школьному расписанию OR-Tools: школьное расписание OR-Tools.
Вот некоторая справочная информация, которая может быть полезна:
В Румынии учащиеся распределяются по определенным классам (комнатам), а учителя перемещаются между этими классами. Есть исключения, например, по предметам IT&C (информационные технологии и коммуникации), нам нужно ходить в классы. со специальным оборудованием как компьютерные классы.
Перерывы между уроками минимальны, обычно около 10 минут. (никаких перерывов между часами вообще не требуется!)
Здесь вы найдете мой полный код для репликации проблемы вместе со всеми соответствующими переменными.< /p>
Спасибо.
Описание проблемы Я пытаюсь добавить ограничение к моей задаче оптимизации планирования, чтобы гарантировать, что сгенерированные расписания имеют последовательные часы (т. е. отсутствие промежутков между временными интервалами в течение дня). Однако текущая реализация не работает должным образом и возвращает INFEASIBLE, несмотря на наличие достаточных ресурсов (учителей, классов и предметов). Ниже приведен проблемный раздел моего кода: [code]# C - Problematic - Timetable needs to be consecutive for lvl_idx, level in enumerate(self._problem.levels): for sub_idx, subject in enumerate(self._problem.subjects): if self._problem.curriculum_contains(level, subject): required_slots = self._problem.curriculum_time_request(level, subject)
for day, (start, end) in self._problem.slots_per_day().items(): for tch_idx in self._all_teachers: for loc_idx in self._all_locations: for slt_start in range(start, end - required_slots + 1): sequence = [ self._assignment[lvl_idx, sub_idx, tch_idx, slt_start + offset, loc_idx] for offset in range(required_slots) ]
for i in range(len(sequence) - 1): self._model.Add(sequence[i] == sequence[i + 1])
[/code] Что я пробовал [list] [*]Добавлено больше учителей, удалены некоторые уровни (расписания занятий, а не помещения), с никакого успеха. Переменные, похоже, не являются проблемой. [*]Изменено положение этого ограничения в коде, чтобы увидеть, влияет ли порядок на результаты. [*]Удалены другие ограничения, чтобы изолировать проблему. [/list] Контекст Я создаю программное обеспечение, используя OR-Tools для генерации расписания средних школ Румынии. Я работаю с слегка измененная версия примера SAT по школьному расписанию OR-Tools: школьное расписание OR-Tools. Вот некоторая справочная информация, которая может быть полезна: [list] [*]В Румынии учащиеся распределяются по определенным классам (комнатам), а учителя перемещаются между этими классами. Есть исключения, например, по предметам IT&C (информационные технологии и коммуникации), нам нужно ходить в классы. со специальным оборудованием как компьютерные классы. [*]Перерывы между уроками минимальны, обычно около 10 минут. (никаких перерывов между часами вообще не требуется!) [/list] Здесь вы найдете мой полный код для репликации проблемы вместе со всеми соответствующими переменными.< /p> Спасибо.
В настоящее время я работаю над проектом, в котором мне нужно сначала объединить два набора данных:
Первый набор данных содержит данные о погоде с 30-минутными интервалами. Второй набор данных содержит данные минутного уровня с фотоэлектрическим...
В настоящее время я работаю над проектом, в котором мне нужно сначала объединить два набора данных:
Первый набор данных содержит данные о погоде с 30-минутными интервалами. Второй набор данных содержит данные минутного уровня с фотоэлектрическим...
Итак, у меня есть конструкция, в которой используются контрольные суммы CRC32C, чтобы гарантировать, что данные не были повреждены. Я решил использовать CRC32C, потому что у меня может быть как версия программного обеспечения, так и версия с...