Geographic Feature

The Geographic Feature node calculates the 'Lost Value' of each Product due to shipping costs, waiting time, pickup hassle, and whether the Product is even available. This 'Lost Value' is calculated from the perspective of each Virtual Customer. The node considers the Location of each Virtual Customer and the Location of each Product, then uses the shipping cost between the two locations to calculate 'Lost Value'.

The node first places each Virtual Customer in a geographic 'Location' according to its 'Population'. Customers can be located in different cities across the country, or in different districts within a city. Customers can be systematically located in blocks, or can be randomly scattered across all locations according to the relative populations at each. The node then compares the Location of each Customer against the Location of each Product.

A lookup table is used to determine the shipping cost from all Origins to all Destinations. The lookup table can be rate card that has been uploaded from a third-party shipping company. Or the lookup table can be generated upstream by calculating the physical distance or travel time between all Locations.

The node creates a 'Lost Value' Customer Distribution for each Product. If a Customer can get a Product from many Locations, then the node automatically selects the Location that is most convenient for the Customer. That is, the Location which causes the Customer to suffer the least 'Lost Value'. If it is impossible for the Customer to receive the Product because no shipping options are available, then the 'Lost Value' is infinity. These 'Lost Value' Customer Distributions can be integrated with the Features of each Product by a downstream 'Product Generator' node.

'Lost Value' is subjective and will vary by Customer. Some Customers have an urgent need for rapid delivery, while others place a higher value on minimizing the cost of shipping. Customers may also have varying opinions about the reliability of each Product shipper. And Customers who are able to buy a Product directly from within a nearby store enjoy instant gratification and suffer no such 'Lost Value'. Hence the weight of the 'Lost Value' suffered by each Virtual Customer can be varied by the node.

More Help: Examples and sample workflows can be found at the Scientific Strategy website: www.scientificstrategy.com.

Options

Standard Options

Number of Customers
The number of Virtual Customers to be generated by the Geographic Feature node. Each Virtual Customer will be represented by a separate row within each Customer Distribution found in the Output Geographic Distributions table. If an upstream 'Input WTP Matrix' is connected to the 'Geographic Feature' node then this user-setting will be ignored and the Number of Customers will be determined by the number of rows in the Input WTP Matrix.
Locate Customers
The method by which the Virtual Customers will be assigned a geographic location. The options include:
Randomly (default) scatter the Customers across each of the 'Locations' listed in the 'Input Customer Locations' table according to the 'Population' ratio. As Locations are drawn randomly there is no guarantee that the output 'Population' ratio will match the input ratio. If precise ratios are important, use the 'In Large Blocks' setting instead.
In Small Blocks placing the actual 'Population' number from the 'Input Customer Locations' into the Customer Distribution and looping over the input table until the Customer Distribution is full. This option depends upon the 'Population' field in the 'Input Customer Locations' being expressed in integers that sum to a fraction which evenly divides the total 'Number of Customers'.
In Large Blocks builds an ordered Customer Distribution table according to the 'Population' ratio in the 'Input Customer Locations'.
Scale Lost Value By
(percentage) Scales the Input Shipping Cost to get the Lost Value suffered by Customers. The difference multiplier between the 'Input Shipping Cost' and the 'Lost Value' suffered by Customers. A value of 100 (percent) indicates that the 'Lost Value' due to shipping and waiting time is equal to the actual 'Input Shipping Cost' of the Product. A value of 200 (percent) indicates that each Customer places as much value on weighting time as they do on the financial cost of shipping, hence the total 'Lost Value' is twice the financial loss.
Lost Value Variation
The degree of variation in weight a Virtual Customer may place upon 'Lost Value' compared to other Virtual Customers for all Products shipped from the same 'Location'. A value of 0.0 indicates that the 'Lost Value' will not change from the 'Cost' field set in the 'Input Shipping Cost' table. A value of 1.0 indicates that some Customers will double their 'Lost Value' whereas some other Customers will halve their 'Lost Value'. The variation will be normally distributed around the mean Cost. This value may be further customized by the similar 'Variation' column in the 'Input Product Locations' table. The 'Lost Value Variation' applies to all Products and all Locations, whereas the 'Variation' column applies only to individual Products shipped from specified Locations.
Scale Price Adjustment Fixed By
(percentage) The scaling factor creating a difference between the 'Input Shipping Cost' incurred by the vendor and the 'Price Adjustment Fixed' (PAF) the vendor will charge the Customer when shipping a Product to the Customer's Location. A value of 100 (percent) indicates that the PAF is equivalent to the Shipping Cost. This value would be used when the vendor simply passes through the Shipping Cost to the Customer without adding an additional fee. A value of 150 (percent) indicates the vendor makes a 50% margin on the Shipping Cost.
All Customers can Purchase All Products
If TRUE (default) then any gaps within the 'Input Shipping Cost' table will be filled by setting the Shipping Cost to the Maximum found for the Origin and Destination. If FALSE then gaps in the 'Input Shipping Costs' table indicate that it is impossible for Customers located at the Destination to buy Products located at the Origin.
Save Randomizing Seed
A Randomizing Seed can be saved to ensure that the Customer Distributions are always shredded in the same way. If a Demand Shredded node is copied then the user should ensure the Saved Randomizing Seed is changed or not saved - otherwise demand may be inconsistently shredded. The 'New' button will generate a new Randomized Seed. Disable the CheckBox to generate a new Randomizing Seed each time the node is run.

