using System;
using System.Collections.Generic;
using HeuristicLab.Common;
using HeuristicLab.Core;
using HeuristicLab.Data;
using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
namespace HeuristicLab.Problems.PTSP {
///
/// Represents a distance matrix of a Traveling Salesman Problem.
///
[Item("DistanceMatrix", "Represents a distance matrix of a Traveling Salesman Problem.")]
[StorableClass]
public sealed class DistanceMatrix : DoubleMatrix {
[StorableConstructor]
private DistanceMatrix(bool deserializing) : base(deserializing) { }
private DistanceMatrix(DistanceMatrix original, Cloner cloner) {
throw new NotSupportedException("Distance matrices cannot be cloned.");
}
public DistanceMatrix() : base() { }
public DistanceMatrix(int rows, int columns) : base(rows, columns) { }
public DistanceMatrix(int rows, int columns, IEnumerable columnNames) : base(rows, columns, columnNames) { }
public DistanceMatrix(int rows, int columns, IEnumerable columnNames, IEnumerable rowNames) : base(rows, columns, columnNames, rowNames) { }
public DistanceMatrix(double[,] elements) : base(elements) { }
public DistanceMatrix(double[,] elements, IEnumerable columnNames) : base(elements, columnNames) { }
public DistanceMatrix(double[,] elements, IEnumerable columnNames, IEnumerable rowNames) : base(elements, columnNames, rowNames) { }
public override IDeepCloneable Clone(Cloner cloner) {
// distance matrices are not cloned for performance reasons
cloner.RegisterClonedObject(this, this);
return this;
}
}
}