Centers‑of‑Gravity Calculator

  • Calculates Centers‑of‑Gravity - indicative warehouse locations that minimize transport costs - based on yearly demand per customer location (latitude, longitude) as main input.
  • Offers advanced functionality to go beyond a basic greenfield analysis: you can setup (semi-)fixed warehouses, assign customers, limit warehouse capacities, group customers for single sourcing, add the supply side, run location sensitivity analyses, boost service level, ...
  • Produces a downloadable map, service level chart and detailed reports.

i
Create an account
  to run this fully functional web app with your own data instead of demo data.
We have been using Centers‑of‑Gravity Calculator for years. It’s better fit for purpose than the other tools we use(d) for this and we like the way Stelling Consulting is constantly improving the tool to make it even better.
Jeroen Martens
Head of Transport Solutions Design MLE MEA & Network Design & Supply Chain Consulting Global Practice Lead
DHL Supply Chain
 
After adjustment, a single Calculation is run to effectuate changes
Customer/supplier size factor 
⇐ Set it such that 1st legend value becomes  
i
Centers‑of‑Gravity size factor 
Flow size factor 
i


Customer/supplier opacity 
Center‑of‑Gravity opacity 
Center‑of‑Gravity color  
Label font size 
Display transport-rated volumes
i
Display Centers‑of‑Gravity as fixed-sized circles
i
Display customer flows
 
Display supplier flows
Supplier flows color  
Supplier flows arrow size 
i
Scale arrows
Distance based customer coloring from green at 0 km, to red at lead time distance limit, and black beyond.
Carto map
ESRI map
OpenStreetMap map
 
Save all map settings as   
  under button  
Save



Reload: click a button

1. ...
⇒ Your custom settings used at startup
2. ...
3. ...
4. ...
5. ...
6. ...
7. ...
8. ...
9. ...
10. ...
Use system default
i
Use key
i
 
  Center Latitude  
  Longitude  
  Zoom  
  Width  
  Height  
 

You need to enable javascript.