Format Options

Lost Value Output Name
The 'Lost Value' is calculated from the perspective of each Virtual Customer in the Market. The shipping Cost makes up part of the Lost Value, as does the waiting time and the inconvenience suffered by the Customer in picking up the Product themselves. The name used to describe this Lost Value can be set by the user to best suit the circumstances of the model.
Output Name Format
Defines the format of each Product's Lost Value in the Output Geographic Distributions table. This allows the names to be compatible with Customer Distributions output from other nodes, such as the 'Differentiation Vertical' node and the 'Differentiation Horizontal' node. All Customer Distribution names can be listed together within the Input Product Features table used by the 'Product Generator' node when aggregating together the Features that make up each Product in the Market.
Product Value Name Delineator
Sets the delineator character between the Product and the 'Lost Value' in the Output Geographic Distributions table. By default, the delineator character is set to be a '.' period, but ',' comma, '_' underscore, or ' ' space may better suit the user's simulation.
Output Lost Value Column
If TRUE (default) then a 'Lost Value' column for each Product will be returned in the Output Geographic Distributions table. As 'Cost To Serve' (CTS) and 'Price Adjustment Fixed' (PAF) columns can also be generated, a lot of output can be returned. Uncheck this selection to reduce the size of the output table.
Output Cost To Serve
If TRUE (default) then a 'CTS' column for each Product will be returned in the Output Geographic Distributions table. The 'Cost To Serve' (CTS) is the additional Dynamic Cost a vendor must incur when shipping a Product to a Customer. Unlike the 'Lost Value' column, there is no variation in the CTS like the weight a Virtual Customer may place upon their Lost Value compared to other Virtual Customers at the same Location. The CTS is equivalent to the Cost found in the 'Input Shipping Cost' table. These CTS columns are automatically recognized by other Market Simulation nodes.
Output Price Adjustment Fixed
If TRUE (default) then a 'PAF' column for each Product will be returned in the Output Geographic Distributions table. The 'Price Adjustment Fixed' (PAF) is the additional Dynamic Price a vendor will charge when they need to ship a Product to the Customer. The PAF is proportional to the Cost found in the 'Input Shipping Cost' table but may be scaled according to the user-defined 'Scale Price Adjustment Fixed' percentage. These PAF columns are automatically recognized by other Market Simulation nodes.

Input Ports

Icon
Input Customer Locations: (optional) The ratio of Customer 'Population' at each 'Location'. If an upstream 'Input WTP Matrix' is connected to the 'Geographic Feature' node and the 'Input WTP Matrix' contains a 'Location' column then this 'Input Customer Locations' table is optional and will be ignored. The 'Input Customer Locations' must have the following columns:
  1. Location (string): The name of each Geographic Location in the Market where Virtual Customers reside.
  2. Population (double): The ratio of Virtual Customers residing at each Geographic Location. If the option 'Locate the Customers' is set to 'In Small Blocks' then these ratios need to be expressed in integers and add to a subset of total 'Number of Customers'.
