Main Content

Simulink에서 Model-Reference Neural Controller 설계하기

신경 모델 참조 제어 아키텍처는 다음 그림에서 볼 수 있듯이 제어기 신경망과 플랜트 모델 신경망, 이렇게 2개의 신경망을 사용합니다. 플랜트 모델이 먼저 식별되고, 이후 플랜트 출력값이 참조 모델 출력값을 따르도록 제어기가 훈련됩니다.

Model reference diagram with input labeled "Command Input" and outputs labeled "Control Error" and "Plant Output"

다음 그림에는 Deep Learning Toolbox™에 구현된 신경망 플랜트 모델과 신경망 제어기가 자세히 나와 있습니다. 각 신경망에는 2개의 계층이 있으며, 은닉 계층에서 사용할 뉴런의 개수를 선택할 수 있습니다. 다음과 같이 3가지 세트의 제어기 입력값이 있습니다.

  • 지연된 기준 입력값

  • 지연된 제어기 출력값

  • 지연된 플랜트 출력값

각 입력값에 대해서 사용할 지연값의 개수를 선택할 수 있습니다. 일반적으로 지연값의 개수는 플랜트의 차수와 함께 늘어납니다. 신경망 플랜트 모델에는 다음과 같이 2가지 세트의 입력값이 있습니다.

  • 지연된 제어기 출력값

  • 지연된 플랜트 출력값

제어기에서와 마찬가지로 지연값의 개수를 설정할 수 있습니다. 다음 섹션에서는 파라미터를 설정하는 방법을 보여줍니다.

Model diagram with sections labeled "Neural Network Controller" and "Neural Network Plant Model". The model has input labeled "r(t)" and outputs labeled "e_c(t)" and "c(t)"

Model Reference Controller 블록 사용하기

이 섹션에서는 신경망 제어기가 훈련되는 방식을 보여줍니다. 첫 번째 단계는 Deep Learning Toolbox 블록셋에서 Simulink® 편집기로 Model Reference Controller 블록을 복사하는 것입니다. 이 작업을 수행하는 방법을 잘 모를 경우 Simulink 문서를 참조하십시오. 다음 예제에서는 이 단계를 건너뛰었습니다.

Deep Learning Toolbox에서 Model Reference Controller의 사용을 보여주는 예제 모델을 제공합니다. 이 예제의 목표는 다음 그림처럼 1개 링크를 가진 간단한 로봇 팔의 움직임을 제어하는 것입니다.

Diagram of robot arm with angle of angle from the vertical labeled with phi.

팔의 운동 방정식은 다음과 같습니다.

d2ϕdt2=10sinϕ2dϕdt+u

여기서 ϕ는 팔의 각도이고 u는 DC 모터의 토크입니다.

목표는 팔이 다음과 같은 참조 모델을 추종하도록 제어기를 훈련시키는 것입니다.

d2yrdt2=9yr6dyrdt+9r

여기서 yr은 참조 모델의 출력값이고 r은 입력 참조 신호입니다.

이 예제에서는 5-13-1 아키텍처를 갖는 신경망 제어기를 사용합니다. 제어기의 입력값은 2개의 지연된 기준 입력값, 2개의 지연된 플랜트 출력값, 1개의 지연된 제어기 입력값으로 구성됩니다. 0.05초의 샘플링 간격이 사용됩니다.

이 예제를 실행하려면 다음을 수행하십시오.

  1. MATLAB®을 시작합니다.

  2. MATLAB 명령 창에 mrefrobotarm을 입력합니다. 이 명령은 Model Reference Controller 블록이 이미 포함되어 있는 모델을 Simulink 편집기에서 엽니다.

    Screenshot of mrefrobotarm Simulink model

  3. Model Reference Controller 블록을 두 번 클릭합니다. 이렇게 하면 Model Reference Controller를 훈련시키기 위한 다음 창이 열립니다.

    Screenshot of Model Reference Control dialogue box

  4. 다음 단계는 Plant Identification을 클릭하여 Plant Identification 창을 여는 것입니다. 그런 다음 플랜트 모델을 훈련시키게 됩니다. Plant Identification 창은 이전 제어기에서 사용한 것과 동일하므로 여기서는 이 과정을 생략합니다.

  5. Generate Training Data를 클릭합니다. 프로그램이 제어기 훈련을 위한 데이터를 생성하기 시작합니다. 데이터가 생성되면 다음 창이 나타납니다.

    Screen shot of Plant Input-Output Data for NN Model Reference Control dialogue box

  6. Accept Data를 클릭합니다. Model Reference Control 창으로 돌아가서 Train Controller를 클릭합니다. 이 프로그램은 신경망에 데이터 세그먼트를 하나씩 입력하고 지정된 반복 횟수만큼 신경망을 훈련시킵니다(여기서는 5회임). 세그먼트를 한 번에 하나씩 입력하여 훈련 세트 전체가 신경망에 입력될 때까지 이 과정을 반복합니다. 제어기 훈련에는 플랜트 모델 훈련보다 훨씬 더 많은 시간이 소요될 수 있습니다. 제어기는 동적 역전파를 사용하여 훈련시켜야 하기 때문입니다([HaJe99] 참조). 훈련이 완료되면 다음 그림과 같이 결과 폐루프 시스템의 응답이 표시됩니다.

    Screen shot of Plant Input-Output Data for NN Model Reference Control dialogue box

  7. Model Reference Control 창으로 돌아갑니다. 제어기의 성능이 정확하지 않다면 Train Controller를 다시 선택하면 됩니다. 이렇게 하면 동일한 데이터 세트를 사용하여 제어기 훈련이 계속 진행됩니다. 새 데이터 세트를 사용하여 훈련을 계속 진행하려면 Train Controller를 선택하기 전에 Generate Data 또는 Import Data를 선택하십시오. (동일한 가중치를 사용하여 훈련을 계속 진행하려면 Use Current Weights가 선택되어 있는지 확인하십시오.) 플랜트 모델을 다시 훈련시켜야 할 수도 있습니다. 플랜트 모델이 정확하지 않으면 제어기 훈련에 영향을 줄 수 있습니다. 이 예제에서는 제어기가 충분히 정확하므로 OK를 선택합니다. 이렇게 하면 Simulink 모델로 제어기 가중치를 불러오게 됩니다.

  8. Simulink 편집기로 돌아가서 메뉴 옵션 Simulation > Run을 선택하여 시뮬레이션을 시작합니다. 시뮬레이션이 실행되면 다음 그림과 같이 플랜트 출력값과 기준 신호가 표시됩니다.

    2-D line plot with title "X Y Plot". The horizontal axis is labeled "X Axis". The vertical axis is labeled "Y Axis".