Basic Mode
Advanced Mode
Report kilometers
Report miles
Download Excel template
CUSTOMERS
Latitude  |  Longitude  |  Demand  |  Warehouse_ID (opt)  |  Group (opt)  |  Shipment_size (opt)  |  Lead_time_distance (opt)
41.153320.16833430AL
46.633314.31284270AT
46.989415.58174200AT
47.25211.424690AT
47.578412.73053550AT
47.991113.887811530AT
48.067113.17753300AT
48.202516.41864600AT
48.204916.27346100AT
48.229716.46922620AT
48.365613.97713340AT
43.331917.75135900BA
43.878418.35932460BA
50.24584.85192720BE
50.37534.38193420BE
50.41724.4473220BE
50.45553.96623500BE
50.4614.84982940BE
50.47974.16984600BE
50.5885.86022840BE
50.58824.32533120BE
50.593.39222960BE
50.59425.43313200BE
50.59786.13253280BE
50.64735.58326550BE
50.72374.55433140BE
50.74163.22382420BE
50.78864.86122980BE
50.81375.20892460BE
50.81853.27852440BE
50.8494.42975360BE
50.85215.68783520BE
50.88324.35519200BE
50.89034.73818200BE
50.89894.3913200BE
50.93165.33684880BE
50.94063.11816900BE
50.94394.04422920BE
50.96765.48863160BE
50.98364.8213280BE
50.98943.51063380BE
51.00773.3683080BE
51.02934.0942540BE
51.03534.46653280BE
51.05323.63079480BE
51.124.57342780BE
51.14624.33834120BE
51.164.82773440BE
51.16954.16474240BE
51.20625.37982480BE
51.2124.46863670BE
51.21472.9193280BE
51.22114.36643130BE
51.23293.21183610BE
51.23845.19493280BE
51.27064.50284450BE
51.33693.32343850BE
51.35314.7712780BE
42.68723.32734660BG
42.726623.315818640BG
53.123226.57967000BY
46.03388.97192940CH
46.12587.22742620CH
46.34076.19743670CH
46.59026.67164600CH
46.93747.43452700CH
46.969.05525800CH
46.96528.21832640CH
47.19217.56153360CH
47.30927.60314560CH
47.34759.40812520CH
47.37768.53815900CH
47.40368.03742820CH
47.55677.59793730CH
47.57779.08993340CH
35.030933.13745960CY
49.181216.67692520CZ
49.839718.32482800CZ
49.88616.47112610CZ
49.887914.65555000CZ
50.044614.56167790CZ
50.136814.46013000CZ
50.22414.07762840CZ
47.748710.4642420DE
47.844112.20044060DE
47.848411.28494480DE
47.89488.07213700DE
47.90839.54462560DE
47.98218.68013240DE
48.12511.60057370DE
48.182711.54956400DE
48.32548.95952620DE
48.337110.84774870DE
48.434212.41173240DE
48.446110.11333880DE
48.489111.56843560DE
48.726413.06732800DE
48.75579.18173520DE
48.78759.84224630DE
48.81839.35294300DE
48.96868.29096120DE
49.092912.35277240DE
49.28429.50624300DE
49.3417.11153370DE
49.357810.95455520DE
49.406910.99995080DE
49.42511.9613380DE
49.42888.92782440DE
49.46198.50934750DE
49.51317.9894630DE
49.74778.76633260DE
49.84577.71225360DE
49.962210.016615520DE
50.05649.06168740DE
50.089111.92072960DE
50.11311.00842500DE
50.11528.65634800DE
50.20848.19024600DE
50.30197.53174840DE
50.526110.69563180DE
50.549812.40752980DE
50.60646.92744900DE
50.67819.74572800DE
50.732811.70884840DE
50.777413.12323940DE
50.79868.68663480DE
50.80856.28724160DE
50.90016.75875900DE
50.93157.99582860DE
50.96097.38265360DE
51.17536.47733520DE
51.177313.78975600DE
51.186810.83034840DE
51.201914.52073280DE
51.2146.81364280DE
51.21619.19774360DE
51.30137.59813100DE
51.344112.93573840DE
51.49428.01544630DE
51.496712.02024360DE
51.52459.92083520DE
51.5327.36955800DE
51.54346.38757500DE
51.55577.13728980DE
51.7176.59462400DE
51.756814.03472780DE
51.78988.68245400DE
52.12357.43024200DE
52.15958.82322760DE
52.187510.6834420DE
52.245514.01423250DE
52.317912.78862740DE
52.323510.0994060DE
52.385111.64952560DE
52.40139.69575000DE
52.459413.48923220DE
52.511713.40793370DE
52.53167.72785700DE
52.587813.33928560DE
52.949313.16483280DE
53.08998.84413060DE
53.20829.35742500DE
53.29347.76664900DE
53.357411.48063360DE
53.4569.8083520DE
53.56259.99144540DE
53.5913.33373060DE
53.632710.08747780DE
53.95510.9566050DE
54.031812.42734570DE
54.31679.89183550DE
54.32569.12573340DE
55.614712.31887300DK
55.668912.553250DK
59.221724.1876810EE
35.2931-2.94922420MadridES
35.8917-5.33053000MadridES
36.1408-5.35362440MadridES
36.5295-5.755411200MadridES
36.8099-4.663212760MadridES
37.3103-2.34286040MadridES
37.3968-3.2311000MadridES
37.5034-6.79915800MadridES
37.5264-5.580714280MadridES
37.9667-3.34425800MadridES
37.9718-4.76917300MadridES
38.073-1.470212160MadridES
38.3649-0.423718480MadridES
38.7208-5.96838840MadridES
38.7359-1.8656000MadridES
38.979-3.79945700MadridES
39.3672-0.736125920MadridES
39.61782.90676920MadridES
39.7771-6.29814800MadridES
39.8069-4.11615000MadridES
39.9488-2.12172880MadridES
40.2532-0.13815300MadridES
40.5295-3.766977840MadridES
40.6066-0.72993320MadridES
40.6391-4.90622540MadridES
40.7418-2.50935250MadridES
40.7762-6.00964690MadridES
41.05360.92185000MadridES
41.1183-3.95733340MadridES
41.693-6.15063160MadridES
41.7153-4.64884600MadridES
41.7472.072357700MadridES
41.8449-0.866212800MadridES
42.06711.09734720MadridES
42.07342.50639820MadridES
42.1097-0.06372960MadridES
42.1882-7.52375000MadridES
42.2716-2.40016040MadridES
42.3387-3.57944520MadridES
42.3728-8.36898020MadridES
42.4117-4.48143480MadridES
42.6085-1.605411160MadridES
42.63-5.89456850MadridES
42.8386-2.74894840MadridES
43.0522-7.37175800MadridES
43.1264-3.99526100MadridES
43.1369-8.475715040MadridES
43.1534-2.15684600MadridES
43.2274-2.94127930MadridES
43.254-5.82557320MadridES
60.161624.484427040FI
42.179.05962400FR
42.63112.43883520FR
43.03392.47543340FR
43.13790.1642700FR
43.1855-0.87787150FR
43.31181.247911440FR
43.41896.2955440FR
43.54245.02877510FR
43.59033.3636760FR
43.78362.24932440FR
43.90027.185810900FR
43.9514.07743520FR
43.99885.2163790FR
44.0016-0.68423300FR
44.06591.36962520FR
44.29612.64162920FR
44.35610.48153240FR
44.72375.24952480FR
44.8705-0.473115430FR
45.12830.71132760FR
45.28435.57254600FR
45.33131.88353520FR
45.48216.40612960FR
45.66450.2512400FR
45.707-0.60453160FR
45.75174.24175480FR
45.76483.19227250FR
45.86674.71588040FR
45.90051.26593640FR
46.05965.46722520FR
46.07016.42983160FR
46.36153.12382760FR
46.475-0.31323220FR
46.58710.54763140FR
46.66024.54322800FR
46.6798-1.33153400FR
46.76565.72513080FR
46.80941.54973520FR
47.01222.43472680FR
47.05586.38973080FR
47.21810.72644360FR
47.3432-1.72856680FR
47.3935-0.53693730FR
47.46174.80034840FR
47.62856.95872760FR
47.66071.43622400FR
47.8153-2.86753430FR
47.85053.60843460FR
47.8677.23163280FR
47.91592.28664090FR
48.01760.23634330FR
48.142-0.63823580FR
48.15486.31453240FR
48.1559-1.63919960FR
48.2314-4.0695840FR
48.32114.1473440FR
48.4526-2.77614090FR
48.45571.39173020FR
48.52862.26167000FR
48.57210.07392920FR
48.58157.59716350FR
48.61382.96915050FR
48.7631.84217840FR
48.77312.45156700FR
48.84092.23534540FR
48.86082.32738740FR
48.90572.451910500FR
48.94595.98185760FR
48.96844.24246850FR
49.00865.38143340FR
49.01456.79533250FR
49.06631.07322500FR
49.07292.10666200FR
49.0903-1.33873580FR
49.0927-0.35373910FR
49.41292.42794600FR
49.46573.60213400FR
49.67140.93065650FR
49.97462.30592980FR
50.5313.164314560FR
50.53752.35714750FR
41.918644.36282940GE
35.322525.02983490GR
37.531923.34074760GR
37.893523.77652640GR
37.93823.71793360GR
37.986723.72076160GR
37.989423.73769750GR
38.003823.6366160GR
38.018223.86414640GR
38.082923.83143300GR
38.226421.81533340GR
39.567920.84953520GR
39.571622.46813020GR
40.581123.01073480GR
40.675222.93833340GR
40.698623.29853700GR
40.772522.98973580GR
45.792116.02514600HR
47.476819.13926220HU
47.549219.00323700HU
47.631619.38114360HU
51.8969-8.48637960BirminghamIE
52.2523-7.12723520BirminghamIE
52.2713-9.69992800BirminghamIE
52.6541-7.24482640BirminghamIE
52.668-8.63054390BirminghamIE
53.2706-9.05674150BirminghamIE
53.3498-6.260325990BirminghamIE
53.7179-6.35613200BirminghamIE
54.2766-8.47612880BirminghamIE
36.907814.68212600IT
37.037215.08973520IT
37.494214.84949080IT
37.875112.78163260IT
37.896913.66013920IT
38.055114.9134600IT
38.391716.11252860IT
38.973616.65024560IT
39.587216.37833370IT
39.61139.00926530IT
40.16418.17123960IT
40.22839.09852460IT
40.418715.1514510IT
40.529815.89133120IT
40.558317.26424090IT
40.641117.75682680IT
40.787714.45949910IT
40.81848.90294390IT
40.9915.08292860IT
41.032816.66327930IT
41.205914.1422420IT
41.229614.77792540IT
41.462113.19192460IT
41.528115.59694280IT
41.619813.48993320IT
41.722514.54243380IT
41.854812.501427680IT
42.105714.46173480IT
42.173813.64182820IT
42.318714.00833240IT
42.505511.97243500IT
42.670612.40412820IT
42.678713.74793600IT
42.765711.23062960IT
43.006513.54813480IT
43.104812.64440IT
43.16311.45314060IT
43.169813.27723360IT
43.476110.6229560IT
43.487213.20562460IT
43.524311.9193520IT
43.692312.63693120IT
43.828111.21395400IT
43.95367.82983200IT
44.032512.19917100IT
44.22329.75942920IT
44.25828.32523380IT
44.344811.95494000IT
44.44211.28985760IT
44.4519.05724640IT
44.46677.55914600IT
44.54210.90654330IT
44.604810.50673670IT
44.69279.95673910IT
44.754211.78222560IT
44.82889.59743380IT
44.83538.18882720IT
44.85378.6473100IT
44.967111.85373600IT
45.02649.03484850IT
45.135610.85013260IT
45.17367.37912700IT
45.19269.89364270IT
45.392311.77876550IT
45.42211.05678620IT
45.458812.47544870IT
45.48089.119723500IT
45.55228.1964540IT
45.617711.46493820IT
45.73629.84214720IT
45.757310.35167930IT
45.779813.62453120IT
45.809412.21133940IT
45.85718.79994840IT
45.86558.33884760IT
45.93059.15723610IT
46.129911.2022760IT
46.13579.91823180IT
46.193313.01437150IT
46.290712.16462780IT
46.664511.38933380IT
54.891723.92212620LT
55.150822.9553220LT
55.169423.88134750LT
55.930225.35593480LT
56.987424.10594750LV
49.81536.12963940LX
47.025228.85093440MD
41.987621.49023480MK
35.937514.37546120MT
50.88665.96193440NL
51.10765.86265720NL
51.37126.17112420NL
51.42045.4013420NL
51.43755.48173160NL
51.49244.03783120NL
51.58864.78132900NL
51.5985.09232440NL
51.6865.302713100NL
51.80645.258512640NL
51.84715.86354450NL
51.91764.48873790NL
51.98055.90592680NL
52.0235.03614920NL
52.0245.5572840NL
52.07874.31724870NL
52.08795.11622680NL
52.13265.291313740NL
52.15185.04512700NL
52.15544.49162760NL
52.22086.89932800NL
52.22445.17647900NL
52.30814.94424600NL
52.37284.90676700NL
52.51136.09032760NL
52.63074.75053120NL
52.73086.47235740NL
52.78476.90092860NL
53.2186.57072620NL
59.732610.79136450NO
59.934210.79947780NO
50.21819.0024160PL
51.813519.44510450PL
52.107721.081529210PL
52.265817.62522860PL
52.28221.03863000PL
37.0213-7.93382680MadridPT
38.525-8.89866120MadridPT
38.7367-9.133919060MadridPT
39.2322-8.6862620MadridPT
39.3999-8.22452720MadridPT
39.7425-8.80642760MadridPT
40.2108-8.42215640MadridPT
40.6266-8.64792840MadridPT
40.6447-7.30442780MadridPT
40.6592-7.91473460MadridPT
41.1515-8.605110180MadridPT
41.5453-8.41993940MadridPT
44.390226.116126080RO
44.440326.03425960RO
44.453126.12867580RO
44.520726.13589080RO
45.794525.22653040RO
45.930324.304418170RO
44.016521.005920720RS
44.826220.45719300RS
55.816837.4999145900RU
57.38712.279222750SE
46.056314.504710090SI
46.556515.64994900SI
48.049818.25323140SK
48.066517.1553490SK
48.197617.14784570SK
48.67420.78493120SK
48.753619.29415640SK
49.135621.18673190SK
36.730731.04362780TR
37.036937.28752620TR
37.286735.73333040TR
37.869832.39944320TR
38.48927.226122280TR
38.709735.84096160TR
39.624237.32572440TR
39.919132.7538560TR
40.191429.05552460TR
40.368936.54313260TR
40.907139.80052480TR
41.010529.002555600TR
41.200736.13772900TR
48.379431.165624400UA
48.437134.90454900UA
50.442430.52217780UA
49.2044-2.1372860BirminghamUK
50.4536-3.70992960BirminghamUK
50.4769-4.42834040BirminghamUK
50.8499-0.941919360BirminghamUK
50.8647-0.12392940BirminghamUK
50.9034-3.79712820BirminghamUK
50.9553-1.36834090BirminghamUK
51.0893-0.29953180BirminghamUK
51.0970.52012840BirminghamUK
51.1703-0.75546450BirminghamUK
51.3326-0.39053440BirminghamUK
51.37750.08539240BirminghamUK
51.41560.26932480BirminghamUK
51.4249-2.65713160BirminghamUK
51.4389-0.42693460BirminghamUK
51.44770.01232800BirminghamUK
51.4535-0.18934960BirminghamUK
51.5144-0.17853140BirminghamUK
51.5168-0.18053020BirminghamUK
51.5313-0.02583100BirminghamUK
51.5491-0.36383580BirminghamUK
51.5559-0.11552600BirminghamUK
51.56780.27253280BirminghamUK
51.5699-0.10353280BirminghamUK
51.5805-0.20733910BirminghamUK
51.5844-0.34794120BirminghamUK
51.60290.07713360BirminghamUK
51.622-3.39928700BirminghamUK
51.6633-0.38792740BirminghamUK
51.7784-0.31568840BirminghamUK
51.79240.48023440BirminghamUK
51.8347-1.29953910BirminghamUK
51.8808-4.43482780BirminghamUK
51.96790.87492560BirminghamUK
51.9687-0.1532660BirminghamUK
52.0941-0.685148300BirminghamUK
52.22520.23782400BirminghamUK
52.273-0.86613060BirminghamUK
52.3304-1.48212800BirminghamUK
52.3767-1.83683520BirminghamUK
52.4658-1.98793420BirminghamUK
52.4664-1.888632500BirminghamUK
52.6388-1.02364720BirminghamUK
52.66391.233114430BirminghamUK
52.72680.1283260BirminghamUK
52.9482-3.814412840BirminghamUK
53.0054-0.8013100BirminghamUK
53.2034-3.03123340BirminghamUK
53.2582-1.40472800BirminghamUK
53.3608-1.46742600BirminghamUK
53.374-2.54962720BirminghamUK
53.4236-1.45763260BirminghamUK
53.4301-1.40922420BirminghamUK
53.4669-2.22383460BirminghamUK
53.51-2.24273280BirminghamUK
53.5178-1.46472940BirminghamUK
53.5278-0.61532440BirminghamUK
53.5478-2.65383400BirminghamUK
53.6686-1.45811700BirminghamUK
53.7526-0.30072760BirminghamUK
53.7726-2.78522900BirminghamUK
53.8316-2.98043340BirminghamUK
53.8482-2.37867000BirminghamUK
53.859-1.53863130BirminghamUK
53.9762-2.01785920BirminghamUK
54.1184-0.78913220BirminghamUK
54.5486-1.12675760BirminghamUK
54.7576-2.90546200BirminghamUK
54.8088-1.77222820BirminghamUK
54.8533-1.3942760BirminghamUK
55.2237-2.02766250BirminghamUK
55.3781-3.43616000BirminghamUK
55.4331-4.5093020BirminghamUK
55.6095-3.77233360BirminghamUK
55.7945-4.20766600BirminghamUK
55.8453-4.31126500BirminghamUK
56.7077-2.75973040BirminghamUK
57.2367-2.78212780BirminghamUK
57.8682-4.44482620BirminghamUK


