protected static bool ExchangeNodesInClusters(Cluster c1, Cluster c2)
        {
            if (c1.Nodes.Count == 0 || c2.Nodes.Count == 0)
            {
                return false;
            }

            int i1 = TaskController.Rnd.Next(c1.Nodes.Count);
            int i2 = TaskController.Rnd.Next(c2.Nodes.Count);

            Node node1 = c1.Nodes[i1];
            Node node2 = c2.Nodes[i2];

            int volume1 = c1.Volume - node1.Volume;
            int volume2 = c2.Volume - node2.Volume;

            if (volume1 + node2.Volume <= c1.CapacityLimit && volume2 + node1.Volume <= c2.CapacityLimit)
            {
                c1.RemoveNode(node1);
                c2.RemoveNode(node2);

                c1.AddNode(node2);
                c2.AddNode(node1);

                return true;
            }

            return false;
        }
        protected static void MoveNodeFromOneClusterToAnother(Cluster cluster1, Cluster cluster2)
        {
            int nodeIndex = TaskController.Rnd.Next(cluster1.Nodes.Count);

            Node node = cluster1.Nodes[nodeIndex];

            cluster1.RemoveNode(node);
            cluster2.AddNode(node);
        }