Main Content

Simulink에서 Neural Network Predictive Controller 설계하기

Deep Learning Toolbox™에 구현된 Neural Network Predictive Controller는 비선형 플랜트의 신경망 모델을 사용하여 미래의 플랜트 성능을 예측합니다. 제어기는 그런 다음 지정된 미래의 시간 지평에 대해 플랜트 성능을 최적화하는 제어 입력값을 계산합니다. 예측 제어를 모델링하는 첫 번째 단계는 신경망 플랜트 모델을 결정하는 것입니다(시스템 식별). 다음으로, 제어기가 플랜트 모델을 사용하여 미래의 성능을 예측합니다. (선형 시스템에 대한 다양한 모델 예측 제어 전략에 대해 더 자세히 알아보려면 Model Predictive Control Toolbox™ 문서를 참조하십시오.)

다음 섹션에서는 시스템 식별 과정에 대해 설명합니다. 그런 다음 최적화 과정에 대해 설명합니다. 마지막으로, Simulink® 환경에 구현된 모델 예측 제어기 블록을 사용하는 방법을 설명합니다.

시스템 식별

모델 예측 제어의 첫 번째 단계는 플랜트의 순방향 동적 요소를 표현하도록 신경망을 훈련시키는 것입니다. 플랜트 출력값과 신경망 출력값 사이의 예측 오차는 신경망 훈련 신호로 사용됩니다. 이 과정은 다음 그림으로 표현됩니다.

System identification diagram with input u and output y_p.

신경망 플랜트 모델은 이전의 직전 입력값과 직전 플랜트 출력값을 사용하여 플랜트 출력값의 미래의 값을 예측합니다. 신경망 플랜트 모델의 구조는 다음 그림과 같이 표현됩니다.

Two layer neural network diagram with inputs y_p(t) and u(t), and output y_m(t+1).

이 신경망은 플랜트 운영으로부터 수집된 데이터를 사용하여 오프라인에서 배치 모드로 훈련시킬 수 있습니다. 신경망 훈련에는 얕은 다층 신경망과 역전파 훈련에 제시된 모든 훈련 알고리즘을 사용할 수 있습니다. 이 과정은 이어지는 섹션에서 자세히 설명합니다.

예측 제어

모델 예측 제어 방법은 이동구간(receding horizon) 기법[SoHa96]을 기반으로 합니다. 신경망 모델은 지정된 시간 지평에 대해 플랜트 응답을 예측합니다. 예측값은 수치 최적화 프로그램이 지정된 지평에서 다음과 같은 성능 조건을 최소화하는 제어 신호를 파악할 때 사용됩니다.

J=j=N1N2(yr(t+j)ym(t+j))2+ρj=1Nu(u(t+j1)u(t+j2))2

여기서 N1, N2, Nu는 추적 오차와 제어 증분이 계산되는 지평을 정의합니다. u′ 변수는 잠정적 제어 신호이고 yr은 원하는 응답이고 ym은 신경망 모델 응답입니다. ρ 값은 제어 증분의 제곱합이 성능 지수에서 차지하는 비중을 결정합니다.

다음 블록 다이어그램은 모델 예측 제어 과정을 보여줍니다. 제어기는 신경망 플랜트 모델과 최적화 블록으로 구성됩니다. 최적화 블록은 J를 최소화하는 u′의 값을 결정하며, 그런 다음 최적의 u가 플랜트에 입력됩니다. 제어기 블록은 다음 섹션에서 설명하는 바와 같이 Simulink에 구현되어 있습니다.

Block diagram with inputs y_r and output y_p

Neural Network Predictive Controller 블록 사용하기

이 섹션에서는 NN Predictive Controller 블록이 사용되는 방식을 보여줍니다. 첫 번째 단계는 Deep Learning Toolbox 블록 라이브러리에서 Simulink 편집기로 NN Predictive Controller 블록을 복사하는 것입니다. 이 작업을 수행하는 방법을 잘 모를 경우 Simulink 문서를 참조하십시오. 다음 예제에서는 이 단계를 건너뛰었습니다.

Deep Learning Toolbox에서 예측 제어기의 사용을 보여주는 예제 모델을 제공합니다. 이 예제에서는 촉매성 연속 교반 탱크 반응기(CSTR)를 사용합니다. 이 과정의 도식은 다음 그림에 표시되어 있습니다.

Process diagram with w_1, C_b1, w_2, and C_b2, and outputs w_0 and C_b

시스템의 동적 모델은 다음과 같습니다.

dh(t)dt=w1(t)+w2(t)0.2h(t)dCb(t)dt=(Cb1Cb(t))w1(t)h(t)+(Cb2Cb(t))w2(t)h(t)k1Cb(t)(1+k2Cb(t))2