Create an account to run this fully functional app with your own data instead of the above customer demo data.

You can simply copy-paste from Excel file (tab separated). Or enter data semicolon separated. Do not copy-paste table headers, but data rows only. Decimal commas are converted to decimal points, and thousands separators removed. You may want to delete records with (near) zero demand. See Free Batch Geocoder if you still need to retrieve location latitudes/longitudes.

Section "Data preparation" discusses field Demand, and more. For an explanation about optional fields: select Advanced Mode, then subsection "About optional input fields and tables" will appear, slightly further below.
SUPPLIERS
Latitude  |  Longitude  |  Supply  |  Warehouse_ID (opt)  |  Shipment_size (opt)  |  Supply_option
PREDEFINED WAREHOUSES
Warehouse_ID  |  Latitude  |  Longitude  |  Move_limit (km)  |  Capacity (opt)  |  Transport_rate_index (opt)
 

Customers

  • Warehouse_ID (= link to table Predefined warehouses) is used to assign a customer to a predefined warehouse. If left empty, the software decides to which Center‑of‑Gravity the customer will be assigned. If you specify Warehouse_ID, then the customer will be assigned to that warehouse, regardless Group.
  • Group - free format, for example "UK" - is used to force all customers within a group to be delivered by a single warehouse only , the one that comes with the lowest sum of weighted distances for this group of customers. What group means, is up to you - often used is country. Warehouse capacity constraints may cause some customers of a group to get reassigned to another warehouse. You can fill group for some customers (treated as group), and leave group blank for others (treated individually).
  • Shipment_size is used to calculate an individual customer transport rate.
    • Given two customers with equal demand, the customer with smaller shipments will pull the Center‑of‑Gravity harder than the customer with larger shipments, as transporting many small shipments is more expensive than tranporting a few large shipments. So, customers with smaller shipments will pull a Center‑of‑Gravity relatively less and vice versa.
    • The impact of individualized shipment sizes on Centers‑of‑Gravity locations will be marginal, if small and large (shipment) customers are scattered all around, which is usually the case. You can start without individualized shipment sizes.
    • Transport rates - including logic behind transforming shipment size into transport rate - are explained under section "Optional constraints and parameters".
  • Lead_time_distance (km) represents lead time requirement expressed as the maximum allowed distance from the warehouse. Customers are colored in black if warehouse distance exceeds leadtime distance. This provides a visual clue of where lead times are compromised. You can then decide to increase the number of warehouses, or to setup a predefined warehouse at a location closer to these customers (with a zero or limited move range), or accept that some customers will have a longer lead time (like in reality; a few small far-away customers should not be driving your supply chain network design!).

