All Projects β†’ DiegoVicen β†’ ntnu-som

DiegoVicen / ntnu-som

Licence: MIT License
Using Self-Organizing Maps for Travelling Salesman Problem

Programming Languages

python
139335 projects - #7 most used programming language
TeX
3793 projects

Projects that are alternatives of or similar to ntnu-som

python-neuron
Neuron class provides LNU, QNU, RBF, MLP, MLP-ELM neurons
Stars: ✭ 38 (+22.58%)
Mutual labels:  neurons, ann
DESOM
🌐 Deep Embedded Self-Organizing Map: Joint Representation Learning and Self-Organization
Stars: ✭ 76 (+145.16%)
Mutual labels:  som, kohonen-map
kohonen-maps
Implementation of SOM and GSOM
Stars: ✭ 62 (+100%)
Mutual labels:  som, kohonen-map
treestoolbox
TREES toolbox
Stars: ✭ 20 (-35.48%)
Mutual labels:  neurons
NumPyANN
Implementation of Artificial Neural Networks using NumPy
Stars: ✭ 85 (+174.19%)
Mutual labels:  ann
cplex-example
Solving a TSP with the CPLEX C++ API.
Stars: ✭ 40 (+29.03%)
Mutual labels:  tsp
spiketorch
Experiments with spiking neural networks (SNNs) in PyTorch. See https://github.com/BINDS-LAB-UMASS/bindsnet for the successor to this project.
Stars: ✭ 83 (+167.74%)
Mutual labels:  neurons
VeRyPy
A python library with implementations of 15 classical heuristics for the capacitated vehicle routing problem.
Stars: ✭ 166 (+435.48%)
Mutual labels:  tsp
BrainModels
Brain models implementation with BrainPy
Stars: ✭ 36 (+16.13%)
Mutual labels:  neurons
Spam-detection
Email Spam-detection is an ANN app with TensorFlow. The idea is simple - given an email you’ve never seen before, determine whether or not that email is Spam
Stars: ✭ 31 (+0%)
Mutual labels:  ann
Blur-and-Clear-Classification
Classifying the Blur and Clear Images
Stars: ✭ 88 (+183.87%)
Mutual labels:  ann
CorBinian
CorBinian: A toolbox for modelling and simulating high-dimensional binary and count-data with correlations
Stars: ✭ 15 (-51.61%)
Mutual labels:  neurons
sparse-som
Efficient Self-Organizing Map for Sparse Data
Stars: ✭ 17 (-45.16%)
Mutual labels:  som
EmbedSOM
Fast embedding ot multidimensional datasets, great for cytometry data
Stars: ✭ 22 (-29.03%)
Mutual labels:  som
RecPlate-lib
基于BPη₯žη»η½‘η»œηš„θ½¦η‰Œθ―†εˆ«η³»η»Ÿ
Stars: ✭ 41 (+32.26%)
Mutual labels:  ann
navis
Python 3 library for analysis of neuroanatomical data
Stars: ✭ 68 (+119.35%)
Mutual labels:  neurons
optimizer-api
Unified API for multiple optimizer engines
Stars: ✭ 26 (-16.13%)
Mutual labels:  tsp
tsplib95
Library for working with TSPLIB files.
Stars: ✭ 48 (+54.84%)
Mutual labels:  tsp
timestamp
Time-Stamp Protocol (TSP) implementation for Go as specified in RFC3161
Stars: ✭ 51 (+64.52%)
Mutual labels:  tsp
optimization
Routing optimization module module for Itinero.
Stars: ✭ 47 (+51.61%)
Mutual labels:  tsp

Self-Organizing Maps for Travelling Salesman Problem

Introduction

Self-organizing maps (SOM) or Kohonen maps are a type of artificial neural network (ANN) that mixes in an interesting way the concepts of competitive and cooperative neural networks. A SOM behaves as a typical competitive ANN, where the neurons fight for a case. The interesting twist added by Kohonen is that when a neurons wins a case, the prize is shared with its neighbors. Typically, the neighborhood is bigger at the beginning of the training, and it shrinks in order to let the system converge to a solution.

Applying SOM to TSP

One of the most interesting applications of this technique is applying it to the Travelling Salesman Problem, in which we can use a coordinate map and trace a route using the neurons in the ANN. By defining weight vectors as positions in the map, we can iterate the cities and treat each one as a case that can be won by a single neuron. The neuron that wins the case gets it weight vector updated to be closer to the city, but also its neighbors get updated. The neurons are placed in a 2D space, but they are only aware of a single dimension in their internal ANN, so their behavior is like an elastic ring that will eventually fit all the cities in the shortest distance possible.

Kohonen Maps in Uruguay

The method will rarely find the optimal route among the cities, and it is quite sensitive to changing the parameters, but it usually lays more than acceptable results taking into account the time consumed.

In the repository you can find the source code to execute it (in Python 3) as well as the necessary maps in the assets/ folder (already trimmed to be used in the code). The maps used have been extracted from the TSP page in University of Waterloo. There is also a diagrams/ folder that contains all the execution snapshots that had to be included in the report (present as well as a .tex file).


The code present in this repository was delivered as Project 3 in the IT3105 Artificial Intelligence Programming course in the Norwegian University of Science and Technology the course 2016-2017. The code was developed by Leonard Kleinhans and Diego Vicente. The code is licensed under MIT License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].