natix.SimilaritySearch.MultiNeighborhoodHash.EstimateParameters C# (CSharp) Method

EstimateParameters() public static method

public static EstimateParameters ( MetricDB db, int max_instances, int k, double expected_recall, int num_estimation_queries ) : Parameters
db MetricDB
max_instances int
k int
expected_recall double
num_estimation_queries int
return Parameters
        public static Parameters EstimateParameters(MetricDB db, int max_instances, int k, double expected_recall, int num_estimation_queries)
        {
            var seq = new Sequential ();
            seq.Build (db);
            var I = new NeighborhoodHash ();
            int symbolsPerHash = 3;
            I.Build (db, symbolsPerHash);
            var Q = RandomSets.GetRandomSubSet (num_estimation_queries, db.Count);
            // k > 1 since Q is a subset of the database
            if (k == 1) {
                ++k;
            }
            ++k;
            var res_array = new HashSet<int> [Q.Length];
            for (int i = 0; i < Q.Length; ++i) {
                var s = KnrFP.GetFP (db [Q [i]], seq, k);
                res_array [i] = new HashSet<int> (s);
            }
            int num_instances = 0;
            --I.NeighborhoodExpansion;
            double cost = 0.0;
            double time = 0.0;

            do {
                ++I.NeighborhoodExpansion;
                var c = db.NumberDistances;
                var t = DateTime.Now.Ticks;
                num_instances = _EstimateParameters(k, expected_recall, I, Q, res_array);
                cost = (db.NumberDistances - c) / Q.Length * num_instances;
                time = TimeSpan.FromTicks((DateTime.Now.Ticks - t) / Q.Length).TotalSeconds * num_instances;
                Console.WriteLine("==== expansion: {0}, num_instances: {1}, search-cost: {2}, search-time: {3}", I.NeighborhoodExpansion, num_instances, cost, time);
            } while (num_instances > max_instances);

            return new Parameters() {
                Index = I,
                NumberOfInstances = num_instances
            };
        }