Suppliers

  • Warehouse_ID (= link to table Predefined warehouses) is used to assign a supplier to a warehouse. If left empty, the software decides which Center(s)-of-Gravity is/are supplied by the supplier. If set, then this supplier will not supply all warehouses directly, even if supply option "Each supplier delivers to each warehouse directly" has been selected.
  • Shipment_size is used to calculate a supplier specific transport rate. Transport rates are explained under section "Optional constraints and parameters".
  • Supply_option is used to overrule the generic supply option as selected under section "Optional constraints and parameters".
    1. Supply closest warehouse only
      i
    2. Supply each warehouse
      i
    3. Supply each warehouse via closest warehouse
      i

Predefined warehouses

  • Warehouse_ID - free format, for example "Birmingham" - is used in the Customers and Suppliers table to assign customers or suppliers to this warehouse (instead of having the software assign customers and suppliers).
  • Move_limit = 0 means a fixed location, whereas Move_limit > 0 (in km, not miles!) means a moveable location that may move within its Move limit around its coordinates.
  • Capacity is used to limit the demand that can be assigned to a warehouse. Capacity constraints may 'break' customer groups.
  • Transport_rate_index is used to adjust customer transport rates of all customers supplied from this warehouse. An index below 100 means transport from this warehouse to customers is relatively cheaper, an index larger than 100 means more expensive. Customer transport rates are multiplied by the warehouse Transport rate index/100, for all customers assigned to the warehouse. The lower this index, the more customers a warehouse will get assigned (unless other constraints prevent this).

 
