본문 바로가기

DQN Catch game 예제 코드 오늘은 DQN을 이용해 catch game 예제를 맹글어보았다 :-) 모델이 학습하는 python 코드가 서버가 되고, agent가 동작하는 Processing 코드가 클라이언트가 된다. 웹 소켓을 통해 python과 Processing이 서로 연동이 이루어지고, agent의 실시간 정보가 python으로 전달된다. Python server import socket import tensorflow as tf import numpy as np import random import math import os HOST = '127.0.0.1' PORT = 3030 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind((HOST, PORT)) s.liste..
Socket을 이용한 Python과 Processing 간의 통신 Processing client.pde import processing.net.*; Client myClient; void setup() { size(200, 200); myClient = new Client(this, "127.0.0.1", 3030); } void draw() { myClient.write("Hello"); // send whatever you need to send here String kk = myClient.readString(); println(kk); } Python server.py import socket HOST = '127.0.0.1' PORT = 3030 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind((H..
Linux Virtual Serial Port 생성 및 테스트 프로세스 간 통신을 하는데 가장 유용한 것 중 하나가 시리얼 통신이다. 그래서 가상 시리얼 포트를 생성해서 통신 테스트를 해보자 :-) 1. socat 설치 2. 열려있는 시리얼 포트 확인 3. ttyS10 ttyS11을 서로 연결 ttyS10에서 읽고, ttyS11에서 "test"를 입력해서 전달
Q-learning grid world 예제 코드 Processing을 이용해 q learning을 이용한 grid world 예제를 작성해보았다. QLearningAgent.pde import grafica.*; int cellSize = 50; Cell[][] grid; PVector goal; PVector agent; int gridSize = 15; int trainStep = 0; int moveStep = 0; boolean reset = true; PrintWriter output; int nPoints = 500; GPointsArray points = new GPointsArray(nPoints); GPlot plot; void setup() { size(1000, 700, P3D); grid = new Cell[gridSize][gr..
Java로 만든 Google TimeTimer PC 버젼 Google 타이머로 유명한 TimeTimer를 java로 만들어보았다, 다이소에서 오천원에 팔 것 같이 생긴 주제에 거의 2만원 전후로 판매하고 있어서, 그냥 PC 버젼으로 만들었다. :-) 아래 코드를 실행하면 클릭 가능한 투명 배경 위에 타이머가 생성된다. 타이머의 시간을 설정하려면, 타이머를 클릭하고 'r' 을 누르면 팝업창이 뜬다. 팝업창에서 최대 60분으로 원하는 시간을 입력하면, 타이머가 시작된다. :-) 참고로 윈도우os를 제외한 os에서는 투명한 JPanel 뒤로 클릭이 안된다. JPanel 사이즈를 시계사이즈 만큼 줄이고 JPanel 위치를 0,0에서 아래 위치로 옮기고, 시계 위치도 0, 0으로 바꾸면 될 것이다. 본인 pc 해상도에 맞춰서 JPanel 사이즈도 조절해줘야 한다 :-)..
Keyboard Rain Midi
JAVA ArrayList 내 단어 길이 내림차순 정렬 List sortedList = new ArrayList(importand_document_entities); Comparator c = new Comparator() { public int compare(String s1, String s2) { return Integer.compare(s2.length(), s1.length()); } }; Collections.sort(sortedList, c); 참고로 오름차순으로 정렬을 하려면 compare내부의 s2.length()와 s1.length()의 위치를 바꿔주면 된다 :-)
JAVA Combination 조합 코드 예제 코딩하다보면 combination으로 조합이 필요한 경우가 많다. 아래 코드를 이용해 array의 조합을 획득할 수 있다. Combinatorics.java package com.saltlux.shkim; import java.math.BigInteger; public class Combinatorics { int elements; int length; BigInteger totalResults, current; int[] indices; public Combinatorics(int elements) { this(elements, elements); } static final byte[] intToByteArray(int value) { return new byte[] { (byte) (value >>>..