Portability | portable |
---|---|

Stability | provisional |

Maintainer | Richard Senington <sc06r2s@leeds.ac.uk> |

Simple Neighbourhood functions for the representation of problems to the library. All neighbourhood functions must ultimately be of the form a->[a].

This module also contains some additional code for the modeling of problems and the link between the model and the library.

- exchange :: Eq a => Int -> Int -> [a] -> [[a]]
- basicExchange :: Eq a => [a] -> [[a]]
- class (Ord b, Num b) => NumericallyPriced a b | a -> b where
- priceSolution :: a -> b

# Documentation

exchange :: Eq a => Int -> Int -> [a] -> [[a]]Source

following helper function pinched from http:www.polyomino.f2s.com*david*haskell/combinatorics.html

my code again from here on

The first type of neighbourhood is based upon combination exchange in a sequence of elements. This is appropriate for something like TSP, where order matters, but would be less useful for SAT.

It takes 2 numbers as parameters, one of which is the number of exchanges to perform, the other the maximum distance within the list. For example exchange 2 2, would change up to 2 elements in each neighbourhood, either adjacent or separated by 1 other element.

basicExchange :: Eq a => [a] -> [[a]]Source

We provide the most basic exchange system for testing

class (Ord b, Num b) => NumericallyPriced a b | a -> b whereSource

Some transformations (and the manual inspector of the search process) need to be able to extract a numeric price from a solution. To use these, the solution representation data type must be a part of the following class, please see the example code.

priceSolution :: a -> bSource