Learn R Programming

movecost (version 3.0.0)

mc_cost_functions: The movecost cost-function registry

Description

mc_cost_functions() returns a data frame describing every cost function implemented in the package. The registry is the single internal source from which all analysis functions draw their cost models: each function is defined once, here, and reused everywhere (in movecost <= 2.x the same definitions were repeated across functions; the registry eliminates that duplication).

Usage

mc_cost_functions()

Arguments

Value

A data frame with one row per cost function and columns:

  • code: the identifier to pass as the funct parameter;

  • name: extended name of the cost function;

  • type: "walking time", "energy", "abstract", or "wheeled vehicle";

  • cost_unit: unit of the accumulated cost (before any user-selected time conversion);

  • uses_N, uses_WLV, uses_slcrit: whether the function responds to the terrain factor, to the W/L/V parameters, and to the critical-slope parameter respectively.

Details

Each cost function maps the terrain slope between two adjacent cells (expressed as rise over run, signed: positive uphill, negative downhill, and computed in the direction of movement) to either a walking speed or the reciprocal of a per-metre cost. In what follows, x stands for slope as rise/run calculated between adjacent cells in the direction of travel.

Functions expressing cost as walking time (speed in km/h):

Tobler's hiking function (on-path) ("t"):
\((6 * exp(-3.5 * abs(x + 0.05))) * (1/N)\)
Tobler W. (1993), Three Presentations on Geographical Analysis and Modeling, NCGIA Technical Report 93-1.

Tobler's hiking function (off-path) ("tofp"):
\((6 * exp(-3.5 * abs(x + 0.05))) * 0.6\)
as per Tobler's indication, the off-path walking speed is reduced by 0.6.

Marquez-Perez et al.'s modified Tobler hiking function ("mp"):
\((4.8 * exp(-5.3 * abs((x * 0.7) + 0.03))) * (1/N)\)
Marquez-Perez J., Vallejo-Villalta I., Alvarez-Francoso J.I. (2017), "Estimated travel time for walking trails in natural areas", Geografisk Tidsskrift-Danish Journal of Geography, 117:1, 53-62, tools:::Rd_expr_doi("10.1080/00167223.2017.1316212").

Irmischer-Clarke's hiking function (male, on-path) ("icmonp"):
\(((0.11 + exp(-(abs(x)*100 + 5)^2 / (2 * 30^2))) * 3.6) * (1/N)\)
Irmischer I.J., Clarke K.C. (2018), Measuring and modeling the speed of human navigation, Cartography and Geographic Information Science, 45(2), 177-186, tools:::Rd_expr_doi("10.1080/15230406.2017.1292150"). The original functions express speed in m/s; they are multiplied by 3.6 to obtain km/h for consistency with the other Tobler-related cost functions; slope is in percent.

Irmischer-Clarke's hiking function (male, off-path) ("icmoffp"):
\((0.11 + 0.67 * exp(-(abs(x)*100 + 2)^2 / (2 * 30^2))) * 3.6\)
the Gaussian denominator is \(2*30^2\) (=1800), the 2*sigma^2 form of equation 4 of Irmischer & Clarke (2018), shared by the on-path (equation 2) and female (equation 5) variants; unchanged from movecost <= 2.x.

Irmischer-Clarke's hiking function (female, on-path) ("icfonp"):
\(((0.95 * (0.11 + exp(-(abs(x) * 100 + 5)^2/(2 * 30^2)))) * 3.6) * (1/N)\)

Irmischer-Clarke's hiking function (female, off-path) ("icfoffp"):
\((0.95 * (0.11 + 0.67 * exp(-(abs(x) * 100 + 2)^2/(2 * 30^2)))) * 3.6\)

Uriarte Gonzalez's walking-time cost function ("ug"):
\(1 / ((0.0277 * (abs(x)*100) + 0.6115) * N)\)
Chapa Brunet T., Garcia J., Mayoral Herrera V., Uriarte Gonzalez A. (2008), GIS landscape models for the study of preindustrial settlement patterns in Mediterranean areas, in Geoinformation Technologies for Geo-Cultural Landscapes (pp. 255-273), CRC Press, tools:::Rd_expr_doi("10.1201/9780203881613.ch12"). The function originally expresses walking time in seconds; its reciprocal is used internally so that the accumulated value corresponds to time. Unlike in the original formulation, the pixel resolution is not embedded in the formula because the graph machinery accounts for the actual distance between cell centres.

Marin Arroyo's walking-time cost function ("ma"):
\(ifelse(x < 0, 1 / ((0.6 * ((abs(x)*100)/23+1))*N), 1 / ((0.6 * ((abs(x)*100)/11+1))*N))\)
Marin Arroyo A.B. (2009), The use of optimal foraging theory to estimate Late Glacial site catchment areas from a central place: the case of eastern Cantabria, Spain, Journal of Anthropological Archaeology 28, 27-36. Note: in movecost <= 2.x the downhill branch could never be selected because the test was applied to the absolute slope; version 3.0 evaluates the signed slope, so downhill movement now correctly uses the gentler divisor (23), as in the original publication. Results for downhill movement therefore differ (correctly) from movecost <= 2.x.

Alberti's Tobler hiking function modified for pastoral foraging excursions ("alb"):
\((6 * exp(-3.5 * abs(x + 0.05))) * 0.25\)
Alberti G. (2019), Locating potential pastoral foraging routes in Malta through the use of a Geographic Information System. The Tobler function is rescaled by 0.25, i.e. the ratio between the average flock speed (1.5 km/h) and the maximum human walking speed (about 6.0 km/h) on favourable slopes.

Garmy, Kaddouri, Rozenblat, and Schneider's hiking function ("gkrs"):
\((4 * exp(-0.008 * ((atan(abs(x))*180/pi)^2))) * (1/N)\)
slope in degrees; see Herzog I. (2020), Spatial Analysis Based on Cost Functions, in Gillings M., Haciguzeller P., Lock G. (eds), "Archaeological Spatial Analysis. A Methodological Guide", Routledge: New York, 333-358.

Rees' hiking function ("r"):
\(((1 / (0.75 + 0.09 * abs(x) + 14.6 * (abs(x))^2)) * 3.6) * (1/N)\)
Rees W.G. (2004), Least-cost paths in mountainous terrain, Computers & Geosciences, 30(3), 203-209. Speed transposed from m/s to km/h.

Kondo-Seino's modified Tobler hiking function ("ks"):
\(ifelse(x >= -0.07, (5.1 * exp(-2.25 * abs(x + 0.07))) * (1/N), (5.1 * exp(-1.5 * abs(x + 0.07))) * (1/N))\)
Kondo Y., Seino Y. (2010), GPS-aided Walking Experiments and Data-driven Travel Cost Modeling on the Historical Road of Nakasendo-Kisoji (Central Highland Japan), in Frischer B., Webb Crawford J., Koller D. (eds), Making History Interactive, CAA Proceedings of the 37th International Conference (BAR International Series S2079), Archaeopress, Oxford, 158-165. Note: in movecost <= 2.x the steep-downhill branch could never be selected because the test was applied to the absolute slope; version 3.0 evaluates the signed slope as intended by Kondo and Seino, so walking speed on downhill gradients steeper than -7% now correctly uses the gentler decay coefficient (1.5). Results on such gradients therefore differ (correctly) from movecost <= 2.x.

Tripcevich's hiking function ("trp"):
\(((4.028*46^2)/(((atan(abs(x))*180/pi)+4.127)^2+46^2))*(1/N)\)
Tripcevich N. (2008), Estimating Llama caravan travel speeds: ethno-archaeological fieldwork with a Peruvian salt caravan.

Function for wheeled vehicles:

Wheeled-vehicle critical slope cost function ("wcs"):
\(1 / ((1 + ((abs(x)*100) / sl.crit)^2) * N)\)
where sl.crit (critical slope, in percent) is "the transition where switchbacks become more effective than direct uphill or downhill paths", typically in the range 8-16; Herzog I. (2016), Potential and Limits of Optimal Path Analysis, in Bevan A., Lake M. (eds), Computational Approaches to Archaeological Spaces (pp. 179-211), Routledge.

Functions expressing abstract cost:

Relative energetic expenditure ("ree"):
\(1 / ((tan((atan(abs(x))*180/pi)*pi/180) / tan(1*pi/180)) * N)\)
Conolly J., Lake M. (2006), Geographic Information Systems in Archaeology, Cambridge University Press, p. 220.

Bellavia's cost function ("b"):
\(1 / (((atan(abs(x))*180/pi)+1) * N)\)
see Herzog I. (2020), cited above.

Eastman's cost function ("e"):
\(1 / ((0.031*(atan(abs(x))*180/pi)^2 - 0.025*(atan(abs(x))*180/pi) + 1) * N)\)
Vaissie E. (2021), Mobility of Paleolithic Populations: Biomechanical Considerations and Spatiotemporal Modelling, PaleoAnthropology 2021(1), 120-144 (with reference to Eastman 1999).

Functions expressing cost as metabolic energy expenditure:

Pandolf et al.'s cost function (in Watts) ("p"):
\(1 / (1.5 * W + 2.0 * (W + L) * (L / W)^2 + N * (W + L) * (1.5 * (V^2) + 0.35 * V * (abs(x)*100)))\)
where W is the walker's body weight (kg), L the carried load (kg), V the velocity in m/s, N the terrain coefficient (the \(\eta\) of the original publication, multiplying the velocity-dependent term once). If V is set to 0, it is worked out internally from the Tobler on-path function and varies with the slope. Note: movecost <= 2.x additionally multiplied the whole expression by N, applying the terrain factor twice; fixed in version 3.0 (see NEWS.md). With the default N = 1 the results coincide. Pandolf K.B., Givoni B., Goldman R.F. (1977), Predicting energy expenditure with loads while standing or walking very slowly, Journal of Applied Physiology, 43(4), 577-581, tools:::Rd_expr_doi("10.1152/jappl.1977.43.4.577").

Pandolf et al.'s cost function with downhill correction (in Watts) ("pcf"):
\(ifelse(x >= 0, 1 / (M), 1 / (M - CF))\) where M is the Pandolf et al. metabolic rate above and \(CF = N * (G*(W+L)*V/3.5) - ((W+L)*(G+6)^2/W) + (25-V^2)\) with G the slope magnitude in percent; Yokota M., Berglund L.G., Santee W.R., Buller M.J., Hoyt R.W. (2004), U.S. Army Research Institute of Environmental Medicine Technical Report T04-09. Note: in movecost <= 2.x the test selecting the downhill branch was applied to the absolute slope, so the downhill correction could never be selected; version 3.0 evaluates the signed slope, applying the Yokota et al. correction to downhill movement as intended. Results for downhill movement therefore differ (correctly) from movecost <= 2.x.

Minetti et al.'s metabolic cost function (J/(kg*m)) ("m"):
\(1 / (((280.5 * abs(x)^5) - (58.7 * abs(x)^4) - (76.8 * abs(x)^3) + (51.9 * abs(x)^2) + (19.6 * abs(x)) + 2.5) * N)\)
Minetti A.E., Moia C., Roi G.S., Susta D., Ferretti G. (2002), Energy cost of walking and running at extreme uphill and downhill slopes, Journal of Applied Physiology 93, 1039-1046. Valid for slopes in the range -0.5/0.5; outside this range its output becomes counterintuitive (see Herzog 2013), in which case the Herzog polynomial approximation ("hrz") is preferable.

Herzog's metabolic cost function (J/(kg*m)) ("hrz"):
\(1 / (((1337.8 * abs(x)^6) + (278.19 * abs(x)^5) - (517.39 * abs(x)^4) - (78.199 * abs(x)^3) + (93.419 * abs(x)^2) + (19.825 * abs(x)) + 1.64) * N)\)
Herzog I. (2016), cited above; 6th-degree polynomial approximation of Minetti et al.'s function.

Van Leusen's metabolic cost function (in Watts) ("vl"):
\(1 / (1.5 * W + 2.0 * (W + L) * (L / W)^2 + N * (W + L) * (1.5 * (V^2) + 0.35 * V * ((abs(x)*100) + 10)))\)
(terrain factor applied once, as in the Pandolf et al. equation it modifies; movecost <= 2.x applied it twice, see the note under the Pandolf entry above.) Van Leusen P.M. (2002), Pattern to process; with the amendments reported by Herzog I. (2013), Least-cost Paths - Some Methodological Issues, Internet Archaeology 36.

Llobera-Sluckin's metabolic cost function (kJ/m) ("ls"):
\(1 / ((2.635 + (17.37 * abs(x)) + (42.37 * abs(x)^2) - (21.43 * abs(x)^3) + (14.93 * abs(x)^4)) * N)\)
Llobera M., Sluckin T.J. (2007), Zigzagging: Theoretical insights on climbing strategies, Journal of Theoretical Biology 249, 206-217.

Ardigo et al.'s metabolic cost function (J/(kg*m)) ("a"):
\(1 / ((1.866 * exp(4.911*abs(x)) * V^2 - 3.773 * exp(3.416*abs(x)) * V + (45.71*abs(x)^2 + 18.90*abs(x)) + 4.456) * N)\)
Ardigo L.P., Saibene F., Minetti A.E. (2003), The optimal locomotion on gradients: walking, running or cycling?, Eur J Appl Physiol 90, 365-371. If V is set to 0, it is worked out internally from the Tobler on-path function.

Hare's metabolic cost function (cal/km) ("h"):
\(1 / ((48 + 30 / (6 * exp(-3.5 * abs(x + 0.05)))) * N)\)
Hare T.S. (2004), Using Measures of Cost Distance in the Estimation of Polity Boundaries in the Post Classic Yautepec valley, Mexico, Journal of Archaeological Science 31.

Terrain factor (N):
virtually all the implemented cost functions (with few exceptions, namely the off-path functions and Alberti's, which natively embed one) can take into account a terrain factor (parameter N; 1 by default) representing the easiness/difficulty of moving on different terrain types.

The following reference list of terrain factors is based on the data collected in Herzog, I. (2020), Spatial Analysis Based on Cost Functions, in Gillings M., Haciguzeller P., Lock G. (eds), "Archaeological Spatial Analysis. A Methodological Guide", Routledge: New York, 340 (with previous references). It is divided into two sections: section (a) reports the terrain factors to be used for cost functions measuring time; section (b) for functions measuring cost other than time.

(a) for time-based cost functions:

  • Blacktop roads, improved dirt paths, cement = 1.00

  • Lawn grass = 1.03

  • Loose beach sand = 1.19

  • Disturbed ground (former stone quarry) = 1.24

  • Horse riding path, flat trails and meadows = 1.25

  • Tall grassland (with thistle and nettles) = 1.35

  • Open space above the treeline (i.e., 2000 m asl) = 1.50

  • Bad trails, stony outcrops and river beds = 1.67

  • Off-paths = 1.67

  • Bog = 1.79

  • Off-path areas below the treeline (pastures, forests, heathland) = 2.00

  • Rock = 2.50

  • Swamp, water course = 5.00

(b) for cost functions measuring cost other than time:

  • Asphalt/blacktop = 1.00

  • Dirt road or grass = 1.10

  • Hard-surface road = 1.20

  • Light brush = 1.20

  • Ploughed field = 1.30 or 1.50

  • Heavy brush = 1.50

  • Hard-packed snow = 1.60

  • Swampy bog = 1.80

  • Sand dunes = 1.80

  • Loose sand = 2.10

Why speed-type and reciprocal-type functions are treated differently:
internally the package works with conductance (the reciprocal of cost), so walking-speed functions are used as they are (the accumulated value being the reciprocal of speed, i.e. pace, integrated over distance, which yields time), while the other functions are reciprocated so that the accumulated value corresponds to the original cost (see Nakoinz-Knitter (2016), "Modelling Human Behaviour in Landscapes", Springer, p. 183).

See Also

mc_surface

Examples

Run this code
# list all the implemented cost functions
mc_cost_functions()

Run the code above in your browser using DataLab