Main Content

솔버 선택하기

동적 시스템을 시뮬레이션하려면 지정된 시간 범위에 연속된 시간 스텝에서의 시스템의 상태를 계산합니다. 이 계산에서는 시스템의 모델이 제공하는 정보를 사용합니다. 시간 스텝은 계산이 수행되는 시간의 간격입니다. 이러한 시간 간격의 크기를 스텝 크기라고 합니다. 이와 같은 방식으로 모델의 상태를 계산하는 과정을 모델을 푼다고 합니다. 모든 시스템에 적용 가능한 단 하나의 모델 풀이 방법은 존재하지 않습니다. Simulink®솔버라고 하는 일련의 프로그램을 제공합니다. 각 솔버마다 모델을 풀기 위한 구체적인 접근법이 구현되어 있습니다.

솔버는 수치 계산법을 적용하여 모델을 표현하는 일련의 상미분 방정식을 풉니다. 이 계산을 통해 솔버는 다음 시뮬레이션 스텝의 시간을 결정합니다. 또한 솔버는 이 초기값 문제를 풀면서 사용자가 지정한 정확도 요구 사항을 충족합니다.

수학자들은 동적 시스템의 연속 상태를 나타내는 상미분 방정식(ODE)을 풀기 위한 다양한 수치 적분법을 개발해 왔습니다. 고정 스텝 및 가변 스텝의 연속 솔버가 광범위하게 제공되고 있으며, 각 솔버마다 ODE 해를 구하는 구체적인 방법을 구현합니다(Compare Solvers 참조). 모델 구성 파라미터의 솔버 창에서 솔버를 선택합니다.

MATLAB®과 Simulink에서 제공하는 솔버는 모두 비슷한 명명 규칙을 따라서 ode 뒤에 솔버 차수를 나타내는 숫자가 2개 또는 3개 옵니다. 일부 솔버는 경직성 미분 방정식을 풀 수 있으며, 이러한 방정식에서 사용되는 방법은 s, t 또는 tb 접미사로 표현됩니다.

솔버 자동 선택

솔버최대 스텝 크기 파라미터를 자동으로 지정할 경우 소프트웨어는 알고리즘을 사용해 솔버 및 최대 스텝 크기 값을 선택합니다. 대부분의 모델에서 소프트웨어는 적절한 솔버 및 스텝 크기를 선택할 수 있습니다.

알고리즘은 몇 가지 발견법을 사용하여 모델 특성을 기반으로 솔버를 선택합니다. 다음 차트는 선택 알고리즘에 대한 몇 가지 발견법을 보여줍니다.

A table summarizes the solver selection heuristics based on the solver type, the types of states in the model, whether the system is represented using ordinary differential equations or differential algebraic equations, and the stiffness of the model.

모델에 이산 상태만 포함된 경우 소프트웨어는 지정된 솔버 유형에 대해 이산 솔버를 선택합니다.

  • 고정 스텝 솔버의 경우 소프트웨어는 이산 고정 스텝 솔버를 선택합니다.

  • 가변 스텝 솔버의 경우 소프트웨어는 이산 가변 스텝 솔버를 선택합니다.

모델에 연속 상태가 포함된 경우 솔버 선택은 솔버 유형과 모델의 수학적 표현에 따라 달라집니다.

  • ODE를 사용하여 표현할 수 있는 시스템에 대한 고정 스텝 솔버의 경우 소프트웨어는 ode3 솔버를 선택합니다.

  • 연립 미분대수 방정식(DAE)으로 표현할 수 있는 시스템의 모델에 대한 고정 스텝 솔버의 경우 소프트웨어는 ode14x 솔버를 선택합니다.

  • ODE를 사용하여 표현할 수 있는 시스템에 대한 가변 스텝 솔버의 경우 소프트웨어는 모델의 경직성을 기반으로 솔버를 선택합니다.

    • 경직성 모델의 경우 소프트웨어는 ode15s 솔버를 선택합니다.

    • 비경직성 모델의 경우 소프트웨어는 ode45 솔버를 선택합니다.

  • DAE를 사용하여 표현할 수 있는 시스템에 대한 가변 스텝 솔버의 경우 소프트웨어는 ode23t 솔버를 선택합니다.

연속 상태 개수가 NumStatesForStiffnessChecking 파라미터의 값보다 작으면 소프트웨어는 모델의 경직성을 계산합니다. 기본적으로 NumStatesForStiffnessChecking 파라미터 값은 1000입니다.

모델의 연속 상태 개수가 NumStatesForStiffnessChecking 파라미터의 값을 초과하면 소프트웨어는 경직성을 계산하지 않고 경직성 모델로 간주하여 ode15s 솔버를 선택합니다.

모델의 연속 상태 개수가 NumStatesForStiffnessChecking 파라미터 값보다 작으면 소프트웨어는 시스템 경직성을 계산하여 StiffnessThreshold 파라미터 값을 기반으로 솔버를 선택합니다.

  • 계산된 경직성이 StiffnessThreshold 파라미터의 값보다 작으면 소프트웨어는 비경직성 모델로 간주하고 ode45 솔버를 선택합니다.

  • 계산된 경직성이 StiffnessThreshold 파라미터의 값보다 크면 소프트웨어는 경직성 모델로 간주하고 ode15s 솔버를 선택합니다.

NumStatesForStiffnessCheckingStiffnessThreshold 파라미터의 디폴트 값은 1000입니다. set_param 함수를 사용하여 둘 중 한 파라미터에 다른 값을 지정할 수 있습니다.

Simscape™ Electrical™ 모델의 경우 소프트웨어는 솔버 ode23tb를 선택합니다. Simscape Electrical을 사용하여 모델링된 시스템은 경직성 솔버를 필요로 하는 비선형 회로 컴포넌트(예: 회로 차단기 및 전력전자 시스템)를 포함할 수 있습니다.