Centers‑of‑Gravity
 
runs
i
Sum of weighted distances
i
Current
Minimum 

Distance / lead time / service level

Factor to convert as-the-crow-flies-distance into fastest route road distance
i
 
Color customers black if warehouse distance exceeds lead time distance
 km
i
 
 Improve service level
i
 

Closest city name

 Display CoG closest city
i
Only consider cities with a population larger than
  • City name appears as Center-of-Gravity name on the map and in reports, if you have checked 'Display closest city name'.
    • But warehouse_ID is shown as name in case of a predefined immovable warehouse.
  • When determining closest city, only cities with a population larger than the population threshold are included.
  • The database contains cities that have a population larger than 15,000, as depicted below.



Sensitivity analysis

Display 

-costs-increase-areas around Centers‑of‑Gravity

i
 

Randomize each demand quantity ± 

; using a  

 distribution

i
 

Apply constraints

Predefined warehouse locations
Fixed customer-warehouse assignments
Fixed supplier-warehouse assignments
Capacity limits
Customer groups
i
 

Supply options

Activate supply
Each supplier delivers to closest warehouse only
i

Each supplier delivers to each warehouse
i

Each supplier delivers to each warehouse via closest warehouse

i
 

Transport rates

 

Auto-size shipments per individual customer

i
 
