Я хочу изменить архитектуру, используемую в этом коде, с Q-learning на DQN, сохранив при этом общий стиль и формат кода, который включает функции создания лабиринта и виджеты. Проще говоря, я хочу создать код планирования пути для этого кода лабиринта планирования пути Q-обучения, просто переключив архитектуру, возможно ли это? и если да, то как? пожалуйста, кто-нибудь, помогите мне с этой проблемой, я пробовал chatgpt и другие ИИ для генерации кода, но они, кажется, стирают большую часть кода и изменяют его, сильно теряя функции генерации лабиринта и входных параметров. Код:
Я хочу изменить архитектуру, используемую в этом коде, с Q-learning на DQN, сохранив при этом общий стиль и формат кода, который включает функции создания лабиринта и виджеты. Проще говоря, я хочу создать код планирования пути для этого кода лабиринта планирования пути Q-обучения, просто переключив архитектуру, возможно ли это? и если да, то как? пожалуйста, кто-нибудь, помогите мне с этой проблемой, я пробовал chatgpt и другие ИИ для генерации кода, но они, кажется, стирают большую часть кода и изменяют его, сильно теряя функции генерации лабиринта и входных параметров. [b]Код:[/b] [code]import numpy as np #Used for array manipulation, especially for the Q-table and reward grid. import pygame from time import time, sleep import matplotlib.pyplot as plt from random import randint as r import random import pickle import sys #Provides access to system-specific parameters and functions, e.g., for quitting the program. from PyQt5 import QtWidgets #Used for creating a graphical interface to set up parameters. from numba import jit, cuda #For JIT (Just-In-Time) compilation, optimizing certain functions
agent_starting_position = [2, 2] n = 10 # Grid size target = [5, 5] # Goal cell penalities = 20 # Number of obstacles path_value = -0.1 # Reward for non-obstacle, non-goal cells gamma = 0.9 # Discount factor for Q-learning epsilon = 0.5 # Exploration probability
while penalities != 0: i = r(0, n - 1) j = r(0, n - 1) if reward[i, j] == 0 and [i, j] != agent_starting_position and [i, j] != target: reward[i, j] = -5 penalities -= 1 obstacles.append(n * i + j)
obstacles.append(n * target[0] + target[1])
for i in range(n): for j in range(n): if reward[i, j] == 0: reward[i, j] = path_value
k = 0 for i in range(n): for j in range(n): states[(i, j)] = k k += 1
cuda.jit()
def layout(): for i in range(n): for j in range(n): pygame.draw.rect( screen, (255, 255, 255), (j * csize, i * csize, (j * csize) + csize, (i * csize) + csize), 0, )
def draw_shortest_path(): global n, shortest_path for i in range(n): for j in range(n): pygame.draw.rect( screen, (255, 255, 255), (j * csize, i * csize, (j * csize) + csize, (i * csize) + csize), 0, )
if [i, j] in shortest_path: pygame.draw.rect( screen, colors[6], ( (j * csize) + 3, (i * csize) + 3, (j * csize) + 11, (i * csize) + 11, ), 0, )
pygame.display.flip()
plt.subplot(1, 2, 1) plt.plot(sumOfRewards) plt.xlabel("Episodes") plt.ylabel("Episode via cost")
plt.subplot(1, 2, 2) plt.plot(episodeViaStep) plt.xlabel("Episodes") plt.ylabel("Episode via step") plt.show()
def map2txt(): # Save grid configuration to a text file global path_value f = open("engel.txt", "w") for i in range(n): for j in range(n): if reward[i, j] == -5: f.write("({}, {}, RED)\n".format(i, j)) if reward[i, j] == 5: f.write("({}, {}, GREEN)\n".format(i, j)) if reward[i, j] == path_value and [i, j] != agent_starting_position: f.write("({}, {}, GRAY)\n".format(i, j)) if [i, j] == agent_starting_position: f.write("({}, {}, BLUE)\n".format( agent_starting_position[0], agent_starting_position[1])) f.close()
for event in pygame.event.get(): if event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE or event.type == pygame.QUIT: #press ecsape button to exit the code. pygame.quit() sys.exit() if event.type == pygame.KEYDOWN: plt.plot(sumOfRewards) plt.xlabel("Episodes") plt.ylabel("Episode via cost") plt.show()
if highestReward_counter < repeatLimit: episode() else: map2txt() draw_shortest_path()
Мне интересно узнать, какой алгоритм лучше всего подходит для поиска пути между двумя точками сетки при наличии стен, что превращает ее в лабиринт. После того как лабиринт был просканирован один раз и мы знаем, где находится каждая стена, какой...
Я читал блог Нила Гафтера по этому вопросу, и мне до сих пор неясны некоторые моменты.
Почему невозможно создавать реализации API коллекций которые сохраняют информацию о типе с учетом текущего состояния Java, JVM и существующих API коллекций? Не...
After major changes in a chess game to make it workable in android im getting errors and it doesnt launch the game although it works on browsers and windows, I tried to fix build gradle and gradle properties as i guess thats the actual bottleneck...
После серьезных изменений в шахматной игре, чтобы сделать ее работоспособным в Android Im, я получаю ошибки, и она не запускает игру, хотя она работает в браузерах и окнах, я пытался исправить свойства сборки Gradle и Gradle, так как я думаю, что...
После серьезных изменений в шахматной игре, чтобы сделать ее работоспособным в Android Im, получаю ошибки, и она не запускает игру, хотя она работает в браузерах и окнах, я попытался исправить свойства сборки Gradle и Gradle, так как я думаю, что...