Web Sim Building Tools

2010 Webinar Videos


We recorded four of the webinars we held in 2010 and invite you to watch them for free by clicking on the links below.

Using SD Models to Create Online Simulations

http://forio.com/sd_webinar_09_2010.htm

With Simulate™, Forio’s online simulation development environment, you can put your SD models online, create beautiful intuitive, easy to use interfaces with a drag-and-drop designer, save and compare runs, and control user access.

In this 50-minute hands-on session we discuss how to:

- import Vensim, iThink and other SD models

- design interfaces in minutes

- let users easily save and compare runs

- set user access privileges

- embed sims on other web pages

Creating Multi-player Simulations

http://forio.com/sd_webinar_10_14_2010.htm

With Simulate™, Forio’s web-based simulation development environment, you can rapidly create multi-player simulations. Drag-and-drop design tools and support of models from Excel and System Dynamics packages make authoring sims easy.

In this 50-minute hands-on session we discuss how to:

- design interfaces for multiple roles

- use Excel to define game and player logic

- assign users to roles and teams

- use advanced facilitator and player features

Marketing Simulation Showcase

http://forio.com/2010_webinar_marketing.htm

Michael Bean presents our latest simulations for boosting student engagement and learning in Marketing. These simulations have been co-developed with faculty from Harvard Business School, Kellogg School of Management, University of Michigan, and other leading business schools.

In this 50-minute webinar, we will review four of our most popular marketing simulations:

SoftStrat: The Software Platform Migration Game

by Prof. Mohan Sahwney, Kellog School of Management

Covers technology migration, cannibalization, budgeting

Managing Channels and Segments for Profitability

by Prof. Das Narayandas, Harvard Business School

Covers sales force, channels, segmentation, competition, and positioning

The Big Picture Marketing Management Simulation

by Prof. Christie Nordheilm, University of Michigan

Covers customer retention, customer acquisition, segmentation, targeting, and positioning

Universal Rental Car Pricing

by Tom Nagle, The Monitor Company

Covers pricing, capacity management, demand elasticity, product and service differentiation

How to Build Educational Business Games

http://forio.com/webinar_2010_education.htm

Expert simulation developer Billy Schoenberg hosts a 50-minute webinar using Simulate™, our web-based development environment to create simulations using the drag-and-drop design tools.

Topics covered include how to:

- provide faculty summaries of class results for easy review or grading

- add faculty control over class scenarios so that the simulation can be used many times

- create both student and faculty login pages with different views of the simulation

- create multi-choice, short answer, and long answer surveys or quizzes within the simulation

- include facilitator guides, student guides, and videos into the simulation



Six Point Checklist: Making a User Friendly Login Page


An important feature of Forio Broadcast Professional is the ability to restrict access to registered users. Broadcast contains a number of features to make the login process smooth and your application appear professional.

Here’s a quick checklist to use when you create a new simulation.

1. Set up a simple but attractive login page. You can read how to do this in our online manual. I suggest your page be laid out cleanly, with a simple logo, and a minimum of text. Make it easy for your users to see where to log in.

2. In the login page, remember the user’s user name with the following syntax:

<INPUT TYPE=”text” NAME=”FD_loginid” value=”$!RecentUser.LoginId”/>

The FML reference $RecentUser contains information about the last user to log in from the same computer.

3. Automatically set the user focus on the login field (or if the user name is filled in, the password field). This subtle behavior allows the user to enter their password, hit enter and quickly log in. You can use the following code:

<script type=”text/javascript”>
#if($RecentUser)
document.loginform.FD_password.focus();
#else
document.loginform.FD_loginid.focus();
#end
</script>

4. Related to the above point, confirm that hitting enter will log you in. Normally pressing enter will act the same as clicking the “login” button, but this might change if you have a second button (instead of a link) for “Forgot Your Password?”. (see below).

5. Provide a link “Forgot Your Password?”, allowing your users to enter their username or email address to retrieve their password. Among other benefits, this will reduce the amount of time you spend responding to email from forgetful users.

6. Provide a link for users to edit their user profile, most importantly allowing them to change their password. Again, providing a means for users to control their account will reduce your email support burden.

You can see all of these features in our recently released Service Quality Management Simulation



Reporting Totals in a Simulation


I promised to explain some of the new features in Broadcast in a series of articles. My favorite new feature in Forio Broadcast solves a real problem, is simple to apply, and I’ve started using it everywhere. In a nutshell, you can now easily calculate totals in the user interface. If you’ve struggled with this as much as I have you’ll probably be jumping for joy. For the other 90% of you… Feel free to instead browse this fascinating article on historic video games being designated as cultural artifacts.

One of the strengths of the Forio Broadcast approach to simulation design is the strict separation between model and interface. We’ve worked hard to keep these two parts apart. Conceptually, they contain two different types of content and are often built by different people. The simulation model contains the mathematical logic driving the simulation. It is written using Forio’s equation language or imported from third party modeling software. The simulation interface describes the look and the feel of the simulation. It is built with HTML/Flash files that include Forio Macro Language (FML) statements.

