Python Pulp Query — распределите задачу в пределах временного диапазона для достижения цели по минимизации количества реPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Python Pulp Query — распределите задачу в пределах временного диапазона для достижения цели по минимизации количества ре

Сообщение Anonymous »

Цель:
Минимизировать количество ресурсов для обработки всех требований.
Вводные данные, которые у нас есть, — это список требований, которые необходимо выделить любому ресурсу из списка ресурсов, которые можно сопоставить. .
Каждое требование должно быть распределено по продолжительности в соответствии с количеством запрошенных часов и в пределах диапазона дат, указанного в запросе.
Задача:
Код, который я представленный ниже ресурс выделяется с даты начала (Доступный диапазон (день начала)) во входных данных, он не определяет из заданного диапазона дней (Доступный диапазон (день начала) Доступный диапазон (день окончания)), какую дату лучше всего иметь в качестве даты начала, чтобы можно было свести к минимуму общее количество производимых автомобилей.
Например: В приведенном ниже примере входных данных запрос 1 может быть назначен любому ресурсу и на любые 3 недели с предоставленный диапазон. Количество недель в запросе 1 составляет 3 недели (120/40), которые можно распределить от
22W211 до 22W235 или от 22W221 до 22W245 или от 22W231 до 22W255 или от 22W241 до 22W265 и т. д.
Пример ввода:
введите здесь описание изображения
RES_LIST = уникальный набор ресурсов, упомянутых в таблице.
мы создали копию списка разрешений, чтобы можно было использовать те же самые разрешения. создавался несколько раз. ресурс можно принять за роботов, мы можем иметь несколько копий одного и того же робота, если это может уменьшить количество покупаемых роботов
# Create a linear programming problem using pulp
prob = pulp.LpProblem("RES_Scheduling", pulp.LpMinimize)

# Binary variables to indicate if a res is used or not
RES_LIST = pulp.LpVariable.dicts('RES_LIST', res_list, cat='Binary')

)
# Двоичные переменные, указывающие, используется или нет скопированный ресурс
RES_LIST_copied = Pulse.LpVariable.dicts('RES_LIST_copied', [элемент для подсписка в copy_pnos.values() для элемента в подсписке],
cat='Binary')
# BInary variables to indicate assignment of res to requirement
ASSIGNMENT = pulp.LpVariable.dicts('ASSIGNMENT', (range(len(Requirements)), range(len(RES_LIST) + len(RES_LIST_copied))), cat='Binary')
# print(ASSIGNMENT)
# Objective function: Minimize the number of res used

prob += pulp.lpSum([RES_LIST[RES] for RES in RES_list]) + pulp.lpSum([RES_LIST_copied[RES] for RES in RES_LIST_copied])

# Constraint: Ensue each test need is assigned 1 RES or copied RES
for i, need in enumerate(Requirements):
prob += pulp.lpSum([ASSIGNMENT[j] for j, RES in enumerate(RES_List+ list(RES_LIST_copied)) if RES.split('-')[0] in need['RES']]) == 1
# Constraint: Ensure assignment variables are consistent with usage variables
for j, RES in enumerate(RES_List+ list(RES_LIST_copied)):
if RES.split('-')[0] in need['RESs']:
if '-' in RES: # If its a copied RES
prob += ASSIGNMENT[j]

Подробнее здесь: https://stackoverflow.com/questions/789 ... e-to-minim
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»