We validate a safety requirement in a model of a group of 5 planes for which their destinations are putting them in direct collision paths. To do this we use the new validation functionality in the Wolfram Language and a model that uses a collision resolution algorithm. We test a minimal distance threshold condition and introduce wind disturbances. By using white noise as a source of uncertainty for the wind we identify the success rate of the algorithm, we extract a failure configuration and pinpoint the pairs of planes that failed the requirement with ease.
Lets make use of the newly introduced validation functionality in a model of aircraft collision resolution. First we perform a general exploration of the model to see the general behavior of a few variables of interest, and later we explicitly tackle one requirement, introduce uncertainty, analyse the results and identify the root of the failure in the problematic configurations.
The validation functionality in the Wolfram Language allows us to verify system behaviors, such as safety, performance, physical requirements or design constraints. We now have a powerful temporal statement language and can easily introduce uncertainty in parameters, initial values and inputs to match statistical validation standards. We can query information on requirement validation failures, analyse it, and easily find potential causes and fixes to accelerate our modeling workflow. Lets see this in action.
Exploration
Exploration
Start with a simple model of aircraft collision resolution that uses a simple evasion algorithm:
In[]:=
acrModel=SystemModel["DocumentationExamples.Simulation.AircraftCollisionResolution"]
Out[]=
Simulate the model without wind disturbance and plot the trajectory of the five planes moving away from each other:
In[]:=
SystemModelPlot[acrModel]
Out[]=
Simulate the model with wind disturbance velocity in the y direction:
In[]:=
SystemModelPlot[acrModel,<|"Inputs"->{"d1"->Function[0],"d2"->Function[0.1]}|>]
Out[]=
See the animation:
In[]:=
SystemModeler[acrModel,"Animation"]
Validation
Validation
The distance between the planes must stay above the distance parameter p for each pair of planes
The distance between the planes must stay above the distance parameter p for each pair of planes
Validate the requirement “The distance between the planes must stay above the distance parameter p for each pair of planes”, using white noise to represent the uncertainty in the wind disturbance:
In[]:=
acrVals=SystemModelValidate[acrModel,SystemModelAlways[t,p<mind[t]],<|"Inputs"->{"d1"->WhiteNoiseProcess[0.1],"d2"->WhiteNoiseProcess[0.1]},"SimulationCount"->50|>]
Out[]=
SystemModelValidationData
Plot the failure plot for the stored failed configuration:
In[]:=
acrVals["FailurePlot",1]
Out[]=
Extract the inputs for the stored failed configuration:
In[]:=
windDist=acrVals["Configuration",1]
Out[]=
Inputsd1TemporalData,d2TemporalData
Plot the model with the failure inputs:
In[]:=
SystemModelPlot[acrModel,windDist]
Out[]=
Some planes happen to get too close:
In[]:=
failureDistances=Select[{d12,d13,d14,d15,d23,d24,d25,d34,d35,d45},!SystemModelValidate[acrModel,SystemModelAlways[t,p<#[t]],windDist,"ValidationSucceeded"]&]
Out[]=
{d12}
Plot the distance between the planes that got too close and the distance threshold:
In[]:=
SystemModelPlot[acrModel,Append[failureDistances,p],windDist]
Out[]=
Getting started
Getting started
◼
SystemModelValidate documentation page
Related talks
Related talks
◼
Wolfram Technology Conference 2024: Validating System Models
◼
Wolfram U Webinar 2024: Simulating High-G Jet Aerobatics with Aircraft Library 2.0
Download
Download
CITE THIS NOTEBOOK
CITE THIS NOTEBOOK
Validating safety in commercial aircraft trajectories with System Modeler and Wolfram language
by Sergio Vargas
Wolfram Community, STAFF PICKS, August 5, 2025
https://community.wolfram.com/groups/-/m/t/3524876
by Sergio Vargas
Wolfram Community, STAFF PICKS, August 5, 2025
https://community.wolfram.com/groups/-/m/t/3524876