Clusterizator.Krab.Calculators.LambdaCalculator.Calculate C# (CSharp) Method

Calculate() public method

Lambda-distance calculation method.
public Calculate ( GraphManager graph, double normalizedDistanceWeight, double distanceWeight ) : void
graph GraphManager /// Connections graph. ///
normalizedDistanceWeight double /// The normalized distance weight. ///
distanceWeight double /// The distance weight. ///
return void
        public void Calculate(GraphManager graph, double normalizedDistanceWeight, double distanceWeight)
        {
            for (int i = 0; i < graph.Connections.Count; i++)
            {
                graph.Connections[i].Lambda = Math.Pow(graph.Connections[i].Tau, normalizedDistanceWeight) *
                                         Math.Pow(graph.Connections[i].Distance, distanceWeight);
            }
        }

Usage Example

        public void ThreePointsTest()
        {
            var node1 = new GraphElement(new[] { 15.0 }, "node1");
            var node2 = new GraphElement(new[] { 10.0 }, "node2");
            var node3 = new GraphElement(new[] { -3.0 }, "node3");

            var el = new List<GraphElement> { node1, node2, node3 };

            var conn1 = new Connection(0, 1);
            var conn2 = new Connection(0, 2);
            var conn3 = new Connection(1, 2);

            var graph = new List<Connection> { conn1, conn2, conn3 };

            var gm = new GraphManager(graph, el);

            ICalculator calculator = new LinearCalculator();
            calculator.Calculate(gm);
            calculator = new NormalizedLinearCalculator();
            calculator.Calculate(gm);
            calculator = new TauStarCalculator();
            calculator.Calculate(gm);
            calculator = new TauCalculator();
            calculator.Calculate(gm);
            var lambdaCalculator = new LambdaCalculator();
            lambdaCalculator.Calculate(gm, 2, 1);
            Assert.AreEqual(57, Math.Round(gm.Connections[0].Lambda * 1000));
            Assert.AreEqual(678, Math.Round(gm.Connections[2].Lambda * 100));
            Assert.AreEqual(18, gm.Connections[1].Lambda);
        }
LambdaCalculator