В настоящее время я работаю над кодом, который сможет решить наш график распределения каждый день, без необходимости заставлять кого-то в компании делать это каждое утро. В настоящее время у меня есть следующий код:
data = [
{
"Day": "2024-07-10",
"Location": "Depo",
"Pick-up": "A",
"Boxes": 11,
"Weekday": "Wednesday",
"Time to pickup": "12:30:00"
},
{
"Day": "2024-07-10",
"Location": "Depo",
"Pick-up": "B",
"Boxes": 2,
"Weekday": "Wednesday",
"Time to pickup": "12:30:00"
},
{
"Day": "2024-07-10",
"Location": "Depo",
"Pick-up": "C",
"Boxes": 5,
"Weekday": "Wednesday",
"Time to pickup": "12:00:00"
}
]
df_stint = pd.DataFrame(data)
# Parameters
bus_capacity = 10
num_buses = 6
model = pulp.LpProblem("Bus_Optimization", pulp.LpMinimize)
# Decision variables
pickup_vars = pulp.LpVariable.dicts("Pickup",
[(i, j) for i in range(num_buses) for j in range(len(df_stint))],
cat = 'Binary')
dropoff_vars = pulp.LpVariable.dicts("Dropoff",
[(i, k) for i in range(num_buses) for k in df_stint['Location'].unique()],
cat='Binary')
# Split variables
split_vars = pulp.LpVariable.dicts("Split",
[(i, j) for i in range(num_buses) for j in range(len(df_stint))],
lowBound=0,
cat='Integer')
# Objective: Minimize the number of buses used
model += pulp.lpSum([dropoff_vars[i, k] for i in range(num_buses) for k in df_stint['Location'].unique()])
# Constraint 1: each stint is picked up exactly once
for j in range(len(df_stint)):
model += pulp.lpSum(pickup_vars[i, j] for i in range(num_buses)) == 1
# Constraint 2: capacity constraint
for i in range(num_buses):
model += pulp.lpSum(df_stint.iloc[j]['Boxes'] * pickup_vars[i, j] for j in range(len(df_stint)))
Подробнее здесь: [url]https://stackoverflow.com/questions/78737600/pulp-model-is-infeasible-but-gives-feasible-results[/url]
В настоящее время я работаю над кодом, который сможет решить наш график распределения каждый день, без необходимости заставлять кого-то в компании делать это каждое утро. В настоящее время у меня есть следующий код: [code]data = [ { "Day": "2024-07-10", "Location": "Depo", "Pick-up": "A", "Boxes": 11, "Weekday": "Wednesday", "Time to pickup": "12:30:00" }, { "Day": "2024-07-10", "Location": "Depo", "Pick-up": "B", "Boxes": 2, "Weekday": "Wednesday", "Time to pickup": "12:30:00" }, { "Day": "2024-07-10", "Location": "Depo", "Pick-up": "C", "Boxes": 5, "Weekday": "Wednesday", "Time to pickup": "12:00:00" } ]
df_stint = pd.DataFrame(data)
# Parameters bus_capacity = 10 num_buses = 6
model = pulp.LpProblem("Bus_Optimization", pulp.LpMinimize)
# Decision variables pickup_vars = pulp.LpVariable.dicts("Pickup", [(i, j) for i in range(num_buses) for j in range(len(df_stint))], cat = 'Binary')
dropoff_vars = pulp.LpVariable.dicts("Dropoff", [(i, k) for i in range(num_buses) for k in df_stint['Location'].unique()], cat='Binary')
# Split variables split_vars = pulp.LpVariable.dicts("Split", [(i, j) for i in range(num_buses) for j in range(len(df_stint))], lowBound=0, cat='Integer')
# Objective: Minimize the number of buses used model += pulp.lpSum([dropoff_vars[i, k] for i in range(num_buses) for k in df_stint['Location'].unique()])
# Constraint 1: each stint is picked up exactly once for j in range(len(df_stint)): model += pulp.lpSum(pickup_vars[i, j] for i in range(num_buses)) == 1
# Constraint 2: capacity constraint for i in range(num_buses): model += pulp.lpSum(df_stint.iloc[j]['Boxes'] * pickup_vars[i, j] for j in range(len(df_stint)))
У меня есть модель решения оптимизационной транспортной задачи, она содержит от 5000 до 50000 переменных и 1000-7000 ограничений (в зависимости от набора данных), и я попробовал запустить модель на решателе GLOP как с ограничениями, так и без них (...
Привет, я использую модель с использованием CBC целлюлозы, и у меня мало ограничений в модели, которые могут сделать модель невыполнимой, если в модель будут введены неправильные входные данные.
В Python я пытаюсь решить проблему линейной оптимизации с помощью пакета пульпы.
Я имею n непрерывных показателей и дихотомическая цель. Мне нужно выбрать подмножество индикаторов M и порог для каждого индикатора, чтобы, если по крайней мере,...
В Python я пытаюсь решить проблему линейной оптимизации с помощью пакета пульпы. Мне нужно выбрать подмножество максимально m индикаторов M и порог для каждого индикатора, чтобы, если по крайней мере, индикаторы P выше их порога, запись...
Я запускаю LP с помощью пульпы, но получаю атрибут ошибки: объект «nonetype» не имеет атрибута «ActualSold». Поэтому я нашел этот пост об определении доступных решателей. Это приказало мне попробовать код ниже.
import pulp...