Previous Contents 51

Webots 에서 로봇의 좌표값을 얻어내는 두 방법에 대한 이야기

크게 두가지 방법이 있습니다. Physics Controller 를 이용한 접근 혹은 Supervisor Controller 를 이용한 접근 이렇게 두가지 방법이 있는데 제가 테스트 해본 바로는 신뢰성이 Physics Controller 가 더 높아보입니다. Aibo ERS-7 의 Trajectory 를 구성하고 로봇이 실제 움직이는 모양이 Trajectory 와 어느정도 비슷한지를 평가하기 위해 Supervisor Controller 의 supervisor_field_get 함수를 이용해서 값을 추출해 봤는데 좌표값이 제대로 매칭이 안되는 것으로 판단됩니다. 로봇의 루트 노드를 타겟으로 잡고 값을 추출 할 때는 매칭이 되지만 하나의 일부 노드를 타겟으로 잡고 값을 추출 할 때는 제대로 매칭이되지 않는 ..

6. Selection 연산자

너무나 오랜만에 글을 포스팅 합니다. 요 근래 너무 바빠서 별다른 정리의 시간을 갖지를 못했네요. 어쨌든 Selection 연산자에 대해서 알아보겠습니다. 우선 Selection 연산자는 유전자 선택에 쓰이는 연산자 입니다. 밑에 설명한 Mutation 과 Crossover 를 해주기 위해서는 그 대상이 필요하겠죠? 그 대상을 골라주는 역할을 해주는 것이 바로 이 Selection 연산자입니다. Selection 연산자도 꽤 많은 종류가 있는데 몇가지에 대해서만 알아 보겠습니다. 알아볼 Selection 연산자로는 1. 룰렛휠(Roulette Wheel Selection) 2. 균등선택(Stochastic Universal Sampling Method) 3. 랭크선택(Rank-based Selection..

5. MUT(Mutation) 연산자

오랜만에 글을 포스팅 합니다. 이래저래 하고 있는건 많고 정리할 시간이 부족하다보니 이제야 포스팅합니다. 일반적으로 쓰이는 MUT 연산자는 다음과 같은 2가지가 있습니다. 1. Single MUT 2. Multi MUT 하나는 하나의 Bit 를 MUT 시키는 것이고 다른 하나는 여러개의 Bit 를 대상으로 MUT를 수행합니다. 1. Single MUT 이것은 하나의 Bit 만을 MUT 시킵니다. 아주 간단하게 알아 볼 수 있습니다. (1) 선택연산자를 통하여 선택이 이루어진다. (2) 선택된 개체의 한 bit 를 선택하여 MUT 시킨다. 예를 보면 간단하게 변화를 알아볼 수 있습니다. 만약 다음과 같은 유전자가 있다면 0 0 0 0 0 0 1 0 이것이 선택되어 7번째 bit 를 Mutation 시킨다고..

Webots 시뮬레이터의 좌표계...

Webots 시뮬레이터를 혹시라도 이용하시는 분이 있으시다면 참고해 볼만한 내용 입니다. 제작자인 Olivier 씨에게 문의를 해 보았는데 x,y,z 좌표계의 1 이라는 수치가 의미하는 길이가 실세계의 1 미터 라고 하는 군요 그리고 Webots 에서 구현되어 있는 모든 로봇들의 좌표계에 대한 것인데 좌표들은 다 부모 노드에 종속되어 있는 상대적 좌표계 라고 하네요 즉 가장 외부로 나와 있는 것은 dWorld 객체에 종속되어 있는 좌표계를 이용하는 것이고 로봇의 각각의 부분은 그것이 부착되어 있는 부모 노드의 좌표를 원점으로 종속되어 있다고 하는군요. 혹시 웹봇을 이용하시는분이 계신다면 저한테 연락좀 주시겠습니까? 서로 자료에 대해 공유도 하고 토론도 하게요 ^^

4. CX(Crossover) 연산자

이번에는 GA 의 핵심 연산자인 Crossover 연산자 입니다. GA 의 연산자 중에서 가장 많은 연산을 수행하고 그만큼 중요도도 높은 Crossover 연산자 입니다. 수많은 방식의 연산자 들이 존재하지만 오늘은 밑에 있는 것에 대해서만 알아보겠습니다. 1. Onepoint crossover(Single) 2. Twopoint crossover(Multi) 3. Uniform crossover 위의 1,2 번 연산자는 대표적인 기본 연산자 이고, 거의 모든 bit 연산에서 쓰입니다. 3번은 거의 쓰이지 않지만 어떤 문제에는 쓰이기도 합니다. 그래서 소개하는 것입니다. 어쨌든 하나하나 알아보도록 하죠. 1. One-point Crossover(Single Crossover) Onepoint Crosso..

3. 간단한 용어 정리

몇가지 용어에 대해서 정리해 보도록 하겠습니다. 사실 GA 에서는 크게 2가지의 알고리즘으로 나뉘어 있고 흐름에 의한 알고리즘 자체의 차이가 있을뿐이지 용어에 대해서는 차이가 없습니다. 하지만 GA 를 구현한 프로그램들마다 용어자체에 약간의 차이를 두고 구현되어 있는 경우가 있습니다. 그에 대해서 한번 생각해 보기 위해 용어에 대해 정리해 보는 것입니다. 가장 하위계층의 개체부터 개체의 조합. 그리고 연산자까지 정리해보도록 하겠습니다. 먼저 하나의 개체는 일반적으로 다음과 같이 되어 있습니다. Chromosome - 유전자표현 Fitness - 적합도 OBJ(x) - 유전자표현을 10진수로 변환한것, 다른형태로 표현하기도 합니다. parent1 - parent2 - parent1과 2는 현재의 개체가 C..

2. GA(Genetic Algorithm)의 간단한 예제

오늘은 GA 의 간단한 예제에 대해서 올려봅니다. 우선 하나의 가정을 하죠. 다음과 같은 수식이 있고 그것의 범위를 다음과 같이 할당해 줍니다. 우리는 이 수식의 최대값을 알아내려고 하는 것입니다. y = x^2 - 2*x + 4 x = [ -10 , 10 ] 이렇다고 가정을 해보는 것입니다. 위 문제는 누구라도 간단하게 구할수 있는 문제이지만 그냥 하나의 예로서 들어본 것입니다. 그렇다면 GA 의 흐름에서 이 문제를 어떤 식으로 풀어나가는지 알아보도록 하죠. 우리는 GA 연산에서 쓰일 몇가지 구체적인 변수에 대해 설정을 해 줘야 합니다. 우선 GA 에서 초기화에 몇가지의 개체를 이용할 것인지 설정해 줘야 하고, 몇개의 비트로서 그 개체에 대해 표현을 할지도 결정을 해 줘야 합니다. 어느정도 확률로서 C..

1. GA의 간단한 순서

GA 는 하나의 알고리즘으로서 기본적으로 다음과 같은 순서로 동작합니다. (여기서 설명하는 것은 일반적인 알고리즘이고 변형된 알고리즘으로서 Steady-State 알고리즘이 있습니다.) 1. 초기화(Initialize) 유전자 개체를 초기화 합니다. 임의로 지정한 수치 만큼의 유전자를 생성해 내는 것입니다. 2. 평가(Evaluate) 위에 생성된 유전자 개체에 대해 평가를 합니다. 평가의 기준은 사용자가 만드는 것입니다. 생성된 유전자가 문제에 어느정도 적합한 유전자 인지 평가하는 것입니다. 3. 반복(Loop) 여기서 부터는 몇가지 반복작업이 계속 이루어 집니다. 반복이 멈추는 조건은 사용자가 지정한 최대 세대수[1]에 도달하거나 사용자가 지정한 최대조건에 도달 했을 경우 입니다. 멈추지 않을경우 밑..