Visible to the public HPWA Problem: DrivedrainConflict Detection Enabled

11 replies [Last post]
frehse
frehse's picture
Offline
Established Community Member
Joined: Nov 6 2013

This benchmark is taken from

M. Althoff and B. H. Krogh. Avoiding geometric intersection operations in reachability analysis of hybrid systems. In Hybrid Systems: Computation and Control, pages 45-54, 2012

The model files were taken from the attachments to

"Rigorous Simulation-Based Analysis of Linear Hybrid Systems", S. Bak, P. Duggirala, 23rd International Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS 2017)

available at http://stanleybak.com/.

There are two instances:

1) theta1_100percent refers to the initial states as given in the TACAS 2017 paper above.

2) theta1_5percent has the initial states with the same center, but shrunken in diameter to 5%.

SpaceEx is able to handle case (2), but not case (1).

AttachmentTaxonomyKindSize
drivetrain_sx.zipZIP archive18.28 KBDownloadPreview

drivetrain_sx.zip
AttachmentSize
bytes
stanleybak
stanleybak's picture
Offline
Established Community Member
Joined: Apr 29 2015
Other cases

Do we want to consider other cases, like (single-point), 1%, 10%, 50%?

Also, I think the FORMATS version we had the formal spec that the system passes through the deadzone completely without going back, so going from deadzone -> first mode is an error as well as last mode -> deadzone. Should we use this as the formal spec as well?

There's also a neat video of the reachability of this model made with Hylaa: https://www.youtube.com/watch?v=dxMN9szGIrk

stanleybak
stanleybak's picture
Offline
Established Community Member
Joined: Apr 29 2015
Hylaa Plot

Here's a plot using Hylaa that meet the above-mentioned spec and the script used to create it:

AttachmentTaxonomyKindSize
drivetrain_deag.py.txtPlain text document8.28 KBDownloadPreview
Preview: Text

drivetrain_deag.py.txt
althoff
althoff's picture
Offline
Established Community Member
Joined: Oct 23 2013
Versions of the drivetrain benchmark

Dear Stan,

I have prepared several versions of the drivetrain example in the report. Could you check the report and let us know if you like to make modifications?

-Matthias

stanleybak
stanleybak's picture
Offline
Established Community Member
Joined: Apr 29 2015
versions

It looks pretty good. I would suggest also adding versions with very small initial sets to try to get more tools to analyze the model. For example, we could remove the theta=12 case, and a version with an initial set that is 1% of the original one.

stanleybak
stanleybak's picture
Offline
Established Community Member
Joined: Apr 29 2015
automatically generating drivetrain model using Hyst

Hyst has a built-in model generator for this system. This means you can create the model internally and output to any tool supported by Hyst (Hylaa, SpaceEx, Flow*). The command line you want to use is:

java -jar Hyst.jar -gen drivetrain '-theta 22 -init_scale 0.3 -reverse_errors' -passes sub_constants '' simplify -p -o hylaa_output.py -tool hylaa ''

In this case, I generate the version with theta=22 and the initial set is 30% of the original one (this is case DTN06 from the overleaf report). The '-reverse_errors' flag will add error modes on reverse transitions that ensures the spec is met if the tool classifies the systems as safe. The two transformation passes "sub_constants" and "simplify" are needed to make the dynamics be simplified linear ones. Finally, in this case I was outputting to hylaa, so you can change that part to whatever output you want.

If you're even more ambitious, you can use hyst in combination with hypy to generate the models and automatically run the tool on them. Then you can do all 6 cases from one script. I attached what I used for hylaa.

AttachmentTaxonomyKindSize
run_all_hylaa.py.txtPlain text document1.69 KBDownloadPreview
Preview: Text

run_all_hylaa.py.txt
stanleybak
stanleybak's picture
Offline
Established Community Member
Joined: Apr 29 2015
spec

for the spec for this one, I would also want to add the condition that you can't go from z2 back to z1. Something like:

(z1 U z2 U z3) = G(z3)

frehse
frehse's picture
Offline
Established Community Member
Joined: Nov 6 2013
drivetrain generator

Hi Stan,

It's really great that you made the model generator. Thanks for the work! I tried to use your command line on the Hyst that's for download at http://verivital.com/hyst/hyst1.17.zip. It says that the options (gen...) are unknown. I also downloaded the latest version of Hyst from Github, but I wasn't able to compile it (I have zero skills with Java).

Any chance you could directly post the models for -- ahem, ahem -- SpaceEx?

Cheers,

Goran

stanleybak
stanleybak's picture
Offline
Established Community Member
Joined: Apr 29 2015
files

In the github repository in the src folder there is a compiled Hyst.jar that you can directly use in the future. You might need to go through the readme to setup some environment variables first for the pythonbridge part, though. Compiling is also not too hard, we use ant which is the equivalent of make for java (I think the readme has details).

The command for spaceex would be: java -jar Hyst.jar -gen drivetrain '-theta 22 -init_scale 0.3 -reverse_errors' -passes sub_constants '' simplify -p -o drivetrain_out.xml -tool spaceex ''

Anyways, I've attached the models as well.

AttachmentTaxonomyKindSize
drivetrain_spaceex.zipZIP archive12.7 KBDownloadPreview

drivetrain_spaceex.zip
xinchen
xinchen's picture
Offline
Established Community Member
Joined: Dec 7 2016
Dear all, Can we use a box

Dear all,

Can we use a box initial set? since the current API of Flow* does not support zonotope initial sets.

thanks,

Xin

althoff
althoff's picture
Offline
Established Community Member
Joined: Oct 23 2013
Initial set

Dear Xin,

the current initial set has been chosen by the following consideration: Based on the range of initial angular velocities, the other initial states are chosen as the steady state solution for an external load of 300 [Nm], resulting in the current initial set.

However, I am open to using a box initial set, but it has to be carefully chosen since this could cause many oscillations. Do you have a suggestion for a box initial set?

Is it ok for you if in at least one instance we keep the zonotopic initial set?

xinchen
xinchen's picture
Offline
Established Community Member
Joined: Dec 7 2016
Hi Matthias, Thanks! I just

Hi Matthias,

Thanks! I just added a new function in the Flow* API last weekend to handle zonotope initial set. It works very well now, I just need some time to find potential bugs.

thanks,

Xin

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.