Icon
Input Product Locations: The 'Location' of each point of sale for each 'Product' in the Market. The 'Input Product Locations' must have the following columns:
  1. Product (string): The name of each 'Product' in the Market. A Customer Distribution is created for each unique 'Product' name.
  2. Location (string): The point of sale 'Location' of each 'Product' in the Market. A 'Product' can have more than one point of sale 'Location' listed in this table. The 'Lost Value' assigned to each Virtual Customer will depend upon the cheapest shipping 'Cost' for each 'Product'. If the Location is set to the special value of 'Global' then the Product can be shipped from any known Origin and the minimum shipping cost from the Origin to all Destinations will be selected from the 'Input Shipping Costs' table. If there is no direct route listed between the Product's Origin and the Customer's Destination (or visa versa as the reverse shipping cost is the same by default) then the maximum shipping cost from the Origin or to the Destination is used. To set a fixed shipping Cost to all Locations, set the 'Maximum' and 'Minimum' to the fixed Cost.
  3. Surcharge (double): (optional) An additional fixed Surcharge to add to the Product shipped from this Location. This field might be used if the seller adds their own Product handling charge on top of the delivery fee charged by a third-party shipping company. If the Surchage is negative then the seller is reducing the shipping cost to the Customer by bearing some of the Cost themselves. The same Surcharge is applied to the Product regardless of the Location. If different Surcharge values are found for the same Product then the maximum non-zero Surcharge will be used.
  4. Maximum (double greater than > 0.0): (optional) The maximum Cost of shipping the Product from this Location. If the 'Maximum' value is missing then the Product shipping Cost from this Location will be determined by lookup from the 'Input Shipping Costs' table. This field might be used if the Product seller wishes to cap the maximum Cost to the Customer. The same Maximum is applied to the Product regardless of the Location. If different Maximum values are found for the same Product then the largest Maximum will be used. The Maximum is capped after the Surchage is added.
  5. Minimum (double greater than > 0.0): (optional) The minimum Cost of shipping the Product from this Location. If the 'Minimum' value is missing then the Product shipping Cost from this Location will be determined by lookup from the 'Input Shipping Costs' table. This field might be used if the seller needs to pass on a minimum Product handling charge to the Customer even if the Customer is from the same Location as the Product or very nearby. The same Minimum is applied to the Product regardless of the Location. If different Minimum values are found for the same Product then the largest Minimum will be used. The Minimum threshold is imposed after the Surchage is added.
  6. Variation (double between 0.0 and 1.0): (optional) The degree of variation in weight a Virtual Customer may place upon 'Lost Value' compared to other Virtual Customers for this Products shipped from this 'Location'. A value of 1.0 indicates that some Customers will double their 'Lost Value' whereas some other Customers will halve their 'Lost Value'. A value of 0.0 indicates that the 'Lost Value' will not change from the 'Cost' field set in the 'Input Shipping Cost' table. The variation will be normally distributed around the mean Cost. This 'Variation' is applied after the Maximum cap and Minimum threshold. It personalizes the similar 'Lost Value Variation' found within the Configuration Dialog and may be used when the perceived quality or reliability of the shipper varies, or when additional financial burdens are placed upon the individual Customer when receiving the Product. The 'Lost Value Variation' from the Configuration Dialog applies equally to all Products, whereas this 'Variation' applies only to this Product (Location is ignored).
Icon
Input Shipping Costs: (optional) The shipping 'Cost' from each 'Origin' to each 'Destination' in the Market. The shipping cost can be monetary rate card that has been uploaded from a third-party shipping company, or can contain non-monetary values generated upstream by calculating the physical distance or travel time between all Locations. It is not necessary to include the reciprocal 'Destination' to 'Origin' shipping 'Cost' unless the value is different. If the 'Input Shipping Cost' is missing then it is assumed that the Product is only available at the 'Input Product Locations'. The 'Input Shipping Cost' table must have the following columns:
  1. Origin (string): The shipping starting point. Each 'Location' in the 'Input Product Locations' table must be represented in the 'Input Shipping Cost' table. Otherwise, if the Customer's Destination is not listed, the maximum shipping cost will be selected from the Origin.
  2. Destination (string): The shipping ending point. Each 'Location' in the 'Input Customer Locations' table must be represented in the 'Input Shipping Cost' table otherwise the maximum shipping cost will be selected for the Destination. Shipping Costs can also be included even when the Origin is the same as the Destination - otherwise the Shipping Cost is assumed to be zero. If the Product's Origin and the Customer's Destination are both unknown then the shipping cost will be set to infinity.
  3. Cost (double): The cost of shipping the typical Product in the Market. This value typically reflects actual shipping costs as this highly correlates with the Customer's 'Lost Value'. The shipping 'Cost' from 'Origin' to 'Destination' is the same regardless of 'Product' even though the actual shipping cost charged may vary by 'Product'. This is because a Product's shipping cost may impact the Product's price and does not reflect the Customer's 'Lost Value'.
  4. Note: If loading from a file and the first column contains international Unicode characters then the file should be encoded using 'UTF-8 without BOM'. Otherwise the first column is required to contain RowID's.