솔버 선택 기준

모델을 시뮬레이션하는 데 적절한 솔버는 아래 특성에 따라 다릅니다.

  • 시스템 동특성

  • 해 안정성

  • 계산 속도

  • 솔버 강인성

따라서 Simulink가 제공하는 수치적 솔버는 대략 두 가지 속성으로 분류할 수 있습니다.

계산 스텝 크기 유형

  • 고정 스텝 솔버는 이름에서 알 수 있듯이 시뮬레이션의 시작부터 끝까지 동일한 스텝 크기를 사용하여 모델의 해를 구합니다. 사용자가 스텝 크기를 지정하거나, 솔버가 스텝 크기를 선택하도록 할 수 있습니다. 일반적으로 스텝 크기를 줄이면 결과의 정확도가 향상되고 시스템을 시뮬레이션하는 데 필요한 시간이 늘어납니다.

  • 가변 스텝 솔버는 시뮬레이션하는 도중 스텝 크기를 변화시킵니다. 이러한 솔버는 모델을 시뮬레이션하는 도중 특정 이벤트가 발생했을 때, 예를 들어 상태가 빠르게 변화하거나 영점교차가 발생했을 때 정확도를 높이기 위해 스텝 크기를 줄입니다. 또한, 모델의 상태가 느리게 변할 때는 불필요하게 스텝을 취하는 것을 피하기 위해 스텝 크기를 늘리기도 합니다. 스텝 크기를 계산하면 각 스텝마다 계산 오버헤드가 더 발생합니다. 하지만 총 스텝 수를 줄일 수 있기 때문에 영점교차가 발생하거나 빠르게 변하는 상태를 갖는 모델이나 추가적인 계산을 필요로 하는 이벤트가 발생하는 모델의 경우 정해진 수준의 정확도를 유지하기 위해 필요한 시뮬레이션 시간을 줄일 수 있습니다.

모델 상태

  • 연속 솔버는 수치 적분을 사용하여 이전 시간 스텝에서의 상태와 상태 도함수를 기반으로 모델의 현재 시간 스텝에서의 연속 상태를 계산합니다. 연속 솔버는 개별 블록에 기반하여 각 시간 스텝에서 모델의 이산 상태 값을 계산합니다.

  • 이산 솔버는 순수 이산 모델의 해를 구하는 데 주로 사용됩니다. 이러한 솔버는 모델의 다음 시뮬레이션 시간 스텝만 계산합니다. 계산을 수행할 때 모델의 각 블록에 기반하여 개별 이산 상태를 업데이트합니다. 연속 상태는 계산하지 않습니다.

반복법을 사용하여 본인의 요구 사항에 맞는 솔버를 선택하십시오. 여러 솔버의 시뮬레이션 결과를 비교해 보고 상충을 최소화하면서 최고의 성능을 제공하는 솔버를 선택하십시오.

다음과 같은 방법으로 모델에 맞는 솔버를 선택합니다.

  • 자동 솔버를 사용합니다. 새 모델에는 기본적으로 솔버 선택이 자동 솔버로 설정되어 있습니다. 자동 솔버는 사용자 모델에 맞는 고정 스텝 또는 가변 스텝 솔버와 최대 스텝 크기를 권장합니다.

  • 자동 솔버를 사용한 시뮬레이션 결과에 만족하지 않는 경우 모델 구성 파라미터의 솔버 창에서 솔버를 선택합니다.

모델을 빌드하고 시뮬레이션할 때 모델의 동특성에 따라 솔버를 선택할 수 있습니다. 가변 스텝 솔버는 순수 연속 모델(예: 질량-스프링-댐퍼 시스템의 동특성)에 더 적합합니다. 고정 스텝 솔버는 인버터 전력 시스템처럼 스위치가 여러 개인 모델에 권장되는데, 그 이유는 솔버 재설정이 다수 발생하여 가변 스텝 솔버가 고정 스텝 솔버처럼 동작하기 때문입니다.

참고

모델을 생성 코드로 배포할 때는 고정 스텝 솔버만 사용할 수 있습니다. 시뮬레이션을 진행하는 동안 사용자가 가변 스텝 솔버를 선택한다면 이 솔버를 사용하여 배포 시 사용해야 하는 고정 스텝 솔버에서 필요로 하는 스텝 크기를 계산하면 됩니다.

이 차트는 Simulink 라이브러리의 솔버를 크게 분류한 것입니다.

선택된 솔버를 모델에 맞게 조정하려면 Check and Improve Simulation Accuracy 항목을 참조하십시오.

이상적인 경우라면 선택된 솔버는 다음을 수행해야 합니다.

  • 모델의 해를 성공적으로 구합니다.

  • 가변 스텝 솔버의 경우 사용자가 지정한 허용오차 제한 내에서 해를 제공합니다.

  • 적절한 시간 내에 모델의 해를 구합니다.

하나의 솔버로는 이들 목표를 전부 충족하지 못할 수도 있습니다. 솔버를 선택하기 전에 여러 솔버를 사용하여 시뮬레이션해 보십시오.

Simulink 라이브러리는 여러 솔버를 제공하며 이러한 솔버는 모두 대수 루프 솔버와 함께 사용할 수 있습니다. 자세한 내용은 대수 루프 솔버의 작동 방식 항목을 참조하십시오.

모델 구성 파라미터의 솔버 창에서 Simulink 솔버 라이브러리는 두 가지 주요 유형으로 나뉩니다. Fixed-Step Versus Variable-Step Solvers 항목을 참조하십시오.

솔버를 비교하는 다른 방법은 다음을 참조하십시오.

관련 항목