i
Shipment size

% FTL

% FTL costs

Cost ratio
i
Costs/km
i
Transport rate
FTL
Customer
Supplier
Interdepot
Ratio supplier rate/customer rate =  
Transport cost of a customer = demand × distance warehouse-customer × customer transport rate (that becomes
customer specific if shipment size is specified in customer table - same rate logic as shown above applicable).

  • Transport rates enable differentiation between relatively less expensive FTL-like (supplier) transport and relatively more expensive LTL-like (customer) transport.
  • In order to minimize transport costs a Center‑of‑Gravity should move closer towards a customer than towards a supplier, if their volumes would be equal.
  • The ratio between supplier and customer transport rate is more important than the rates as such.
  • Under map settings you can choose to display location sizes as transport-rated volumes (volume × rate ratio), instead of plain volumes. Suppliers will then appear relatively smaller than customers, thus properly reflecting the force with which a location pulls a Center‑of‑Gravity (though in case of a supplier, this force may be split across all warehouses, dependent on selected supply option).
  • You may even enter shipment size per individual customer, to differentiate transport rates between customers. However, impact on Centers-of-Gravity locations will be marginal, if small and large (shipment) customers are scattered all around.
  • LTL transport is relatively more expensive than FTL transport. An LTL shipment size of 50% FTL brings 72% FTL costs, approximately. Thus, per each unit transported LTL transport is 1.44 times more expensive than FTL transport.
Shipment costs curve
i
LTL cost factor as % FTL cost
Shipment size as %FTL
Point   X   Y  
Start point (P0) % %
Start control point (P1) % %
End control point (P2) % %
End point (P3) % %
Just a specific point on the curve % %
Animation of Bezier curve construction
 

Customers table

  • Check constraint "Fixed customer-warehouse assignments" to assign customers to a warehouse. Demo data: customers in UK/Ireland are assigned to the predefined Birmingham warehouse (field Warehouse_ID set to "Birmingham"), and customers in Spain/Portugal to the Madrid warehouse.
  • Check constraint "Customer groups" to have all customers within a group delivered by the same single warehouse. Demo data: all customers have field Group filled with a 2-letter ISO country code. In this case group means country: each country is delivered by one warehouse only.

Predefined warehouses table (optional)

  • Check constraint "Predefined warehouse locations" to activate predefined warehouses and include those in the solution. Demo data: there is one warehouse in Birmingham/UK (cannot move, field Move limit set to 0) and one in Madrid/Spain (can move within a 200 km range around Madrid, field Move limit set to 200).
  • Check constraint "Capacity limits" to limit warehouse throughput capacities. Demo date: field Capacity is set for both Birmingham and Madrid.

