안녕하세요?
지난번 포스팅에서 어떻게 main.py라고 RLTrader와 연동이 되는 작업을 하기는 했는데, 문제는 제대로 결과가 출력되지 않았는 것을 볼 수 있었습니다. 그래서 이 문제를 해결하기 위해서 동분서주 하는 것이 이번 포스팅의 주요 내용이 될 것입니다.
그래서 먼저 agent.py에 가서, 위 스크린샷에서 보이는 것처럼 def __init__(self): 라는 초기화라고 해야 할까요? 처음 스크립트가 시작되지 마자 실행되는 파일에서 먼저 self.가 붙은 광역 변수가 실행되도록 만들어 줍니다.
그리고 나서 이 self가 붙은 global(광역) 변수를 위 스크린샷과 같이 각각의 행동이 결정되는 곳에다가 배치해서 그 결과를 저장하도록 만들어 줍니다.
그런데 이렇게 해서는 클래스 안에서는 자유롭게 이동하는데 클래스 밖으로 가서 자유롭게 뛰어다니기는 힘들었습니다. 그래서 위 스크린샷과 같이 초기화를 하는 메서드 밖에서 클래스 변수로 선언해 주도록 합니다.
그리고 나서 main.py로 가서 위 스크린샷처럼 이제 agent 모듈의 Agent 클래스를 임포트 하도록 해 줍니다. 이런 식으로 일단 어떻게 가지고 오도록 만들어 봅니다.
그리고 나서 위 스크린샷과 같이 Agent()클래스를 활성화 시킨 다음에, 여기서 있는 클래스의 변수를 가지고 오도록 만들어 봅니다.
그런데 그냥 실행을 하니까, 위 스크린샷처럼 설정이 되어 있지 않아서 에러가 발생하는 것을 확인할 수 있었습니다. 그래서 이번에는 에러가 발생하지 않도록 저렇게 복잡한 변수들을 일일히 입력해 보았습니다.
문제는 이렇게 하고 나서도, 계속해서 위 스크린샷처럼 부모 프로세스에서 실행을 시키면 계속 에러가 떠서 무슨 대책이 없다는 생각이 들었습니다.
그래서 한번 위 스크린샷처럼 클래스명.변수이름 이러는 형식으로 만들어서 한번 작업을 해 보도록 합니다. 만약 성공한다면 print()함수로 값이 나올 것 입니다.
이번에는 성공할 것이라고 믿고서, 한번 위 스크린샷처럼 pytrader4인 부모 프로세스를 실행시켜서 진짜로 결과가 나오기를 기대하였습니다만.....
그런데 문제가 하나 생겼습니다. 주석처리한 것을 이리 꼬이고 저리 꼬여서 그만 위 스크린샷처럼 중요한 코드도 주석처리에 들어가 버렸습니다. 그래서 이 부분을 처리하가 위해서 따로 주석처리를 바꿔야 했습니다.
문제는 에러가 없기는 없었습니다. 그러나 결과도 제대로 나오지 않는 것을 확인할 수 있었습니다. 결국 이렇게 부모 프로세스를 계속 실행시켜서 연계를 하는 것은 그다지 문제해결에 도움이 되지 않는 다는 것을 알 수 있었습니다.
그래서 RLTrader의 스크립트에서 기존에 아껴 두었던 지정된 데이터 베이스 파일과 코드명등을 이용하도록 해서, RLTrader 자체만 실행을 시켜 보도록 합니다.
그런데 제 기대와는 다르게 이렇게 하고도 아무런 print()가 찍히지 않는 것을 볼 수 있었습니다. 즉, 에러가 나오지는 않았지만, 그렇다고 해서 제대로 된 결과가 나오는 것도 아니라는 것을 알 수 있었습니다. 이대로는 문제가 많으니 이것을 해결하기 위해서 또 동분서주 해야 하는 상황이 되었습니다.
'무모한 도전-주식 인공지능 만들기' 카테고리의 다른 글
가장 힘들어 보이는 장애물을 넘기 위한 시도-13- (0) | 2019.04.20 |
---|---|
가장 힘들어 보이는 장애물을 넘기 위한 시도-12- (2) | 2019.04.20 |
가장 힘들어 보이는 장애물을 넘기 위한 시도-10- (0) | 2019.04.19 |
가장 힘들어 보이는 장애물을 넘기 위한 시도-9- (0) | 2019.04.19 |
가장 힘들어 보이는 장애물을 넘기 위한 시도-8- (0) | 2019.04.18 |