__init __ () отсутствует 1 обязательный позиционный аргумент 'master' - PullRequest
0 голосов
/ 03 апреля 2020

У меня проблема с созданием этого основного файла в пользовательской среде для open-AI. Итак, я создал среду, и все устанавливается нормально, но когда я пытаюсь запустить ее, в заголовке отображается ошибка. Вот основной файл.

class Params():
    def __init__(self, master):
        self.master = master
        self.lr = 0.001
        self.gamma = 0.99
        self.tau = 1.
        self.seed = 1
        self.num_processes = 16
        self.num_step = 20
        self.max_episode_length = 10000
        self.env_name = 'SolitaireEnv-v1'

os.environ['OMP_NUM_THREADS'] = '1'
params = Params()
torch.manual_seed(params.seed)
env = gym.make(params.env_name)
shared_model = ActorCritic(env.observation_space.shape[0], env.action_space)
shared_model.shared_memory()
optimiser = Optimiser.SharedAdam(shared_model.parameters(), lr=params.lr)
optimiser.shared_memory()
processes = []
p = sp.Process(target = Testing, args=(params.num_processes, params, shared_model))
p.start()
processes.append(p)
for rank in range(0, params.num_processes):
    p = sp.Porcess(target=train, args=(rank, params, shared_model, optimiser))
    p.start()
    processes.append(p)
for p in processes:
    p.join()

Ниже приведена функция __init__, которую она использует

def __init__(self, master):
    self.master = master

    self.canvas = Canvas(self.master,
                         background=BACKGROUND,
                         highlightthickness=0,
                         width=NROWS*XSPACING,
                         height=3*YSPACING + 20 + MARGIN)
    self.canvas.pack(fill=BOTH, expand=TRUE)


    self.dealbutton = Button(self.canvas,
                             text="Deal",
                             highlightthickness=0,
                             background=BACKGROUND,
                             activebackground="green",
                             command=self.deal)
    Window(self.canvas, MARGIN, 3*YSPACING + 20,
           window=self.dealbutton, anchor=SW)

    x = MARGIN
    y = MARGIN

    self.deck = Deck(x, y, self)

    x = x + XSPACING
    self.opendeck = OpenStack(x, y, self)

    x = x + XSPACING
    self.suits = []
    for i in range(NSUITS):
        x = x + XSPACING
        self.suits.append(SuitStack(x, y, self))

    x = MARGIN
    y = y + YSPACING

    self.rows = []
    for i in range(NROWS):
        self.rows.append(RowStack(x, y, self))
        x = x + XSPACING

    self.openstacks = [self.opendeck] + self.suits + self.rows

    self.deck.fill()
    self.deal()

Я не уверен, что еще вам, ребята, может понадобиться, но попытаться помочь - это найденный файл (https://svn.python.org/projects/python/trunk/Demo/tkinter/guido/solitaire.py) здесь я использую его, чтобы попытаться сделать ИИ, который будет играть в игру, любая помощь была бы великолепна, так как я ударил стену и не уверен, где go сформироваться здесь.

Я также знаю, что есть похожий вопрос, но, посмотрев на него, это не помогло в ситуации, которая у меня возникла.

1 Ответ

1 голос
/ 03 апреля 2020

Ваш класс Params принимает один позиционный аргумент, master, как вы можете видеть в функции __init__().

Вы называете это как params = Params(), это должно быть params = Params(master), где вы иметь существующее значение / объект для master.

...