여기서 h(t)는 액체 수위이고 Cb(t)는 이 과정의 출력에서의 제품 농도이고 w1(t)는 농축된 공급 용액 Cb1의 유량이고, w2(t)는 희석된 공급 용액 Cb2의 유량입니다. 입력 농도는 Cb1 = 24.9와 Cb2 = 0.1로 설정되었습니다. 소모율과 관련 있는 상수 k1 = 1이고 k2 = 1입니다.

제어기의 목표는 흐름 w1(t)를 조정하여 제품 농도를 유지하는 것입니다. 예제를 단순화하기 위해 w2(t) = 0.1로 설정합니다. 이 실험에서는 탱크의 수위 h(t)는 제어되지 않습니다.

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

  1. MATLAB®을 시작합니다.

  2. MATLAB 명령 창에 predcstr을 입력합니다. 이 명령은 다음 모델과 함께 Simulink 편집기를 엽니다.

    Screenshot of predstr model in Simulink.

    Plant 블록에는 Simulink CSTR 플랜트 모델이 포함되어 있습니다. NN Predictive Controller 블록 신호는 다음과 같이 연결됩니다.

    • Control Signal은 Plant 모델의 입력에 연결됩니다.

    • Plant Output 신호는 Plant 블록 출력에 연결됩니다.

    • Reference는 Random Reference 신호에 연결됩니다.

  3. NN Predictive Controller 블록을 더블 클릭합니다. 이렇게 하면 모델 예측 제어기를 설계할 수 있는 다음 창이 열립니다. 이 창에서는 제어기 지평 N2와 Nu를 변경할 수 있습니다. (N1은 1로 고정되어 있습니다.) 앞에서 설명한 가중치 파라미터 ρ도 이 창에서 정의됩니다. 파라미터 α는 최적화를 제어하는 데 사용됩니다. 이 파라미터는 성공적인 최적화 단계를 위해 필요한 성능 감소분을 결정합니다. 최적화 알고리즘이 사용할 선형 최소화 루틴을 선택할 수 있고, 각 샘플 시간에 최적화 알고리즘을 몇 회 반복하여 수행할지 횟수를 정할 수 있습니다. 선형 최소화 루틴은 얕은 다층 신경망과 역전파 훈련에서 설명하는 루틴에서 약간 수정된 버전입니다.

    Screenshot of Neural Network Predictive Control dialogue box

  4. 플랜트 식별을 선택합니다. 이렇게 하면 다음 창이 열립니다. 제어기를 사용하기 전에 먼저 신경망 플랜트 모델을 만들어야 합니다. 플랜트 모델은 미래의 플랜트 출력값을 예측합니다. 최적화 알고리즘은 이러한 예측값을 사용하여 미래의 성능을 최적화하는 제어 입력값을 결정합니다. 플랜트 모델 신경망에는 앞에서 본 것처럼 하나의 은닉 계층이 있습니다. 이 창에서 은닉 계층의 크기, 지연 입력값과 지연 출력값의 개수, 훈련 함수를 선택합니다. 신경망 플랜트 모델을 훈련시킬 때는 얕은 다층 신경망과 역전파 훈련에서 설명하는 모든 훈련 함수를 사용할 수 있습니다.

    Screenshot of Plant Identification dialogue box

  5. Generate Training Data를 클릭합니다. 이 프로그램은 Simulink 플랜트 모델에 일련의 무작위 스텝 입력값을 적용하여 훈련 데이터를 생성합니다. 그런 다음 아래와 비슷한 그림에 잠정적 훈련 데이터가 표시됩니다.

    Screenshot of Plant Input-Output Data dialogue box

  6. Plant Identification 창에서 Accept Data를 클릭하고 Train Network를 클릭합니다. 플랜트 모델 훈련이 시작됩니다. 훈련은 선택한 훈련 알고리즘(여기서는 trainlm)에 따라 진행됩니다. 이것은 얕은 다층 신경망과 역전파 훈련에서 설명하는 바와 같이 배치 훈련의 간단한 응용입니다. 훈련이 완료되면 다음 그림과 같이 결과 플랜트 모델의 응답이 표시됩니다. (검증 데이터와 테스트 데이터가 존재하는 경우 각각에 대한 별도의 플롯도 표시됩니다.)

    Screenshot of Training Data for NN Predictive Control dialogue box

    이제 Train Network를 다시 선택하여 동일한 데이터 세트로 훈련을 계속할 수도 있고, Erase Generated Data를 선택하고 새로운 데이터 세트를 생성할 수도 있고, 현재 플랜트 모델을 수락하고 폐루프 시스템의 시뮬레이션을 시작할 수도 있습니다. 이 예제에서는 다음 단계에 나와 있는 것처럼 시뮬레이션을 시작합니다.

  7. Plant Identification 창에서 OK를 선택합니다. 이렇게 하면 NN Predictive Controller 블록으로 훈련된 신경망 플랜트 모델을 불러오게 됩니다.

  8. Neural Network Predictive Control 창에서 OK를 선택합니다. 이렇게 하면 NN Predictive Controller 블록으로 제어기 파라미터를 불러오게 됩니다.

  9. 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".