-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path기록.txt
65 lines (47 loc) · 2.8 KB
/
기록.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
유전 알고리즘을 이용하여 드라군의 사족보행을 학습시켜보았다.
실험 대상이 될 드라군이다.
몸통과 접해 있는 관절은 2개, 다리 사이 관절은 1개 총 12개의 축을 가진다.
각 축의 회전각을 유전자로 할 것이다.
한 유전자당 4가지의 동작을 넣을 것이므로 48의 유전자 길이를 가질 것이다.
각 유전자의 변이율은 5%이다.
구르기 시작했다.(g23)
혹시나 세대 수가 짧아서 그런 것인지 싶어서 좀더 진행시켜봤다.
계속 구른다. 도움닫기 까지 한다.(g50)
몸통의 y좌표를 1이상으로 했다.
구르지 않고 어느정도 걷기 시작했다.(g49)
그러나 한 세대간 이동거리가 확연히 눈으로 구별하기 힘들다.
동작을 1초 주기로 바꾸고 관절의 이동을 2도로 높였다.
이제 좀 더 빨리 이동할 수 있을 것이다.
뒷발을 펴고 있는게 신경쓰이지만 그래도 행동이 빨라진 것 같긴 하다.(g52)
그래도 이동거리는 여전히 짧다.
세대의 주기를 30초로 늘려보았다.
어째서인지 뒷발을 들고 걷기 시작했다.(g45)
처음 자세가 십자 형으로 되어있어 그럴 것이다.
원래 드라군처럼 몸을 회전시켜 x자로 만들었다.
이번에는 앞발을 들고 걷는다.(g90)
혹시나 싶어서 다시 실행시켜봤다.
한마리가 날랐다(?)(g47)
꽤 정상적으로 걷는다(g55)
자꾸 하나 씩 구른다(g67)
점프를 한다(!)(g134)
계속 처음에 점프를 하지만, 어느정도 안정된 자세가 잡혔다.(g135)
최종적으로 다리를 오므린다 - 편다 - 뒷 다리만 편다 의 동작이 되었다.
-32 -35 -73 41 45 -11 45 -87 -2 76 24 -35 -71 -71 7 74 76 12 44 32 47 -75 -52 -27 41 64 68 64 85 -15 35 37 19 22 -11 -30 89 86 -80 -19 63 48 22 47 30 -31 50 -30
1초마다 총30번 몸통의 y좌표를 측정해 평균값을 구한다. 기준 y좌표는 5이다.
개체의 이동값/y좌표 편차를 적합도 함수로 두어 관찰한다.
joint의 유전자 범위는 90~-90, knee의 유전자 범위는 0~-90으로 설정했다.
서로 부딪히는 것을 방지하기 위해 폭을 넓혔다.
120세대 째 진전이 보이지 않아 변이율을 높이고 이동 거리에 가중치를 부여했다. (거리^2 / 편차)
원래 정의대로 편차를 (y좌표 이동값 - 5) 로 하고 적합도 함수엔 분산으로 대체하였다. 평균값은 필요 없는 셈.
아불싸, 두 회전축의 순서가 반대로 되어있었다.
joint의 x,y축 회전을 동시에 고려하면 애매해진다.
원래 각 변위는 벡터가 아니므로 그 순서에 따라 변위값이 달라진다만, 이 경우에는 계속해서 미소 각 변화를 주는 경우이므로 생각해 봐야 할 문제이다.
생각해보니 아무 문제도 되지 않는다. 평소 각속도 벡터 방향 처럼 합성하면 될 것 같다. 이 문제는 그냥 넘어가도 될 것 같다.
새로 모델링 했다 기준 y좌표는 3.4이다.
#6 jointA와 jointB 모두 유전자 범위를 -90~90으로 롤백했다. 그리고 교차연산을 3점 교차로 늘렸다.
띠용? 난 분명 드라군을 만들었는데 맹독충이 되었다. 그냥 구르는게 아니라 사지를 우겨 넣어 래킹볼로 만든다.
확실히 이점교차보다는 평균 이동거리가 길다. 물론 분산도 커졌다.
#7 자꾸 튀는 놈들을 막기 위해 y 좌표가 일정 이상 되면 다시 3.4로 낮추도록 했다.
#8 생각해보니까 딱히 바뀌는건 없는 것 같다. 그냥 -900으로 보내버렸다.
#9 두 가지 방법을 추가한다. 첫번째는 선택된 10개의 유전자 중 상위 40%는 그대로 유지하고 나머지 60%만 교차연산한다.
두번째는 처음 유전자를 생성할 때 가중치를 부여한다. 0에 가까울 수록 높고, +-90에 가까울 수록 낮다.