Optimisation of simulated scenarios
Sometimes you want to try simulating different combinations of features and prices of your products in order to find an optimal configuration for launch. This process can take a lot of time if you have a lot of features and price points. Luckily, Conjoint.ly’s optimisation function runs in only minutes.
The conjoint optimisation function will ask you several inputs:
- A starting scenario
- Potential extra concepts to add in the process of optimisation
- What to optimise: A formula that calculates preference shares, revenue, or profit for a selected group of products
- Contraints (like number of concepts in your scenario)
Then Conjoint.ly runs a genetic search algorithm that finds the best scenario that maximises the formula from Step 3.
Case study: Granny’s Mix yogurt
This guide follow the optimisation journey of Granny’s Mix, a hypothetical yogurt manufacturer. Granny’s Mix is a probiotic yogurt manufacturer seeking to strengthen its market position against its competitors, including Orange Fox. They conducted a Generic Conjoint experiment to gather insights for its new product development.
Suppose Granny’s Mix wants to identify the combinations of NPDs that will maximise revenue. They also want to see the incremental gain of each NPD to see how each product addition benefits the overall portfolio. Based on the specified product attributes and levels below, there are
24 = 4 × 3 × 2 possible concepts – even without considering the price attribute:
- Attribute 1: Probiotic content claim
- Level 1: with Bifidobacteria + Lactobacilli Auroris
- Level 2: with Bifidobacteria Santium
- Level 3: with Lactobacilli Auroris
- Level 4: with Healthy Gut Bacteria
- Attribute 2: Pack type
- Level 1: Glass bottle
- Level 2: Plastic pack
- Level 3: Wood pack
- Attribute 3: Pack type
- Level 1: Eco claim
- Level 2: No eco claim
- Attribute 4: Price: Varies from $1.68 to $4.38
Instead of manually trying 24 or more different simulations, Granny’s Mix used Conjoint.ly’s powerful online simulator to find the combination of attributes that maximise its revenue in several steps:
Step 0: Choose starting scenario
Within the scenario you are looking to optimise, select→ .
Please note that all the settings within the simulator scenario (including the advanced settings) are used in optimisation function.
Step 1: Choose concepts
Step 1a: Tick the removable concepts
First, you tick on the product concepts that are possible to be removed by the optimisation function.
In this example, Granny's Mix can only remove its own product but not Orange Fox's. Their subborn competitor will never leave the market, so the Orange Fox's box is unchecked.
Step 1b: Tick the changeable attributes
Then, you specify whether the product attributes are possible to be changed during the optimisation function. Remember to uncheck the boxes for those attributes that you don't wish to change or cannot change.
Granny's Mix does not wish to change any product attributes other than price for the existing product. Thus, it checks only the price attribute.
Step 2: Configure extras
Step 2a: Add or remove extras
The original concepts in step 1 are based on the initial scenario setting and may contain unchangeable attribute levels. If you wish to modify and test the concepts, you may add the concepts as extras in this step. These extras can be made up of combinations of any attribute level, and you can include as many extras in the optimisation wizard as you wish.
Granny's Mix intends to identify the next new product ideas based on existing product attributes and levels. Hence, it removes the default Orange Fox's extra and added seven extras based on attribute levels that it is ready to offer.
Step 2b: Tick the must-have extras
After adding the extras, you may check the boxes for those extras that must be present within the optimised simulator. Otherwise, keep the extras' boxes uncheck.
Currently, Granny's Mix only has one extra that must be included in the simulator and it ticks the extra's box.
Step 2c: Specify changeable attributes for the extras
For each extra, you may specify whether the attributes are to be varied by checking the boxes. There is no limitation on how many extras you can add. Feel free to add any concepts with various attributes.
Just remember, as indicated in the Granny's Mix's example, the concepts and extras need to have variation in attributes levels.
Step 3: Objective function
The objective function will look for what to maximise for the optimisation function.
You can specify your objective function by using the standard mathematical operators (i.e.
^) as well as built-in functions (i.e
Step 4: Optimisation constraints
In the previous steps, you may include as many concepts and extras as possible into the optimisation function to avoid missing any possibility. This step allows you to specify the potential number of concepts in the final optimised scenario.
For instance, Granny's Mix specified nine product concepts (two original concepts and seven extras) but prefer to have the top two to five concepts in the optimised scenario. Hence, the optimisation constraints are from two to five in this scenario.
Step 5: Optimising
Take a break for few minutes while the powerful optimisation function works out the most optimised scenario for you.
Please note that the wizard uses a genetic search algorithm and hence:
- It takes a few minutes to put together the data and
- It may not always find the absolute optimal scenario
However, the optimisation function is more time-saving and accurate than manually changing the attributes and recalculating the simulator. It also serves as a solid foundation for the next experiment or new product development.
Step 6: Optimisation output
The optimal product combinations are here! There are two main sections of the output.
6a: The optimised scenario
The optimised scenario sits next to the baseline scenario. It lists out the most optimal concepts identified by the optimisation algorithm. Here, you can check the attribute levels of each concept. You can still change the colour, naming, and the attributes of the concepts if you wish to.
Granny's Mix's revenue optimising scenario removes its original concept by the optimisation algorithm and includes four extras instead. The optimised scenario also suggests all product concepts set at the price level of $1.90.
Step 6b: The optimised preference share and revenue projection simulator
Both the preference shares and revenue projections simulator show the baseline and optimised scenario side-to-side.
In this example, the revenue optimised simulator shows:
- The preference shares of Orange Fox decrease from 34.2% to 8.6% with revenue projections for 1,000 units offered lowered to $162.25 from $649.20 and
- The preference shares and revenue projections for the original concepts including None of the above are redistributed to the Granny's Mix extras.
How to specify the objective function?
The objective function should describe your business goal. The optimisation algorithm will try to maximise it by tweaking the scenarios, attributes, and levels.
The objective function can be level up by using the built-in functions below:
||Checks condition and returns a value if it is true or another value if it is false|
||Returns a value that corresponds to the first true condition or the else value if other conditions are false|
||Concept price of preference on the current scenario|
||Concept share of preference on the current scenario|
||Sum of expressions x over the array y, where the iterant refers to the name of the variable that is substituted in the expression x.|
Reference to concept names
||Include all concepts within the simulation||Revenue for all concepts and extras:
||Include specific concepts by name||Revenue for Granny’s Mix and Granny’s Mix Premium:
||Include concepts by name with wildcards||Revenue for all concepts starting with “Granny”:
Please note that concept names are not case-sensitive in the objective function. Therefore
["Concept 1","Concept 2"] is the same as
["concept 1","concept 2"]. You can only use English letters, numbers, and common punctuation symbols.
Mathematical and boolean operators
|Operators||Description||Sample Equation (assume
Revenue as the objective function
The basic formula for revenue is
share(i) * price(i).
You can use thebutton to add revenue formulas for original concepts. For example:
sum(1000 * share(i) * price(i),["Granny's mix", "Orange Fox"])
And the buttonfor extras:
sum(1000 * share(i) * price(i),y=["Granny's mix probiotic content *", "Granny's mix pack *", "Granny's mix glass bottle *", "Granny's mix eco *", "Granny's mix premium *"])
Please note that theand only appear in this step if the experiment contains “price” as an attribute. If your experiment does not study price and yet want to maximise revenue as a function, you may consider multiplying the volume with a price constant.
Volume as the objective function
When your experiment does not include price, you may specify volume as the objective function. Its basic formula is
sum(1000 * share(i))
For convenience, you may click on theand buttons and get:
sum(1000 * share(i), y=["Granny's mix", "Orange Fox"] ) + sum(1000 * share(i), y=["Granny's mix probiotic content *", "Granny's mix pack *", "Granny's mix glass bottle *", "Granny's mix eco *", "Granny's mix premium *"] )
Profit as the objective function
The algorithm will maximise profit when you tweak the revenue formula by adding variable costs. If you variable cost per unit is, for example, 20, the objective function looks like:
sum(1000 * share(i) * (price(i) - 20 ), y)
If Granny’s Mix, the variable cost is $20 per unit and fixed cost per additional concept is $5,000, the profit objective function is:
sum(1000 * share(i) * (price(i) - 20) - 5000, ["Granny's mix*"])
Do not panic if you see the error. It is probably due to an error in one of the following sources:
|Source of error||Recommended action|
|Configure extras||Check and ensure the extras added are different as the same extra can only be added once.|
|Objective function||Check and ensure the objective function is entered in the correct format.|
|Optimisation constraints||Try to provide a broader range for the constraints (i.e. two to five instead of three to four).|