Giter VIP home page Giter VIP logo

isdc-2022-workshops's Introduction

ISDC 2022 Workshops

Support material for workshops #231 (2022-07-22T08:30+02:00) and #232 (2022-07-22T10:30+02:00) at the International System Dynamics Conference 2022 in Frankfurt, Germany.

Workshop #231: Introducing Object-Oriented Modeling Using Pre-Built Components

In this workshop, we want to introduce object-oriented modeling using pre-build components for System Dynamics. The participant will start by creating a simple System Dynamics model similar to building structures using LEGO blocks. They will learn to plot the variables from different components and quickly iterate over various designs by changing the model parameters. They will then document their plots(results) by adding plot markers, captions, and plot labels. Finally, they will learn to store the plot in the model for future reference.

Business Simulation Library developed by Guido Wolf Reichert will be used for this workshop. This free library supports modeling & simulation in the social sciences and ecology. It follows the widespread System Dynamics metaphor and modeling approach introduced by Jay W. Forrester. Unlike existing approaches, it makes use of Modelica's acausal connectors to better distinguish material/mass flows from instantaneous information signal flows (causal connections). The approach has the additional benefit of allowing the modeler to build rather compact models in a fast and reliable fashion.

The participants will then expand their simple model by adding pre-built components. This will make them appreciate the importance of using reusable components. They will learn to read the documentation of these pre-built components and understand how to use them. Finally, they will learn to document their own models.

Participants will use Wolfram System Modeler for this workshop. Wolfram System Modeler is an easy-to-use, next-generation modeling and simulation environment for cyber-physical systems. It is based on the Modelica language which is an open standard language. The participants will receive a 6-month trial so that they can create and test models at their leisure. Participants should bring a laptop.

Workshop Presentation

Workshop #232: Data Wrangling, Model Testing and Model Analysis for Object-Oriented Models in the Wolfram Language

This workshop is designed to follow the workshop on "Introduction to object-oriented hierarchical modeling using pre-built components". The participants will learn to do custom analysis on their models using the Wolfram Language.

The Wolfram Language is a general multi-paradigm programming language developed by Wolfram Research. It emphasizes symbolic computation, functional programming, and rule-based programming and can employ arbitrary structures and data.

The participants will start by plotting the results of their object-oriented models (which they would have created in the previous workshop) in the Wolfram Language. They will then create a simulation object that can be queried to obtain values of the variables for the entire simulation. These values can then be passed to the relevant Wolfram language functions for analysis such as optimization, calibration, control design and many more. The participant will also learn to simulate multiple scenarios in parallel and understand the parameter sensitivities.

This will be followed by a session where the participants will learn to create automated tests using the Wolfram Language to keep their models updated. They will follow a step-by-step process to set up the test infrastructure for their simple models and learn the best practices.

Finally, they will learn to create custom dashboards. They will learn how to create custom plots and document the model parameters with relevant descriptions. They will learn about different control objects that can be used to improve the user experience. Some common mistakes and tips-and-tricks will also be covered.

They will then deploy the dashboard in the free Wolfram cloud. Through this process, they learn how to collaborate with others and learn how to publish the dashboard on the web for public access. Participants should bring a laptop.

Workshop Notebook

License

Copyright © 2022 Guido Wolf Reichert Licensed under the European Union Public Licence (EUPL), Version 1.2 or later (the "License")

You may not use this work except in compliance with the License. You may obtain a copy of the License at:
https://eur-lex.europa.eu/eli/dec_impl/2017/863/oj

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either expressed or implied. See the License for the specific language governing permissions and limitations under the License.

Modelica© is a registered trademark of the Modelica Association.
Wolfram System Modeler™ is a trademark of Wolfram Research, Inc.
Wolfram Mathematica and Mathematica™ are registered trademarks of Wolfram Research, Inc.

Contribution

You may report bugs and other issues or simply make suggestions for future enhancements by using the Issues button.

Corresponding Author

ContactInformation.png

isdc-2022-workshops's People

Contributors

gwr69 avatar

Watchers

 avatar  avatar  avatar

Forkers

bslms dgsd-org

isdc-2022-workshops's Issues

What is the stacking toolbar for, if not for stacking?

I am trying to work around the connect limitation described in #2 by stacking icons atop of each other in Diagram view (one of them has a valid connection), then copy paste the connect equation with annotations in Text View to then have a graphically connected icon in Diagram View. TL;DR for this one needs to have the unconnected icon atop of the connected one. But somehow the stacking toolbar remains gray, i.e., none of the choices is clickable:

image

(This is Diagram View for PeopleExpress.BaseRun)

A bug?

Cannot connect to an expandable connector that is created using the context menu while drawing a connection

This relates to the state of the package as of commit e31fa8f840a65c98c94d47e34a3079eb1fccfad0. In ISDC2022_Workshops.Examples.PeopleExpress.PeopleExpress I am using the context menu (right click) while drawing a connection from fleet.io to create connector, e.g., to creat a central expandable connector on the model's scope.

Unfortunately, I cannot establish the connection from the originating conector fleet.io, as is shown in the capture below:

image

Also instantiating the class Interfaces.IO at the model scope to create a central connector does not work out and using the connect tool will not allow connecting either of fleet.io, staff.io or passengers.io to the central connector.

EDIT
The issue is by now an "old hat": #217

Why is there a warning when connecting predeclared variables in an expandable connector?

I just got this (rather ugly!) warning:

image

Upon validating Components.Fleet I get:

[8] 13:50 Validation of model ISDC2022_Workshops.Components.Fleet
Notification: BusinessSimulation.Interfaces.PartialStocks.BasicStock [11:3-11:3] Missing inner. Outer declaration modelSettings is missing a corresponding inner declaration. An inner declaration will be added using the outer declaration.
Warning: D:\git-local\modelica-business-simulation\BusinessSimulation\Interfaces\PartialStocks\BasicStock.mo [13:3-13:36] No corresponding 'inner' declaration found for component .BusinessSimulation.ModelSettings aircraft.modelSettings declared as 'outer '.
The existing 'inner' components are:
There are no 'inner' components defined in the model in any of the parent scopes of 'outer' component's scope: BusinessSimulation.Stocks.MaterialStock$aircraft.
Check if you have not misspelled the 'outer' component name.
Please declare an 'inner' component with the same name in the top scope.
Continuing flattening by only considering the 'outer' component declaration.
Validation of model ISDC2022_Workshops.Components.Fleet completed successfully.
The model has 16 variables and 15 equations.
Among these, 10 equations are trivial.

So what is the issue here?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.