Suppliers table (optional)

  • Check parameter "Activate supply" to activate supply. Demo data: there is one supply location in harbour Rotterdam/The Netherlands (supplies 71% total demand volume), and one in Bologna/Italy (supplies 29% total demand volume).
  • Suppliers - like customers - pull Centers‑of‑Gravity which will tend to move towards suppliers, as supply volumes are usually high compared to individual customer demand volumes. However, supplier transport is - due to larger shipment sizes - relatively less expensive than customer transport. Transport rates express how much less. Supplier quantity × supplier transport rate = supplier pull force. Suppliers will appear relatively smaller on the map - reflecting pull force as used in the calculations - if you check Map Settings option "Display transport rated volumes".
  • Flows from suppliers to customers via warehouse(s) are constructed automatically. Under Supply options you can chose from three options. Option “each supplier delivers to each warehouse” is the default option, and means that the supplier volume to each warehouse is pro rata the customer demand assigned to each warehouse.
 
Show outcomes of Center-of-Gravity
Distance bin width (km)
10 20 25 50 100
 Distance    Demand cum   Demand   Customers cum   Customers   # Customers 
 

 
 
 
 
Tab separated
Semicolon separated
Decimal point
Decimal comma
Copy reports
CENTERS‑OF‑GRAVITY
CoG_ID  |  Latitude  |  Longitude  |  Demand  |  Total_demand_%  |  Utilization  |  Closest_city  |  Distance_to_Closest_city
i
CUSTOMER ASSIGNMENTS
Latitude  |  Longitude  |  Demand  |  Warehouse_ID  |  Group  |  Ship_size  |  Leadtime_dist  |  CoG_ID  |  Distance  |  Transport_rate  |  Transport_costs
SERVICE LEVEL DISTANCES
Distance  |  Demand_cum_%  |  Demand_%  |  Customers_cum_%  |  Customers_%  |  Number_of_customers
 


 

Current situation

0 optimization freedom
• All warehouses as is
• All customer assignments as is,
  so warehouse capacity constraints
  adhered to as well

Realistic scenario

Some optimization freedom
• Some warehouses as is
• Some warehouses closed
• Some warehouses extended
• Some warehouses newly added
• Some customers reassignable
• Some capacity constraints

Greenfield

100% optimization freedom
• Free amount of new warehouses
  at Centers-of-Gravity locations
• All customers reassignable
• No capacity constraints
100% ←- Optimization freedom -→0%

Create greenfield solution (Basic Mode)

  • Fill out input table Customers.
  • Select the number of Centers‑of‑Gravity, and press Calculate.
  • View map and other outputs. Then change the number of Centers‑of‑Gravity and see how it affects sum of weighted distances (transport costs indicator) and service level distances.

To understand how the software calculates you can read page How to determine Centers‑of‑Gravity.

Replicate current situation (Advanced Mode)

  • Fix warehouses at their current location by filling out table Predefined warehouse with field Move_range set to 0, and checking constraint "Predefined warehouse locations".
  • Assign customers to their current warehouse by entering field Warehouse_ID in the Customers table, and checking constraint "Fixed customer warehouse assignments".

You can quickly (un)check those constraints to see how those affect outcomes.

Create realistic future scenario (Advanced Mode)

Once you have replicated the current situation you can gradually allow more optimization freedom while keeping constraints activated.
  • Investigate if current locations are optimal - given fixed customer assignments - by increasing Move_range of (some) predefined warehouses.
  • Investigate if current customer assignments are optimal - given fixed warehouse locations - by removing Warehouse_ID of (some) customers, or by unchecking constraint "Fixed customer-warehouse assignments".
  • Investigate where to open a next new warehouse by increasing the number of Centers‑of‑Gravity beyond the number of predefined warehouses. Make sure you allow (some) customers to get (re)assigned to this new warehouse.

Relaxing some constraints, you may want to implement other types of constraints:
  • Limit warehouse capacities - to constrain demand volume that can be assigned to a warehouse - by filling field Capacity in the Predefined warehouses table and activating constraint "Capacity limits". Keep in mind that in the future capacity limits may not be applicable anymore, if additional space can be rented or the owned facility expanded.
  • Group customers for single sourcing to enforce all customers within a group (free format, what group stands for is up to you) to be assigned to a single warehouse, by filling field Group in the customers table (for some or all customers) and activating constraint "Customer groups". (In the demo group stands for country. Customers are grouped per country. Group is used to avoid that customers in the western part of France are delivered by a warehouse in the UK.)

Besides, you can run a sensitivity analysis that indicates how much transport costs increase if a warehouse is located outside the Center-of-Gravity. An area around the Center-of-Gravity is drawn. At the area border the transport costs of the warehouse would increase x%. The higher x is set, the larger the (irregularly shaped) area becomes.

Add supply side (Advanced Mode)