Last year we noticed that arrayed simulation models were containing a number of equations that used solely for reporting. Specifically, to view totals for a highly arrayed simulation variable the modeler needs to include a variable for each possible total.

V Sales[Competitors, Regions, Products] = (some equation)

V Total Sales[Competitors] =
FOREACH(c, Competitors, ARRAYSUM(Sales[c, *, *]))

V Sales by Regions[Competitors, Regions] =
FOREACH(c, Competitors, FOREACH(r, Regions, ARRAYSUM(Sales[c, r, *])))

V Sales by Products[Competitors, Products] =
FOREACH(c, Competitors, FOREACH(p, Products, ARRAYSUM(Sales[c, *, p])))

V Industry Sales = ARRAYSUM(Sales)

And this is even worse if you want to compute market share by a particular segment.

V Market Share by Product[Competitors, Products] =
FOREACH(c, Competitors, FOREACH(p, Products, ARRAYSUM(Sales[c, *, p]/ARRAYSUM(Sales[*, *, p])))

A model in which each variable has 3 or 4 subscripts can easily have hundreds of unnecessary equations cluttering up the model and making it difficult to see the true cause and effect.

Our solution is simple. We’ve added new syntax to FML that provides an easy way to display the total for a variable. Simply use the standard FML to show a model result, but insert an asterisk (*) in place of one or more array elements.

North American Basketball Sales:
$Values.get(“Sales[1, North America, Basketball]“)

Total North American Sales:
$Values.get(“Sales[1, North America, *]“)

Total Sales:
$Values.get(“Sales[1, *, *]“)

will display something similar to:

North American Basketball Sales: $587,101

Total North American Sales: $1,100,233

Total Sales: $3,662,211

All the standard properties of the $Value reference apply. You can build a table of data over time with the getResultFormatted() method. Or use the Result method to access the unformatted number for use in conditional logic:

#if ($Values.get(“Sales[1, North America, *]“).Result > 1000000)
Your North American sales are
$Values.get(“Sales[1, North America, *]“).
Good work!
#end

displays

Your North American sales are $1,100,233. Good work!

It was a little trickier to come up with a straightforward way to display market share for a varying number of segments. In the end, we came up with a general syntax for dividing one Value by another. Again, this can be displayed directly or you can append any of the Value properties.

North American Market Share: $Values.get(“Sales[1, North America, *]“).divide(“Sales[*, North America, *]“)

Notice how this works. We’ve added a new method divide that can be appended to the $Value reference. The result is a new Value which is the first variable divided by the second. If competitor 1′s sales are half the total sales for North America, the result for the current time step will be .5.

There’s one small problem with the above syntax. The number format for the entire expression is the same as the number format for the first expression. If this is zero decimals, then the market share above will be displayed as “1″ or “2″. What we need to do is to change the number format when displaying this result. There are two ways to do this. The first is using the $Formatter reference (this has been around for a while). The second is a new simpler means of changing the number format — passing the format in as an argument to $Values.get().

North American Market Share: $Formatter.number($Values.get(“Sales[1, North America, *]“).divide(“Sales[*, North America, *]“).Result,’0%’)

North American Market Share: $Values.get(“Sales[1, North America, *]“).divide(“Sales[*, North America, *]“,’0%’)

Incidentally, this new syntax of including the number format as an argument to $Values works with the get method as well.

We’ve been using this new syntax on a couple of large simulations recently and it’s been a big help in simplifying the model and interface.

As always, we would love to hear feedback from you on this update or our platform in general. Feel free to leave comments below or email us at info@forio.com.



Enhancements to Forio Broadcast


One of the benefits of offering Forio Broadcast as online software is a complete change in the nature of upgrades. Since we launched the site five years ago we have added new features on a regular but fairly quiet basis. You will find that some of these enhancements simply make existing simulations work better. Other times you might find a surprising new capability to use when building a new simulation.

It’s easy to look past such continual evolution, so I wanted to highlight some of the subtle improvements and new capabilities made available in the last six months.

Simplified URLs

You may have noticed last Fall that our website went through a complete makeover. As part of this, we’ve simplified all of the Forio and Broadcast URLs. No worries, though– all old URLs are automatically forwarded to the new ones.

Site Old URL / New URL
Forio Broadcast Manager http://broadcast.forio.com/
https://forio.com/broadcast/
Forio Broadcast Express Simulation http://broadcast.forio.com/sims/simname/
http://forio.com/simulation/simname/
Forio Broadcast Professional Simulation http://broadcast.forio.com/pro/simname/
http://forio.com/simulation/simname/
Forio Broadcast Documentation http://broadcast.forio.com/broadcastdocs/
http://forio.com/broadcast/docs/

We’ve also removed some of the extra query parameters from the URL, such as the FD_rand that was automatically added to ensure each page was loaded fresh from the server. This hasn’t been needed since the days of Netscape 4, and thankfully those days are long behind us.

Unicode Compatibility

Surprisingly, the web industry is only recently moving towards a uniform way of storing and displaying international characters. Originally, Forio Broadcast supported the Latin-1 (ISO-8859-1) character set, which correctly displays American and most Western European characters but not many Eastern European or Asian ones.

We’ve have now switched to using the character set UTF-8 for displaying all web pages, user details, and other dynamic information. This means that if you are a Broadcast Professional user from Hungary, your name will be displayed with all the correct accents.

An important technical note: while all information stored in the database is encoded as UTF-8, the actual HTML source is still expected to be saved in Latin-1 format (which is then converted to UTF-8 when displayed). This is because existing simulations using the Latin-1 format would be garbled if the source files were interpreted as UTF-8. Eventually we’ll let you specify the encoding when you upload your HTML files.

Confused by the above? Trust us – set up a user name with accented characters and it should just work. But if you want some details on what this all means, browse Wikipedia or read this article.

Model Import Upgrade

We’ve been working hard the past few months to improve our model import capability. In particular, Forio’s new partnership with isee systems (read more about it here) has allowed us to do a significant upgrade on iThink/STELLA compatibility. Specifically, iThink version 9.0.2 has a brand new text file format that makes it easy for Forio to import and correctly translate the model. On a similar note, we’ve now integrated our “native” Vensim capability (which directly runs Vensim binary models) into our main server.

You can read more details about compatibility with models imported from other software packages in our online documentation.

Performance Improvements

If you are a Broadcast Professional user with a large simulation model, you may have noticed a significant difference in simulation speed kick in late 2006. In particular, we’ve sped up the initialization of heavily arrayed models. Some of our users are reporting improvements of 10-25x for that first step.  This is particularly helpful for developers of large multiplayer simulations.

Enhancements to the Broadcast Manager

You should expect to see significant changes in the simulation management screens in the year ahead. In the meantime, there are a few recent minor improvements.

  • Export/import runs. You may archive runs in an XML text file or move them from one user to another.
  • Improved tracing of circular causality. The error messages for circular causality in the model analyzer now show the exact path taken by the circular calculations.

New Functions

We’ve added a number of miscellaneous functions recently. Most of these were added for compatibility with other software packages. Here’s a sample.

  • Array: ARRAYCOUNTGT, ARRAYCOUNTGTEQ, ARRAYCOUNTLT, ARRAYCOUNTLTEQ ARRAYCOUNTEQ,ARRAYCOUNTNEQ, ARRAYACCUM
  • Historical: DELAYSTATE, HIVAL, LOVAL, FORECAST, TREND, DERIVN
  • Mathematical: ASIN,ACOS,ATAN,COSH,TANH,SINH
  • Miscellaneous: EXPRND
  • New FML methods/properties: $Lib.shuffle(), $Lib.PageName

Experimental New Features

In many cases, we implement features on a trial basis first and write full documentation second. Consequently, there’s a number of items that are still in an experimental state and are not yet fully documented. I’ve listed a few of these below. I’ll be writing posts in the next few weeks to fill in the gaps while we bring the documentation up to date.

  • Reporting arrayed variables.. Probably my favorite new feature. Want to display a total of an arrayed variable? No need to create a variable just to sum it up. Instead, replace the array index with a *, as in $Values.get("Sales[megacorp,*]") and the sum will be automatically shown. I’ll be writing more about this soon.
  • View history for a past run. We’ve always supported the ability to archive old runs. But in the past, to see results from a previous run you had to re-run the simulation. Now with the new syntax $Run.Values.get("Sales") you can retrieve results from a past run immediately, allowing you to display an old run (or better yet), create a table or graph comparing one run against another.
  • #SparkLineGraph. A tiny graph that can be inserted directly into text. Read more about it in How To Create Graphs.
  • Simpler means of showing paged lists. The new $Pager object makes it easier to show paged lists of high scores, runs, or users.

If you are excited by any of these new features, (or if you just have something to say), please leave a comment below. You can also email us directly at info@forio.com.



How to Create a Web Simulation


This tutorial will teach you how to build models and simulation web interfaces to those models. By the end of the tutorial, you will have learned how to develop a user-friendly web simulation.

This is an active, hands-on tutorial. Throughout the tutorial, you’ll be building a simulation. You’ll start with writing model equations and then you’ll design a web interface.

What this Tutorial Covers
Lesson 1 – Creating a Simple Web Simulation
Lesson 2 – Writing Your Own Model
Lesson 3 – Testing Your Model
Lesson 4 – Working with User Decisions
Lesson 5 – Creating Your Simulation Interface
Lesson 6 – Creating Graphs
Lesson 7 – Adding User Decisions to Your Interface
Lesson 8 – Advancing and Resetting the Simulation
Lesson 9 – Displaying User Decisions
Lesson 10 – Limiting User Input
Lesson 11 – Using Control Directives in FML