Моя проблема - расширение транспортной проблемы. Переменная решения - это количество, необходимое для перемещения с одного склада на другой. Существует три вида затрат: входящий, исходящий и линейный. Моя цель - снизить общую стоимость. Однако входящие затраты на единицу зависят от количества, отгруженного с одного склада на другой, и отношение имеет форму пошаговой функции.
Примеры строк для входящей стоимости за единицу CSV-файла. Имеет две колонки:
Количество и Входящие расходы на единицу .
Ряд 1: 5 единиц и 10 долларов США,
Ряд 2: 10 единиц и $ 30
Если отправленная единица составляет менее 5 единиц, то стоимость составляет 10 долларов США, а стоимость 30 долларов, если поставленная единица превышает 5 и меньше 10 единиц
Формат затрат на исходящие и линейные перевозки аналогичен формату затрат на входящие. Я пытаюсь построить абстрактную модель в pyomo. Я не уверен, как кодировать целевую функцию, когда стоимость единицы изменяется в зависимости от количества (переменная решения) в форме пошаговой функции. Если бы затраты на единицу были статическими, это было бы простым умножением количества и стоимости единицы.
def inbound_cost(qty):
for index, row in inbound_cost.iterrows():
if(value(qty)<=row["Quantity"]):
return(row["inbound Cost per unit"])
def objective_rule(model):
return sum(model.qty[SKU,Source,Destination]*inbound_cost(model.qty[SKU,Source,Destination]) for SKU in model.SKU for Source in model.Source for Destination in model.Destination)
model.objectiveFunc = Objective(rule = objective_rule, sense=minimize)