operator01.jpg



안녕하세요? 교주 LGS입니다. ^^

이번 시간에는 Genetic Algorithm (GA: 유전자 알고리즘)으로 Model의 Parameter 들을 estimation 하는 방법에 대해서 설명드리겠습니다.

(본 강좌는 '흰돌'님의 질문에대한 답변이기도 합니다.)

생략된 부분은 VIP 게시판에서 확인할 수 있습니다.


우선 여러분들이 세우신 Model이 아래와 같이 State Space Form으로 나왔다고 합시다.


4x4 matrix.PNG  


실험을 통해 Oa+Or의 데이터를 획득했고 Cr+Ca+Oa+Or=1 이란 제약조건이 있습니다. 

α, β, g, h, α', β', g', h' 총 8개의 parameter를 모르는 상황에서 Initial condition(초기조건)과 측정된 Oa+Or 데이터만 보고

8개의 parameter의 값을 찾아내야하는 상황입니다. 

(Input은 없고 단지 초기조건만 주어졌습니다.)


측정된 Oa+Or 데이터는 아래와 같다고 합시다.


estimGA04.png  


실험 데이터는 교주가 임으로 정했습니다. ^^

estimGA03.png  


자~ 본격적으로 Parameter Estimation 해보도록 하죠~

첫번째로 할 일은 MATLAB  상에서 State Space Model을 생성하는 것입니다.


finallyMATLAB0102.png finallyMATLAB0104.png 


지금 우리의 경우는 Input u에 영행을 받지 않으므로 B와 D matrix을 영(0) 행렬로 만들어주시면 됩니다. ^^

State Space Model의 Initial Condition에 대한 반응을 보시려면 initial 함수를 사용하시면 되구요~

initial 함수의 입력변수는 아래와 같습니다.


estimGA05.png

Model에는 여러분들이 만드신 SS Model(또는 TF model)을 넘겨주시면 되고 

Initial Condition은 각 State variable의 초기값을 넣어주시면 되구요~ 

Time vector는 말 그대로 출력값으로 보시고자하는 시간들을 벡터로 넣어주시면 됩니다. ^^

Cr의 initial condition이 1이고 나머지 state variable의 초기값은 모두 0이라고 하면 최종적인 code는 아래와 같이 되겠죠? 


(중략)


다음으로 최소화하고자 하는 목적함수(Fitness Function)을 정해야 합니다.

Fitness Function을 어떻게 잡으면 좋을까요? 

[실험을 통해 측정한 data와 수학 모델로 부터 얻은 data의 차이]의 제곱의 합을 Fitness Function으로 하면 적당한가요? ^^


estimGA01.png 

 

그런데 지금 우리의 경우 Cr+Ca+Oa+Or=1 이란 제약조건이 있으므로 이 제약조건을 Fitness Function에 반영시켜줘야 합니다.

α, β, g, h, α', β', g', h' 8개의 parameter에 직접 constraints를 걸 수는 있어도 

output으로 나온 Cr,Ca,Oa,Or에 직접 constraints를 걸 수는 없어요 -_-;; 쿨럭

위와 같은 문제를 해결하기 위해 Penalty Function을 도입합니다.

즉  Cr+Ca+Oa+Or=1을 만족하지 못하면 Fitness 값에다가 큰 숫자를 더함으로써 Cr+Ca+Oa+Or=1을 만족하는 방향으로 

진화하게끔 유도하는 거죠~ 이해가셨나요? ^^

위에서 설명드린 것을 code로 작성하면 아래처럼 되구요


(중략)


마지막으로 GA를 적용하면 끝~ =(=^ㅅ^=)=

Genetic Algorithm을 사용하시려면 Global Optimization Tool GUI를 사용하셔도 되구요 아니면 code를 작성하셔도 됩니다.

code로 GA를 돌리신다면...

estimGA07.png


결과를 보시면 Estimation된 Parameter로 이루어진 SS Model이 실험 데이터를 매우 잘 표현하고 있음을 알 수 있습니다. =(=^ㅅ^=)=


estimGA08.png



오늘은 여기까지 입니다.

다음 시간에 뵈요~ 뿅!!


생략된 내용은 VIP 게시판에서 확인할 수 있습니다.

http://www.matlabinuse.com/index.php?mid=VIP_ONLY&page=1&document_srl=19424

profile