# Simulator Formulas

Formulas are used in the simulator to perform revenue calculations and in the optimisation feature.

The default formula for calculating revenue is:

``````share * price * 1000
``````

To adjust revenue calculations, click on

## Simulator functions

FunctionDescription
`share`Returns the preference share of the concept
`price`Returns the price of the concept

### Calculating volume share

You can do market volume calculations by inputting `share*total market volume` in the formula. For example, if the total market volume for your product category was 1200000 units, you can plot this in the simulator by adding the following formula:

``````share*1200000
``````

### Calculating revenue

The default calculations on Conjointly performs revenue calculations assuming 1000 total units sold. The preference share and price of each concept is multiplied by the total market volume to calculate revenue. To get a more accurate prediction of your product revenue, replace the 1000 with the total market volume of your product category:

``````share*price*1200000
``````

### Calculating gross margin

To calculate the gross margin, you can subtract the cost of producing each concept from the price. If your product cost \$1.20 to produce, you can use this formula:

``````share*(price-1.2)*1200000
``````

## Objective functions for optimiser

The objective function should describe your business goal. The optimisation algorithm will try to maximise it by tweaking the scenarios, attributes, and levels.

### Built-in functions

The objective function can be level up by using the built-in functions below:

FunctionDescription
`price(concept_name)`Concept price of preference on the current scenario
`share(concept_name)`Concept share of preference on the current scenario
`sum(expression, array)`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.
`["Concept 1","Concept 2"]`Include specific concepts by name
`["Product Concept *"]`Include concepts by name with wildcards

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.

### Revenue as the objective function

The basic formula for revenue is `share(i) * price(i)`.

You can use the button to add revenue formulas for original concepts. For example:

``````sum(1000 * share(i) * price(i),["Granny's mix", "Orange Fox"])
``````

And the button for 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 the and 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 the and 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 your 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*"])
``````

### Error messages

Do not panic if you see the error. It is probably due to an error in one of the following sources:

Source of errorRecommended action
Configure extrasCheck and ensure the extras added are different as the same extra can only be added once.
Objective functionCheck and ensure the objective function is entered in the correct format.
Optimisation constraintsTry to provide a broader range for the constraints (i.e. two to five instead of three to four).