MBSE and AI – A Conversation with the Black Box

MBSE and AI – A Conversation with the Black Box

MBSE and AI - Engineer talks with the AI

Read the blog or watch the video at the end (or both :-)!

I remember an inspiring exchange with a visionary about 20 years ago. He told me that he would like to have a black box that would simply implement his ideas for him. Instead of focusing on the actual engineering, you spend most of your time trying to find the right button in the tool, remembering the correct SysML relationship, finding the correct requirements template, and so on. This has nothing to do with the actual engineering. We thought it was great at the time but had rather put it in the Star Trek category.

And today, this vision has become very tangible. Here is a small example of what is really easy already today. I had a conversation with the Bing AI chatbot. The following reproduces the conversation unchanged. It is impressive what is already possible, especially considering that there was no special training of the AI regarding MBSE, SysML, or drone development here.


Tim: Explain the following SysML v2 model.

requirement enginePowerConsumption { 
  subject drone : Drone; 
  require constraint { 
   drone.battery.powerSupply >= 
     NumericalFunctions::sum(drone.engines.powerConsumption) 
  } 
} 
part def Drone { 
  part battery : Battery; 
  part engines[4] : Engine; 
  part engine1 :> engines; 
  part engine2 :> engines; 
  part engine3 :> engines; 
  part engine4 :> engines; 
} 
part def Battery { 
  attribute powerSupply : ScalarValues::Integer; 
} 
part def Engine { 
  attribute powerConsumption : ScalarValues::Integer; 
} 
part drone : Drone { 
  :>> battery.powerSupply := 42; 
  :>> engine1.powerConsumption := 10; 
  :>> engine2.powerConsumption := 10; 
  :>> engine3.powerConsumption := 10; 
  :>> engine4.powerConsumption := 10; 
} 
satisfy enginePowerConsumption by drone

Bing: The model you provided defines a requirement named enginePowerConsumption that applies to a subject named drone of type Drone. The requirement states that the power supply of the drone’s battery must be greater than or equal to the sum of the power consumption of the drone’s engines. The model also defines a part definition for Drone, which has four parts of type Engine and one part of type Battery. Each part has an attribute that represents its power supply or power consumption. The model also defines a part usage for drone, which assigns specific values to the attributes of its parts. Finally, the model states that the requirement enginePowerConsumption is satisfied by the part usage drone.

I hope this helps you understand the SysML v2 model. Do you have any follow-up questions?


Tim: Is the satisfy relationship correct?


Bing: The satisfy relationship in SysML v2 describes how a design or implementation model concept satisfies one or more requirements. It shows that the system elements that are linked by the satisfy relationship meet the criteria defined by the requirements. In your model, the satisfy relationship is correct if the part usage drone meets the criteria defined by the requirement enginePowerConsumption. You can verify this by checking if the values assigned to the attributes of drone and its parts are consistent with the constraint in the requirement. In this case, they are, since 42 >= 10 + 10 + 10 + 10. Therefore, the satisfy relationship is correct. Does this answer your question?


Tim: Update the model with a more powerful engine which requires 12 units of power.


To update the model with a more powerful engine that requires 12 units of power, you can modify the part definition for Engine and change the value of its attribute powerConsumption from 10 to 12. Alternatively, you can create a new part definition for a more powerful engine, such as EnginePlus, and assign a different value to its attribute powerConsumption. Then, you can use this new part definition in the part usage for drone. Here is an example of how the updated model could look like:

part def EnginePlus { 
  attribute powerConsumption : ScalarValues::Integer; 
}
part drone : Drone { 
  :>> battery.powerSupply := 42; 
  :>> engine1.powerConsumption := 12; 
  :>> engine2.powerConsumption := 12; 
  :>> engine3.powerConsumption := 12; 
  :>> engine4.powerConsumption := 12; 
}
satisfy enginePowerConsumption by drone;

Note that this updated model does not satisfy the requirement enginePowerConsumption, since 42 < 12 + 12 + 12 + 12. You would need to increase the power supply of the battery or decrease the number of engines to satisfy the requirement. I hope this helps you update the model. Do you have any feedback?


 

Leave a Reply

Your email address will not be published. Required fields are marked *