Main Content

parsim

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

설명

예제

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

simOut = parsim(in,Name=Value)SimulationInput 객체에 지정된 입력과 하나 이상의 이름-값 인수를 사용하여 지정된 옵션을 사용하여 병렬로 모델을 시뮬레이션합니다.

parsim 함수에서 시뮬레이션을 병렬로 실행하려면 Parallel Computing Toolbox™ 라이선스가 필요합니다. parsim 함수는 병렬 풀을 만들 수 없거나 Parallel Computing Toolbox가 사용되지 않는 경우 시뮬레이션을 직렬로 실행합니다.

예제

모두 축소

고속 액셀러레이터 모드에서 모델 vdp를 시뮬레이션합니다.

모델을 불러옵니다.

openExample('simulink_general/VanDerPolOscillatorExample')
mdl = "vdp";
load_system(mdl)

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

Simulink.BlockDiagram.buildRapidAcceleratorTarget(mdl);

SimulationInput 객체를 만들고 setModelParameter 함수를 사용하여 RapidAcceleratorUpToDateCheck"off"로 설정합니다.

in = Simulink.SimulationInput(mdl);
in = setModelParameter(in,SimulationMode="rapid-accelerator");
in = setModelParameter(in,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 객체로 구성된 배열로 지정됩니다.

이름-값 인수

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name을 따옴표로 묶으십시오.

예: ShowProgress="on"

병렬 풀에 연결할 추가 파일로, 문자형 벡터로 구성된 셀형 배열로 지정됩니다. parsim 함수는 From File 블록을 사용하여 하위 디렉터리 내 MAT 파일 데이터를 불러오는 것을 지원하지 않습니다.

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

참고

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

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

'RunInBackground' 인수를 "on"으로 지정하면 parsim 함수는 Simulink.Simulation.Future 객체를 반환합니다. SimulationOutput 객체에 액세스하려면 Simulink.Simulation.Future 객체를 사용하십시오.

시뮬레이션 시작 전 워커마다 한 번씩 실행되는 함수로, 함수 핸들로 지정됩니다.

예: SetupFcn=@()openProject("Modelex/Model_example.prj")

참고

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

시뮬레이션 실행 후 워커마다 한 번씩 실행되는 함수로, 함수 핸들로 지정됩니다.

모델 종속성을 관리하는 옵션으로, "on" 또는 "off"로 지정됩니다. ManageDependencies"on"으로 설정하면 필요한 경우 모델 종속성이 병렬 워커로 자동 전송됩니다. ManageDependencies"off"로 설정하면 모델 종속성이 병렬 풀에 명시적으로 연결됩니다.

빠른 재시작을 사용하는 옵션으로, "off" 또는 "on"으로 지정됩니다. UseFastRestart"on"으로 설정하면 시뮬레이션은 빠른 재시작을 사용하여 워커에서 실행됩니다.

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

참고

parsim 함수는 To File 블록이 포함된 모델의 빠른 재시작을 지원하지 않습니다.

병렬 워커에 변수를 전달하는 옵션으로, "off" 또는 "on"으로 지정됩니다. TransferBaseWorkspaceVariables"on"으로 설정하면 모델에서 사용하는 변수와 기본 작업 공간에 정의된 모든 항목이 병렬 워커로 전달됩니다.

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

시뮬레이션 관리자를 여는 옵션으로, "off" 또는 "on"으로 지정됩니다. ShowSimulationManager"on"으로 설정하면 시뮬레이션 관리자를 사용하여 시뮬레이션을 모니터링할 수 있습니다.

시뮬레이션 오류 발생 시 남은 시뮬레이션을 건너뛰는 옵션으로, "off" 또는 "on"으로 지정됩니다. StopOnError"on"으로 설정할 경우 시뮬레이션 오류가 발생하면 시뮬레이션 실행이 중지됩니다.

출력 인수

모두 축소

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

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

확장 기능

버전 내역

R2017a에 개발됨