A Center‑of‑Gravity analysis usually focuses on the demand side with its relatively high transport costs and lead time requirements. But you can add the supply side to optimize supply transport costs as well. Adding the supply side becomes more relevant if there are a few major supply locations, such as a harbour, in which case a warehouse should move towards the harbour.

Because supplier shipments are larger than customer shipments - which makes supplier transport relatively cheaper - suppliers pull Centers‑of‑Gravity relatively less than customers. Differentation between customer and supplier transport rate is handled in subsection "Optional constraints and Parameters".

Flows from suppliers to customers are constructed automatically. You chan choose from 3 supply options:
  1. Each supplier delivers to closest warehouse* only
  2. Each supplier delivers to each warehouse
  3. Each supplier delivers to each warehouse via closest warehouse*
* Closest warehouse (auto-detected) can be overruled by specifying a predefined warehouse in the supplier table

Under option 1 each supplier - like a customer - pulls one warehouse (though relatively less).
Under options 2 and 3 each supplier - unlike a customer - pulls all warehouses.

Demand side only

Centers‑of‑Gravity are pulled by customers only

Supply option 2

All Centers‑of‑Gravity are pulled towards a major supplier.

Supply option 3

Especially the closest warehouse is pulled towards a major supplier.

You can quickly (de)activate the supply side and see how this affects the Centers‑of‑Gravity locations. Note that you can no longer directly compare the solution value to the value of a model without supply.

Run sensitivity analysis

The software supports:
  • the creation of an area around each Center-of-Gravity on the map that shows where it can be located before its transport costs would increase more than X%.
  • the randomization of the demand quantity of each customer with ±X%, after which you can investigate how it affects the solution.

Remark: broader supply chain network design perspective

Transport costs are only a part of supply chain costs, and the optimal number of warehouses and their locations are driven by many quantitative and qualitative factors, such as (future) transport and warehousing rates, future demand, lead time requirements, inventory effects, supply chain risk/redundancy, contractual obligations, distance to parcel/logistics hubs, workforce availability/public transport connections, et cetera.. Nevertheless, it is common practice to do a Center‑of‑Gravity-analysis in a supply chain network design, as it provides useful insights.

Collect customer adresses and demand quantities

Retrieve customer addresses and demand quantities and/or shipment data from your system. Ideally, express demand quantities in the main transport cost driver applicable for your business: weight, volume or volumetric weight.
  • Consider seasonality: take a full year of data if your business is seasonal.

  • Demand can be based on sales order quantities × item master dimensions. But most likely, your item master will not be 100% clean. It may contain items that accidentally got 'kilogram' instead of 'gram' as UoM. This may cause large errors when calculating volumes. So, if available, then collect shipment data with actual (pay)weight or volumes.

  • Validate your input data
    • Check for zero and empty values.
    • Check item master (sold products only). For example, does kilogram/m3 make sense?
    • Check for outliers. For example, calculated shipment sizes that exceed truck capacity.
    • Check completeness. For example, compare number of orderlines to a warehouse productivity report.
    • Check top-X customers list. Major customers missing? Unknown/small customers appearing?
    • Check demand map. Gaps? Unknown large locations?

  • Though not used as input by the Centers‑of‑Gravity Calculator, product groups and sales channels may become relevant when designing your supply chain network in more detail. Define relevant product groups/levels - related to your network design questions - before data collection.


Include growth projections

Design for the future: include growth projections if those are substantial and different (per product group) per region.

Geocode adresses

Geocoding is the process of converting addresses (like a street address) into geographic coordinates (latitude and longitude). Those are used for creating locations and flows on the map, and in (distance) calculations. See Free Batch Geocoder or Batch Geocoder if you still need to retrieve latitudes and longitudes of locations.

Consider harbours

If far-away-customers are delivered via an exit harbour, then put the aggregated far-away-customers' demand on top of that harbour, instead of their original location in the demand country. The harbour may be located in opposite direction of the demand country, seen from a warehouse perspective, and a warehouse should be pulled in the right direction in the optimization process!

Consider regional setups

You may want to split your data set. For instance, if you already know that you will operate a warehouse/warehouses in the UK to deliver UK/IE customers only, then split your data set into 'UK data' and 'mainland Europe data' and run the model for both sets separately. If it is about a single UK warehouse only, then - alternatively - you can link UK/IE customers to a predefined UK warehouse (that is allowed to move), without having to split the data set.

Optional: Collect supplier adresses and supply quantities

You may want to add suppliers so supplier (and interdepot) transport costs are also taken into account when optimizing Centers‑of‑Gravity.

Software performance

Centers‑of‑Gravity Calculator runs much faster - like a few seconds versus several minutes - than Llamasoft (test 2017) and Excel Solver (test 2018), and finds the same optimal locations (basic model test).

Algorithms

Core algorithms are explained in full on this separate webpage How to calculate Centers-of-Gravity