Я наткнулся на часть программного обеспечения, которое я бы хотел конвертировать из Julia в Python (у меня нет большого опыта работы с Julia). Основная проблема, с которой я сталкиваюсь, - это то, что я не понимаю, что происходит в разделе, отмеченном комментариями. #PROBLEM НИЖЕ/ВЫШЕПреобразование Julia JuMP в Python PuLP
skaters_teams - это матрица 180 x 10 (180 фигуристов и 10 команд) и команда хранится как двоичный массив, где skaters_teams [0] дает массив игрока 0 ex: [1, 0, 0, 0, 0, 0, 0, 0, 0, 0].
m = Model(solver=GLPKSolverMIP())
# Variable for skaters in lineup
@defVar(m, skaters_lineup[i=1:num_skaters], Bin)
# Variable for goalie in lineup
@defVar(m, goalies_lineup[i=1:num_goalies], Bin)
# One goalie constraint
@addConstraint(m, sum{goalies_lineup[i], i=1:num_goalies} == 1)
# Eight Skaters constraint
@addConstraint(m, sum{skaters_lineup[i], i=1:num_skaters} == 8)
# between 2 and 3 centers
@addConstraint(m, sum{centers[i]*skaters_lineup[i], i=1:num_skaters} <= 3)
@addConstraint(m, 2 <= sum{centers[i]*skaters_lineup[i], i=1:num_skaters})
# between 3 and 4 wingers
@addConstraint(m, sum{wingers[i]*skaters_lineup[i], i=1:num_skaters} <= 4)
@addConstraint(m, 3<=sum{wingers[i]*skaters_lineup[i], i=1:num_skaters})
# between 2 and 3 defenders
@addConstraint(m, 2 <= sum{defenders[i]*skaters_lineup[i], i=1:num_skaters})
@addConstraint(m, sum{defenders[i]*skaters_lineup[i], i=1:num_skaters} <= 3)
# Financial Constraint
@addConstraint(m, sum{skaters[i,:Salary]*skaters_lineup[i], i=1:num_skaters} + sum{goalies[i,:Salary]*goalies_lineup[i], i=1:num_goalies} <= 50000)
# exactly 3 different teams for the 8 skaters constraint
@defVar(m, used_team[i=1:num_teams], Bin)
#PROBLEM BELOW
@addConstraint(m, constr[i=1:num_teams], used_team[i] <= sum{skaters_teams[t, i]*skaters_lineup[t], t=1:num_skaters})
@addConstraint(m, constr[i=1:num_teams], sum{skaters_teams[t, i]*skaters_lineup[t], t=1:num_skaters} <= 6*used_team[i])
#PROBLEM ABOVE
@addConstraint(m, sum{used_team[i], i=1:num_teams} == 3)
ли это зацикливание так:
for i in range(num_teams):
for t in range(num_skaters):
m += sum(skaters_teams[i][t]*skaters_lineup[t]) >=ut[i]
m += sum(skaters_teams[i][t]*skaters_lineup[t]) <=6*ut[i]
Кроме того, я не могу найти любую документацию по использованию 3 параметров с @addConstraint
. Первая проблема заключается в том, что вы добавляете ее, а третья - это ограничение, которое вы добавляете. Что второе?
@addConstraint(m, constr[i=1:num_teams], sum{skaters_teams[t, i]*skaters_lineup[t], t=1:num_skaters} <= 6*used_team[i])
Добро пожаловать в переполнение стека! Ниже приведены некоторые рекомендации по заданию вопросов, чтобы получить наиболее полезные ответы от людей: http://stackoverflow.com/help/how-to-ask ** и ** http://stackoverflow.com/help/mcve –
Я думаю, что ключ состоит в том, чтобы (а) прочитать некоторые базовые учебники на языках, чтобы вы начали с понимания основ, (б) опубликовать вопрос с очень конкретной проблемой (т. Е. Когда я это сделаю, я получаю эту ошибку). Просто публиковать общий блок кода и просить его пересмотреть, не соответствует целям этого сайта. Попробуйте прочитать те ссылки, которые я дал выше, и дайте им еще один снимок! –
Вы приближаетесь. Но, тем не менее, «я не понимаю эти строки, объясните им, пожалуйста» слишком широка для этого сайта. Я бы (а) предоставил как можно больше информации о вашем понимании того, что делают линии, (b) объяснить код, который вы написали на основе этого понимания, и (c) объяснить, с какими проблемами вы сталкиваетесь с этим код. Кроме того, чтобы быть предупрежденным, похоже, что это вопрос, относящийся к конкретным модулям в Python и Julia, и может быть, может быть, не так много людей, знакомых с ними, поэтому даже хорошо поставленный вопрос не гарантирует успех. –