Step 12. Modeling a Promotion Strategy

At this point, advertising effectiveness in our model is assumed to be constant each period. Actually, it depends on the current advertising expenditures. We want to improve our model to be able to manage the promotion expenditures. Changing the monthly promotion expenditures we will affect the advertising effectiveness.

Modeling advertising expenditures

 Add a constant for the monthly expenditures
  1. Add one more parameter and name it MonthlyExpenditures.
  2. Specify the parameter’s Default value: 1100.

 Replace AdEffectiveness parameter with a dynamic variable

  1. Delete AdEffectiveness parameter (by selecting it in the graphical editor and pressing Del).
  2. Create AdEffectiveness dynamic variable with formula: MonthlyExpenditures/10000.0. We assume this is how the advertising effectiveness depends on the current promotion expenditures.
  3. Draw a dependency link from MonthlyExpenditures to AdEffectiveness.


We want to collect statistics on the total expenditures of our company. We will implement this by defining a parameter, keeping data about how much money was appropriated for the product promotion. Every month we will update TotalExpenditures value, adding the value of expenditures for the upcoming month. We will implement this by creating an event that occurs monthly.

 Add a variable to store the total expenditures
  1. Drag the Variable  element from the Agent palette to the graphical diagram. 
  2. Name the variable TotalExpenditures.

 Create an event to update TotalExpenditures

  1. Drag the Event element from the Agent palette to the graphical diagram. 
  2. Set monthlyEvent as the Name of the event.
  3. Set up event to occur monthly. Choose Cyclic from the Mode drop-down list.
  4. Since we want the event to occur each month, leave 1 as the value of the Recurrence time field, and choose months from the drop-down list to the right. 
  5. Specify the Action of the event:
    TotalExpenditures += MonthlyExpenditures;
    This code will be executed each time the event’s timeout is elapsed. It collects statistics on the total expenditures, namely it adds the value of advertising expenditures planned on the upcoming month to the TotalExpenditures.


Modeling a promotion plan

Since advertising plays significant role only at the start of the diffusion process, we want to stop advertising at some moment of time, say, after 3 years. Thus we will save money aimlessly spent on advertising, since only adoption from word of mouth determines the market saturation by that time.

 Add a parameter for the switch time

  1. Add one more parameter and name it SwitchTime.
  2. Specify the parameter’s Default value: 3.

Now we will define model behavior visually with a statechart. Statechart is used to show the state space of a given algorithm, the events that cause a transition from one state to another, and the actions that result from state change.

 Create a statechart to model promotion strategy

  1. Start defining a statechart with adding a statechart entry point. Therefore drag the Statechart Entry Point element from the Statechart palette into the graphical editor of Main agent type. 

  1. Add a state to the statechart. Drag the State  element from the Statechart palette onto the graphical diagram so that it gets connected to the statechart entry point added earlier. Change the name of just added state to with_advertising.

  1. Add one more state below the created one. Name it without_advertising

  1. We need to stop the promotion, when statechart comes to this state. Therefore, in the Entry action property, type MonthlyExpenditures=0.0;

  1. Add a transition going from with_advertising state to without_advertising state. Double-click the Transition element in the Statechart palette. Then draw the transition going from with_advertising to without_advertising state by clicking the starting point of the transition (the border of with_advertising state) and then click the ending point of the transition (the border of without_advertising state). 

  1. Set up this transition to be taken after SwitchTime timeout. Therefore, leave Timeout in the Triggered by drop-down list of this transition and type SwitchTime in the Timeout property (you can use code completion master here).

Now when the statechart is in the initial with_advertising state, company’s advertising expenditures are defined by the MonthlyExpenditures value. Once the statechart exits this state at the SwitchTime moment, company stops advertising.

Run the model and see that now the promotion company lasts 3 years only.

Reference model: Bass Diffusion - Phase 5


         Step 11. Modeling the demand cycle

          Step 13. Optimizing the product launch strategy