2016-08-23 69 views
-2

我偶然發現了一個我想從Julia轉換爲Python的軟件(對Julia沒有太多經驗)。我遇到的主要問題是我不明白到底是怎麼回事在我打上評論#PROBLEM下面的章節/高於將Julia JuMP轉換爲Python PuLP

skaters_teams是180×10矩陣(180個滑冰和10支球隊)並且球隊被存儲爲二進制數組,其中skaters_teams [0]給出球員0的數組,例如[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]) 
+0

歡迎來到Stack Overflow!以下是提出問題的一些準則,以便從人們獲得最有幫助的回覆:http://stackoverflow.com/help/how-to-ask **和** http://stackoverflow.com/help/mcve –

+0

我認爲關鍵是:(a)閱讀一些關於語言的基本教程,讓你開始瞭解基礎知識,(b)發佈一個非常具體問題的問題(即當我這樣做時,我得到這個錯誤)。只是發佈一段代碼並要求對其進行審覈並不符合本網站的目標。嘗試閱讀我上面給出的鏈接,再試一次! –

+0

你越來越近了。但是,對於這個網站,「我不理解這些線路,請給他們解釋」。我會(a)儘可能多地提供有關您對這些行正在做什麼的理解的信息,(b)根據理解說明您編寫的代碼,以及(c)解釋您遇到的問題碼。此外,要警告,看起來這是一個與Python和Julia中的特定模塊相關的問題,可能有或可能沒有很多人熟悉它們,所以即使是一個良好的問題也不能保證成功。 –

回答

1

在玩了一段時間後,我找到了一個解決方案。如果有人有類似的問題,紙漿和跳這裏是我用過的。

for i in range(num_teams): 
    m += sum(x * st[i] for x,st in zip (skaters_lineup, skaters_teams[:])) >= used_team[i] 
    m += sum(x * st[i] for x,st in zip (skaters_lineup, skaters_teams[:])) <= 6*used_team[i] 
+0

不錯的工作 - 很高興聽到這個問題有一個解決方案! –