簡體   English   中英

SolverStudio如何在for循環(PuLP)中引用2D列表中的1列

[英]SolverStudio how to reference 1 column in a 2D list in a for loop(PuLP)

我有2個數據集x1和x2。 我希望能夠僅在“發件人”列中包含“奧克蘭”的行中獲得x1和x2的所有乘積的總和。 看這里

最終答案應該是(5 * 1)+(2 * 1)+(3 * 1)+(4 * 1)或14。下面給出了我為此編寫的PuLP代碼

# Import PuLP modeller functions
from pulp import *

varFinal = sum([x1[a] * x2[a] for a in Arcs if a == Nodes[0]])

print Nodes[0]
print Arcs[0]

Final = varFinal

打印到控制台的輸出是

奧克蘭市
(“奧克蘭”,“阿爾巴尼”)

我意識到我的最終值為零,因為Arcs [some number]不等於Nodes [some number]。 無論如何,有沒有更改代碼,所以我的最終值為14?

任何幫助表示贊賞。

歡迎堆棧溢出! 因為您只發布了部分代碼,所以我不得不猜測您正在使用哪種數據類型。 從輸出中,我猜您的Nodes是字符串,而您的Arcs是字符串的元組。

您的嘗試非常接近,您希望from列中包含Auckland。 您可以像在數組中一樣將其索引到元組中,因此您需要這樣做: a[0] == Nodes[0]

以下是一個獨立的示例,其中數據的第一位輸出以下內容(請注意,我已更改為python 3.x打印語句(帶括號)):

輸出:

Auckland
('Auckland', 'Albany')
14

碼:

# Import PuLP modeller functions
from pulp import *

# Data
Nodes = ['Auckland',
        'Wellington',
        'Hamilton',
        'Kansas City',
        'Christchuch',
        'Albany',
        'Whangarei',
        'Rotorua',
        'New Plymouth']

Arcs = [('Auckland','Albany'),
        ('Auckland','Hamilton'),
        ('Auckland','Kansas City'),
        ('Auckland','Christchuch'),
        ('Wellington','Hamilton'),
        ('Hamilton','Albany'),
        ('Kansas City','Whangarei'),
        ('Christchuch','Rotorua')]

x1_vals = [1, 2, 3, 4, 5, 9, 11, 13]
x2_vals = [5, 1, 1, 1, 1, 1, 1, 1]

x1 = dict((Arcs[i], x1_vals[i]) for i in range(len(Arcs)))
x2 = dict((Arcs[i], x2_vals[i]) for i in range(len(Arcs)))

varFinal = sum([x1[a] * x2[a] for a in Arcs if a[0] == Nodes[0]])

print(Nodes[0])
print(Arcs[0])
print(varFinal)

供您將來參考,如果您包含其他人可以嘗試運行的代碼(沒有外部數據依賴項),那么人們很可能會給出答案,那樣人們就可以嘗試運行它,對其進行修復並重新發布。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM