Allocation based on Network

Running programmatically

Allocates a set of demand points (Customers) to user specified number of supply points (Facilities) out of a Facilities point dataset based on the Bidirectional Network (BDN) distance/cost between the Customers and Facilities. In other words the function selects N Facilities out of K candidates to service a set of M Customer locations in such a way that each Customer is allocated to a single Facility (based on Network distance/cost) and the total distance between the Customers and selected Facilities is minimized.

The function uses heuristic vertex substitution algorithm modified from Teitz and  Bart (1968) and can handle comparatively large problems.

Inputs:

Outputs:

Notes:

Illustration:

Input Facilities and Customers - No required facilities

Allocation result

Input Facilities and Customers - Two required facilities

Allocation result

References:

Running Programmatically

(Go to TOP)

Parameters

Expression Explanation
Function Name AllocateBasedOnNetwork
<Network to Use> A String - the full name of the Network file (.etn).
<facilities dataset> A Point layer - the candidate facilities.
<customers dataset> A Point feature class or feature layer - the Customers (demand points).
<out link layer> A String - the full name of the output link layer
<out facilities layer> A String - the full name of the output selected facilities feature class
<number facilities> An integer - the number of facilities to be selected
<snap tolerance> A Double representing the snap tolerance(in the units of the spatial reference of the Network).
{Input Barrier Points} A String representing the input layer with barrier points. Must be of Point type.
{Barriers Direction Field} A String representing the name of the field in the Input Barrier Points that will indicate the direction in which the barrier defined by each point work . Must be of String type.
{facility name field} A String representing a field name - the values in this field are used to identify the facilities.
{facility type field} A String representing a field name - the values in this field are used to identify the type of the facilities.
{customer name field} A String representing a field name - the values in this field are used to identify the customers.
{Cutoff distance} A number - the maximum distance between a Facility and a Customer to be used.The units of the tolerance are the units of spatial reference of the facilities dataset if KeepSourceSref = TRUE. Otherwise - the units of spatial reference of the customers dataset.

Running the function

ETGWPath used in the table below is the full path to ETGWRun.exe (E.G. "C:\Program Files\ETSpatial Techniques\ETGeo Wizards\ETGWRun.exe")

Language Syntax
Python subprocess.call([ETGWPath, "AllocateBasedOnNetwork","Network to Use", "facilities dataset", "customers dataset", "out link layer", " out facilities layer", "number facilities","snap tolerance", "Input Barrier Points", "Barriers Direction Field", "facility name field", "facility type field","customer name field","Cutoff distance ","KeepSourceSref"])
.NET using ETGWRun.exe StartInfo.FileName = ETGWPath
StartInfo.Arguments = "AllocateBasedOnNetwork" "Network to Use" "facilities dataset" "customers dataset" "out link layer" "out facilities layer" "number facilities" "snap tolerance" "Input Barrier Points" "Barriers Direction Field" "facility name field" "facility type field" "customer name field" "Cutoff distance " "KeepSourceSref"
.NET using ETGWOutX.dll AllocateBasedOnNetwork(Network to Use,facilities dataset,customers dataset, out link layer,out facilities layer, number facilities,snap tolerance, Input Barrier Points, Barriers Direction Field, facility name field, facility type field, customer name field, Cutoff distance KeepSourceSref)
ArcPy arcpy.AllocateBasedOnNetwork(Network to Use,facilities dataset,customers dataset, out link layer,out facilities layer, number facilities,snap tolerance, Input Barrier Points, Barriers Direction Field, facility name field, facility type field, customer name field, Cutoff distance KeepSourceSref)

Notes:

(Go to TOP)