Моделирование энергетического рынка с использованием многопроцессорной обработки в python - PullRequest
0 голосов
/ 12 января 2019

У меня есть длинный код (430 строк), который используется для имитации энергетического рынка в соответствии с конкретными рекомендациями.

Четыре различных процесса: Дом, Рынок, Погода, Внешний.

У каждого процесса есть определенная задача, указанная ниже:

Дом имеет значение с плавающей запятой производства и потребления, торговую политику в виде целого числа и рассчитывает обмены энергией между каждым домом (для моделирования создается несколько домашних процессов).

Рынок рассчитывает текущую цену на энергию на основе производства и потребления и внешних факторов.

Погода определяет случайные переменные температуры и сезона, которые будут использоваться на рынке.

Внешний - это дочерний процесс Маркета, который предоставляет случайные внешние факторы, которые я создал.

У меня есть проблема в моем коде, когда я создаю новый поток для отображения результатов каждого дня моделирования (дни проходят каждые 2 секунды), но я чувствую, что мой код не запускает поток должным образом, и я довольно потеряно относительно того, где проблема происходит точно и почему. Я использовал различную печать ("."), Чтобы показать, куда идет программа, и определить, где ее нет, и я не могу понять, почему поток не запускается должным образом.

Я в Windows, а не в Linux. Если это может быть проблемы, пожалуйста, сообщите мне. Ниже я покажу фрагмент кода того, где проблема, по-видимому, и полный код, а также PDF-файл, объясняющий более подробно, как проект должен выполняться по ссылке на github (430 строк кода не представляется разумным для публикации здесь) .

def terminal(number_of_homes, market_queue, home_counter, clock_ready, energy_exchange_queue, console_connection, console_connection_2):
day = 1

while clock_ready.wait(1.5 * delay):
    req1, req2, req3, req4 = ([] for i in range(4))

    for i in range(number_of_homes):
        a = market_queue.get()
        req1.append(a)
    req1 = sort(req1)

    for i in range(number_of_homes):
        a = market_queue.get()
        req1.append(a)
    req2 = sort(req2)

    for i in range(number_of_homes):
        a = market_queue.get()
        req1.append(a)
    req3 = sort(req3)

    req1 = req1 + req2 + req3

    for i in range(energy_exchange_queue.qsize()):
        b = energy_exchange_queue.get()
        req4.append(b)
    req4 = sort(req4)

    thread = threading.Thread(target = console_display, args = (number_of_homes, req1, day, req4, console_connection.recv(), console_connection_2.recv()))
    thread.start()
    thread.join()

    day += 1

Ссылка на Github: https://github.com/MaxMichel2/Energy-Market-Project

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...