Icon
Input Willingness To Pay Matrix: (optional - double) The Willingness To Pay (WTP) Customer Distribution matrix for each Product column in the Market by each Virtual Customer row. If this table has been connected and contains a 'Location' field then the 'Input Customer Locations' table will be ignored. The total number of Virtual Available Customers is equal to the number of rows in the WTP Matrix and will override the 'Number of Customers' user setting. In addition to each of the Product's WTP Customer Distributions, this 'Input WTP Matrix' can also contain two types of 'Dynamic Price' and two types of 'Dynamic Cost' Distributions that depend upon the Customers who Purchase the Product. These personalized 'Dynamic Prices' and 'Dynamic Costs' adjust the 'Static Price' and 'Static Cost' found in the 'Input Product Array' to calculate the Product's Margin. The user may configure the 'Geographic Feature' node to replace these Dynamic values. The 'Input WTP Matrix' may have the following columns:
  1. Product01, Product02, etc (double): Each of the Products listed in the 'Input Product Array' should have a corresponding column in this 'Input WTP Matrix'. Each row represents a different Virtual Customer, and each value represents the Customer's Willingness To Pay (WTP) for each Product.
  2. Location: The name of the Geographic Location where each Virtual Customer resides. If the 'Input WTP Matrix' includes this 'Location' field and there are no missing values then the 'Input Customer Locations' table and the 'Locate Customers' configuration dialog will both be ignored.

Output Ports

Icon
Output Geographic Distributions: The 'Location' of each Virtual Customer (row) and the 'Lost Value' for each Product (column). The name of each unique 'Product' found in the 'Input Product Locations' will prefix each 'Lost Value' column heading. The Output Geographic Distributions will be appended to the 'Input WTP Matrix' (if provided) and will contain these columns:
  1. Location: The Location of each Virtual Customer. The Location field may be generated from the 'Input Customer Locations' table along with the 'Locate Customers' configuration dialog. Alternatively, the Location field may have been determined by an upstream node and passed through with the 'Input WTP Matrix'.
  2. Lost Value: A Lost Value is calculated for each Product and each Customer. This Lost Value can represent the degree of subjective inconvenience suffered by the Customer. It can also represent direct and objective costs incurred by the Customer such as Shipping Cost, fuel charges, or travel time. Lost Value reduces the Customer's Willingness To Pay (WTP) and and their Consumer Surplus when considering whether to purchase a Product.
  3. _CTS (double - optional): The Cost To Serve (CTS) is the additional Cost that must be incurred when a Product is sold to a particular Customer. This is a Dynamic Cost as some Customers are cheaper to serve than others, and is only incurred if the Customer actually Purchases the Product. The 'Cost To Serve' column is identified by the Product's Name followed by a trailing 'CTS'. The 'CTS' designator can be upper-case or lower-case and may-or-may-not be separated by a space, underscore, or other single character. For example, 'Product_01_CTS' or 'Product 02 CTS' or 'Product03cts'. The Customer's 'CTS' remains unchanged regardless of the Quantity of Product Units purchased by the Customer.
  4. _PAF (double - optional): The Price Adjustment Fixed (PAF) is the fixed adjustment to the Product's Price. For example, if Customers pay different amounts for Shipping the Product then this could be modeled using the 'PAF' column. The 'Price Adjustment Fixed' column is also identified by the Product's Name followed by a trailing 'PAF' in a manner similar to the 'PAV' designator. The 'PAF' is a per-Unit Price. If the Customer purchases more than one Product then the 'PAF' is multiplied by the Customer's Demand. Note: beware of double-counting. It would not make sense to reduce the Customer's WTP using the 'Lost Value' column while also increasing the Price a vendor charges a Customer using the 'PAF' column.

Views

This node has no views

Workflows

Links

Developers

You want to see the source code for this node? Click the following button and we’ll use our super-powers to find it for you.