public double Evaluate(Configuration configuration) { GeneticsSolver geneticsSolver = new GeneticsSolver( 30, 100, new EliteSelection(), configuration.GetValueForDimension(0), configuration.GetValueForDimension(1), configuration.GetValueForDimension(2), true, false); int sumOfSolutions = 0; foreach (Formula problem in _problems) { try { Tuple <int, BitArray> solution = geneticsSolver.Solve(problem); sumOfSolutions += solution.Item1; } catch (Exception) { Console.WriteLine("Exception"); } } Console.WriteLine("Testing: {0},{1},{2}\t\t\t{3}", configuration.GetValueForDimension(0), configuration.GetValueForDimension(1), configuration.GetValueForDimension(2), sumOfSolutions); return(1 / (double)sumOfSolutions); }
static void Main(string[] args) { //////GENERATION OF DATA ////for (int variablesCount = 10; variablesCount <= 100; variablesCount += 10) ////{ //// for (int i = 0; i < 10; i++) //// { //// double ratio = 2 + (i*0.5); //// int clausulesCount = Convert.ToInt32(ratio*variablesCount); //// StreamWriter writer = File.CreateText("C:\\Users\\jan.tkacik\\Documents\\GitHub\\MI-PAA\\Data\\W3SAT\\Ratio_" + ratio + "_VariablesCount_" + variablesCount + ".dimacs"); //// for (int j = 0; j < 100; j++) //// { //// Formula problem = InstanceGenerator.InstanceGenerator.GenerateInstance(variablesCount, clausulesCount); //// writer.WriteLine("PROBLEM ID = " + j); //// writer.WriteLine(problem.ToString()); //// } //// writer.Close(); //// Console.WriteLine("Done - " + variablesCount + " - " + ratio); //// } ////} ////LOAD DATA //for (int variablesCount = 10; variablesCount <= 100; variablesCount += 10) //{ // for (int i = 0; i < 10; i++) // { // double ratio = 2 + (i * 0.5); // Dictionary<int, Formula> formulas = new Dictionary<int, Formula>(); // string[] allLines = File.ReadAllLines("C:\\Users\\jan.tkacik\\Documents\\GitHub\\MI-PAA\\Data\\W3SAT\\Ratio_" + ratio + "_VariablesCount_" + variablesCount + ".dimacs"); // bool startFlag = true; // int id = 0; // string data = ""; // foreach (string line in allLines) // { // if (startFlag) // { // if (line.Contains("PROBLEM ID")) // { // string problemID = line.Replace("PROBLEM ID = ", ""); // id = int.Parse(problemID); // startFlag = false; // data = ""; // } // } // else // { // if (string.IsNullOrWhiteSpace(line)) // { // Formula formula = new Formula(data); // formulas.Add(id, formula); // startFlag = true; // } // data += line + Environment.NewLine; // } // } // Console.WriteLine("Loaded"); // //CALCULATE RESULTS BRUTEFORCE // BruteForceSolver solver = new BruteForceSolver(); // StreamWriter writer = File.CreateText("C:\\Users\\jan.tkacik\\Documents\\GitHub\\MI-PAA\\Data\\W3SAT\\Ratio_" + ratio + "_VariablesCount_" + variablesCount + ".results"); // foreach (KeyValuePair<int, Formula> formula in formulas) // { // Stopwatch stopwatch = new Stopwatch(); // stopwatch.Start(); // Tuple<int, BitArray> solve = solver.Solve(formula.Value); // stopwatch.Stop(); // writer.WriteLine(formula.Key + "," + solve.Item1 + "," + stopwatch.ElapsedMilliseconds); // Console.WriteLine("Solved - " + formula.Key); // Console.WriteLine(solve.Item1); // Console.WriteLine(stopwatch.ElapsedMilliseconds); // } // writer.Close(); // } //} //LOAD DATA for (int variablesCount = 100; variablesCount <= 100; variablesCount += 10) { for (int i = 4; i < 10; i++) { double ratio = 2 + (i * 0.5); Dictionary <int, Formula> formulas = new Dictionary <int, Formula>(); string[] allLines = File.ReadAllLines("C:\\Users\\jantk_000\\Documents\\GitHub\\MI-PAA\\Data\\W3SAT\\Ratio_" + ratio + "_VariablesCount_" + variablesCount + ".dimacs"); bool startFlag = true; int id = 0; string data = ""; foreach (string line in allLines) { if (startFlag) { if (line.Contains("PROBLEM ID")) { string problemID = line.Replace("PROBLEM ID = ", ""); id = int.Parse(problemID); startFlag = false; data = ""; } } else { if (string.IsNullOrWhiteSpace(line)) { Formula formula = new Formula(data); formulas.Add(id, formula); startFlag = true; } data += line + Environment.NewLine; } } Console.WriteLine("Loaded -varCnt: " + variablesCount + " -ratio: " + ratio); //GridOptimizer.GridOptimizer optimizer = new GridOptimizer.GridOptimizer(3, 1); //GeneticsMetaOptimization metaOptimization = new GeneticsMetaOptimization(new List<Formula> { formulas[0] }); //double[] optimum = optimizer.Optimize(metaOptimization); //Console.WriteLine(optimum[0]); //Console.WriteLine(optimum[1]); //Console.WriteLine(optimum[2]); //Console.ReadLine(); //GeneticsSolver solver = new GeneticsSolver(30, 100, new RouletteWheelSelection(), 1, 0.13, 0.13, true, true); //StreamWriter writer = File.CreateText("C:\\Users\\jantk_000\\Documents\\GitHub\\MI-PAA\\Data\\W3SAT\\Ratio_" + ratio + "_VariablesCount_" + variablesCount + ".results.rws"); //foreach (KeyValuePair<int, Formula> formula in formulas) //{ // Stopwatch stopwatch = new Stopwatch(); // stopwatch.Start(); // Tuple<int, BitArray> solve = solver.Solve(formula.Value); // stopwatch.Stop(); // writer.WriteLine(formula.Key + "," + solve.Item1 + "," + stopwatch.ElapsedMilliseconds); // Console.WriteLine("Solved - " + formula.Key); // Console.WriteLine(solve.Item1); // Console.WriteLine(stopwatch.ElapsedMilliseconds); //} //writer.Close(); GeneticsSolver solver = new GeneticsSolver(30, 1000, new EliteSelection(), 0.98, 0.7, 0.08, true, true); StreamWriter writer = File.CreateText("C:\\Users\\jantk_000\\Documents\\GitHub\\MI-PAA\\Data\\W3SAT\\Ratio_" + ratio + "_VariablesCount_" + variablesCount + ".results.elt"); foreach (KeyValuePair <int, Formula> formula in formulas) { Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); Tuple <int, BitArray> solve = solver.Solve(formula.Value); stopwatch.Stop(); writer.WriteLine(formula.Key + "," + solve.Item1 + "," + stopwatch.ElapsedMilliseconds); Console.WriteLine("Solved - " + formula.Key); Console.WriteLine(solve.Item1); Console.WriteLine(stopwatch.ElapsedMilliseconds); } writer.Close(); //solver = new GeneticsSolver(30, 100, new RankSelection(), 0.75, 0.18, 0.05, true, true); //writer = File.CreateText("C:\\Users\\jantk_000\\Documents\\GitHub\\MI-PAA\\Data\\W3SAT\\Ratio_" + ratio + "_VariablesCount_" + variablesCount + ".results.rnk"); //foreach (KeyValuePair<int, Formula> formula in formulas) //{ // Stopwatch stopwatch = new Stopwatch(); // stopwatch.Start(); // Tuple<int, BitArray> solve = solver.Solve(formula.Value); // stopwatch.Stop(); // writer.WriteLine(formula.Key + "," + solve.Item1 + "," + stopwatch.ElapsedMilliseconds); // Console.WriteLine("Solved - " + formula.Key); // Console.WriteLine(solve.Item1); // Console.WriteLine(stopwatch.ElapsedMilliseconds); //} //writer.Close(); } } //Summarize(); Console.ReadLine(); }