SalesmanProblem = class SalesmanProblem(OrderProblem) |
|
SalesmanProblem(xdata=None, weights=None, distance='euclid', scale=None, copy=None)
Traveling Salesman Problem.
The parameters give the order in which the nodes are visited.
The result is a list of distances.
[dist( x[p[k-1]], x[p[k]] ) for k in range( len( p ) )]
The number of parameters is equal to the length of the xdata array
The parameters are initialized at [k for k in range( npars )]
Examples
--------
>>> tsm = SalesmanProblem( 100 )
>>> print( tsm )
TravelingSalesman in 2 dimensions with 100 nodes.
>>> print( tsm.npars )
100 |
|
- Method resolution order:
- SalesmanProblem
- OrderProblem
- Problem
- builtins.object
Constructor:
- SalesmanProblem( xdata=None, weights=None, distance='euclid', scale=None, copy=None )
- Traveling Salesman problem.
Parameters
----------
xdata : array_like of shape [np,ndim]
the nodes to be visited
weights : array_like
weights on the arrival nodes
distance : str or callable
to calculate the distance between point1 and point2
"manh" : Manhattan distance (1 norm) (2 or more dimensions)
"euclid" : Euclidic (2 norm) (2 or more dimensions)
"spher" : spherical, distance over sphere (2 dimensions only)
callable of the form callable( xdata, pars )
scale : None or float
scale all distances by this number.
None : take minimum distance as scale
copy : SalesmanProblem
to be copied
Methods defined here:
- acceptWeight()
- True if the distribution accepts weights.
- baseName()
- Returns a string representation of the model.
- copy()
- Copy method.
- euclidic( xdata, pars, roll=1)
- Use Euclidic distances (2-norm)
Each distance is
dis[k] = sqrt( SUM_i ( ( xdata[pars[k],i] - xdata[pars[k+roll],i] )^2 ) )
Parameters
----------
xdata : array-like of shape (ndata,ndim)
positional info in several dimensions
pars : list of indices
designating the order of the nodes
roll : int
number of positions to roll
- manhattan( xdata, pars, roll=1)
- Use Manhattan distances (1-norm)
Each distance is
dis[k] = SUM_i ( abs( xdata[pars[k],i] - xdata[pars[k+roll],i] ) )
Parameters
----------
xdata : array-like of shape (ndata,ndim)
positional info in several dimensions
pars : list of indices
designating the order of the nodess
roll : int
number of positions to roll
- minimumDistance()
- Return the smallest distance in the data.
- result( params )
- Calculates the distance between the nodes (xdata) in the order
given by the parameters (params), multiplied by the weight at the
starting node (if present), divided by the scale
Each result is
res[k] = dis[k] * weight[params[k]] / scale
Parameters
----------
params : array_like
values for the parameters.
Returns
-------
An array of distances
- spherical( xdata, pars, roll=1)
- Use distances over a 2-d unit sphere.
Each distance is calculated according to the Haversine formula.
It is assumed that the xdata is in decimal degrees: [longitude, latitude]
The results are in radian.
Parameters
----------
xdata : array-like of shape (ndata,2)
longitude, latitude info
pars : list of indices
designating the order of the nodes
roll : int
number of positions to roll
Methods inherited from OrderProblem:
Methods inherited from Problem:
|
|