Алгоритм размещения с использованием Python

Контейнеры Python содержат ссылки на другие объекты. См. Этот пример:

>>> a = []
>>> b = [a]
>>> b
[[]]
>>> a.append(1)
>>> b
[[1]]

В этом b есть список, содержащий один элемент, который является ссылкой на список a. Список a изменен.

Умножение списка на целое эквивалентно добавлению списка к себе несколько раз (см. операции общей последовательности ). Итак, продолжаем с примера:

>>> c = b + b
>>> c
[[1], [1]]
>>>
>>> a[0] = 2
>>> c
[[2], [2]]

Мы видим, что список c теперь содержит две ссылки на список a, который эквивалентен c = b * 2.

Python FAQ также содержит объяснение этого поведения: Как создать многомерный список?

2
задан Rahul Sharma 25 March 2019 в 07:41
поделиться

1 ответ

Эту проблему можно рассматривать как ориентированный граф, где ребро от вершины A до другой вершины B представляет грузовик, идущий из A в B (или производителя, желающего перевезти груз от A до B), а вес кромки можно использовать для представления величины нагрузки (или грузоподъемности грузовика).

Вы можете использовать матрицу смежности для каждого производителя и перевозчика. Каждый раз, когда новая запись заполняется в любой из матриц (скажем, в матрице производителя), соответствующая запись проверяется, проверяется в другой матрице (матрице транспортера) и сравнивается нагрузка, чтобы увидеть, есть ли совпадение. 1110]

```python
class trans_struct(T_ID, T_Type, T_Length, Trucks, Price):
    def __init__(self, T_ID, T_Type, T_Length, Trucks, Price) 
    self.T_ID = T_ID
    self.T_Length = T_Length
    self.T_Trucks = T_Trucks
    self.T_Type = T_Type
    self.T_Price = T_Price

class man_struct(M_ID, M_Type, T_Length, Trucks, Loading_Time):
    def __init__(self, M_ID, M_Type, T_Length, Trucks, Loading_Time)
    self.M_ID = M_ID
    self.T_Length = T_Length
    self.T_Trucks = T_Trucks
    self.T_Type = T_Type
    self.T_Price = T_Price

dicti = {A:0, B:1, C:2} #dictionary to map places to integeral indexes
num_places = len(dicti)    
trans_mat = [[[] for __ in range(num_places)] for _ in range(num_places)]  #initialize transport matrix to a default value
manf_mat = [[[] for __ in range(num_places)] for _ in range(num_places)]


def manf_input():
    #take input for manufacturer's data in this func into the structure object
    manf_mat[dicti[A]][dicti[B]].append((struct.T_Weight, struct))  #assuming manufacturer wanted to move goods from A to B
    check_for_match(A, B)     #function to compare corresponding matrix entries each time a new entry is inserted

def check_for_match(A, B, T_Length):
    for entry in trans_mat[dicti[A]][dicti[B]]:
        if  entry[0]>= T_Length:
            #match found display required info by retreiving from the structure
#
```


Я написал только некоторые функции здесь. Я написал только функцию, которая проверяет, когда для производителя создается новая запись, а не наоборот. Вы можете добавить дополнительные ограничения, такие как дата, время и т. Д.

0
ответ дан virmis_007 25 March 2019 в 07:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: