Main Content

parsim

동적 시스템의 다중 시뮬레이션을 병렬 또는 직렬로 실행

설명

예제

simOut = parsim(in)SimulationInput 객체 in에 지정된 입력을 사용하여 모델을 시뮬레이션합니다. parsim 명령은 SimulationInput 객체로 구성된 배열을 사용하여 다중 시뮬레이션을 실행합니다.

simOut = parsim(in,'ShowSimulationManager','on')SimulationInput 객체에 지정된 입력을 사용하여 병렬로 모델을 시뮬레이션하고 시뮬레이션 관리자 UI를 엽니다. 자세한 내용은 Simulation Manager 항목을 참조하십시오.

simOut = parsim(in,Name,Value)SimulationInput 객체에 지정된 입력과 Name,Value 쌍으로 지정된 옵션을 사용하여 병렬로 모델을 시뮬레이션합니다.

parsim 명령은 Parallel Computing Toolbox™ 라이선스를 사용하여 병렬로 시뮬레이션을 실행합니다. 병렬 풀을 만들 수 없거나 Parallel Computing Toolbox를 사용하지 않는 경우에는 parsim은 직렬로 시뮬레이션을 실행합니다.

예제

모두 축소

고속 액셀러레이터 모드로 vdp 모델을 시뮬레이션합니다.

모델을 불러옵니다.

model = 'vdp';
load_system(model)

다음 단계는 고속 액셀러레이터 타깃을 빌드합니다.

Simulink.BlockDiagram.buildRapidAcceleratorTarget(model);

SimulationInput 객체를 만들고 setModelParameter 메서드를 사용하여 RapidAcceleratorUpToDateCheck'off'로 설정합니다.

in = Simulink.SimulationInput(model);
in = in.setModelParameter('SimulationMode', 'rapid-accelerator');
in = in.setModelParameter('RapidAcceleratorUpToDateCheck', 'off');
 

모델을 시뮬레이션합니다.

out = parsim(in)

변수를 스윕하여 병렬로 CSTR 모델을 시뮬레이션합니다. SimulationInput 객체의 배열을 사용하여 스윕을 수행합니다.

스윕 값을 지정합니다.

FeedTempSweep = 250:10:300;

SimulationInput 객체로 구성된 배열을 만듭니다.

for i = length(FeedTempSweep):-1:1
in(i) = Simulink.SimulationInput('CSTR');
in(i) = in(i).setVariable('FeedTemp0',FeedTempSweep(i));
end

병렬로 모델을 시뮬레이션합니다.

out = parsim(in, 'ShowSimulationManager', 'on')
[29-Jun-2022 15:05:52] Checking for availability of parallel pool...
Starting parallel pool (parpool) using the 'Processes' profile ...
Connected to the parallel pool (number of workers: 6).
[29-Jun-2022 15:07:01] Starting Simulink on parallel workers...
[29-Jun-2022 15:07:34] Configuring simulation cache folder on parallel workers...
[29-Jun-2022 15:07:35] Loading model on parallel workers...
[29-Jun-2022 15:07:49] Running simulations...
[29-Jun-2022 15:08:24] Completed 1 of 6 simulation runs
[29-Jun-2022 15:08:24] Completed 2 of 6 simulation runs
[29-Jun-2022 15:08:24] Completed 3 of 6 simulation runs
[29-Jun-2022 15:08:27] Completed 4 of 6 simulation runs
[29-Jun-2022 15:08:28] Completed 5 of 6 simulation runs
[29-Jun-2022 15:08:28] Completed 6 of 6 simulation runs
[29-Jun-2022 15:08:28] Cleaning up parallel workers...

out = 

1x6 Simulink.SimulationOutput array


입력 인수

모두 축소

Simulink.SimulationInput 객체 또는 Simulink.SimulationInput 객체로 구성된 배열로, 시뮬레이션할 모델에 변경 사항을 지정하는 데 사용됩니다.

예: in = Simulink.SimulationInput('vdp')

예: for i = 10:-1:1 in(i) = Simulink.SimulationInput('vdp'); end

이름-값 인수

예: 'ShowProgress', 'on'

참고

parsim 명령에 전달되는 모든 파라미터는 sim 명령과 함께 사용되는 파라미터와 관련이 없습니다. parsim 명령에 전달하려면 다음 목록의 입력 인수를 사용하십시오.

쉼표로 구분된 선택적 Name,Value 인수 쌍을 지정하십시오. Name은 인수 이름이고 Value는 해당 값입니다. NameValue는 작은따옴표(' ') 안에 있어야 합니다. Name1,Value1,...,NameN,ValueN과 같은 순서로 여러 개의 이름과 값 쌍 인수를 지정할 수 있습니다.

병렬 풀에 연결하는 추가 파일로, 셀형 배열로 지정됩니다. parsim은 하위 디렉터리에 있는 MAT 파일에 대한 참조를 생성하는 From File 블록에서 데이터를 불러오는 것을 지원하지 않습니다.

명령 창에서 시뮬레이션 진행률을 보려면 'on'으로 설정하십시오. 'off'로 설정된 경우 진행률을 표시하지 않습니다.

참고

진행률을 표시하는 경우 마지막 몇 개의 시뮬레이션이 완료되기 직전에 'Cleaning up parallel workers..' 메시지가 표시될 수 있습니다. 이 메시지는 시뮬레이션의 완료 여부를 기준으로 하지 않습니다. 시뮬레이션은 future에서 출력을 가져올 때 완료됩니다. 자세한 내용은 Simulink.Simulation.Future 항목을 참조하십시오.

'on'으로 설정하면 시뮬레이션을 비동기식으로 실행하면서 MATLAB® 명령 프롬프트가 사용할 수 있는 상태로 유지됩니다. 백그라운드에서 실행되는 시뮬레이션을 종료하려면 Simulink.Simulation.Future 객체에서 cancel 메서드를 사용하십시오.

시뮬레이션을 시작하기 전에 워커마다 한 번씩 실행하도록 하려면 function handle'SetupFcn'으로 지정하십시오.

예: 'SetupFcn',@()openProject('Modelex/Model_example.prj')

참고

SetupFcn에서 buildRapidAcceleratorTarget을 사용하고 모델에 외부 입력이 지정되어 있다면 'LoadExternalInput''off'로 설정하거나 지정된 외부 입력을 워커에서 사용 가능하게 해서 컴파일 오류를 방지하십시오.

시뮬레이션이 완료된 후에 워커마다 한 번씩 실행하도록 하려면 function handle'CleanupFcn'으로 지정하십시오.

ManageDependencieson으로 설정하면 필요한 경우 모델 종속성이 병렬 워커로 자동 전송됩니다. ManageDependenciesoff로 설정하면 모델 종속성이 병렬 풀에 명시적으로 연결됩니다.

UseFastRestarton으로 설정하면 시뮬레이션은 빠른 재시작을 사용하여 워커에서 실행됩니다.

Simscape™ 컴포넌트의 속성을 바꾸는 파라미터 스윕을 수행하는 경우(예: Simscape Multibody에 있는 Solid 블록의 질량 및 관성) Simscape 블록 파라미터를 런타임에 구성 가능하도록 지정하십시오. 자세한 내용은 About Simscape Run-Time Parameters (Simscape) 항목을 참조하십시오.

참고

parsim을 사용할 때는 FastRestart 옵션이 아니라 UseFastRestart 옵션을 사용하십시오. 자세한 내용은 Get Started with Fast Restart 항목을 참조하십시오.

빠른 재시작 모드의 parsimToFile 블록을 사용하는 모델을 지원하지 않습니다.

TransferBaseWorkspaceVariableson으로 설정하면 모델에서 사용하는 변수와 기본 작업 공간에 정의된 모든 항목은 병렬 워커로 전달됩니다.

대규모 시뮬레이션에는 TransferBaseWorkspaceVariables 옵션이 권장되지 않습니다. 불필요한 기본 작업 공간 데이터를 전송하면 네트워크와 메모리 사용량이 낭비됩니다. 대신 프로젝트 시작 스크립트, 모델 콜백 함수 또는 SetupFcn 옵션을 사용하여 기본 작업 공간 데이터를 정의해 보십시오.

'ShowSimulationManager''on'으로 설정하면 시뮬레이션 관리자 앱을 사용하여 시뮬레이션을 모니터링할 수 있습니다.

'StopOnError''on'으로 설정할 경우 오류가 발생하면 시뮬레이션 실행이 중지됩니다.

출력 인수

모두 축소

Simulink.SimulationOutput 객체로 구성된 배열로, 모든 기록된 시뮬레이션 결과를 포함합니다. 배열의 크기는 Simulink.SimulationInput 객체로 구성된 배열의 크기와 같습니다.

모든 시뮬레이션 출력(기록된 시간, 상태 및 신호)은 단일 Simulink.SimulationOutput 객체로 반환됩니다. 모델 구성 파라미터 대화 상자의 데이터 가져오기/내보내기 창을 사용하여 기록할 모델 시간, 상태, 출력을 정의합니다. To Workspace, Scope 같은 블록을 사용하여 신호를 기록할 수 있습니다. 신호 및 스코프 관리자는 신호를 직접 기록할 수 있습니다.

확장 기능

버전 내역

R2017a에 개발됨