/// <summary> /// Initializes hypermaps of lists /// </summary> static ListHypManager InitializeHypermaps() { FileStream ftame = null; if (File.Exists("string_archive.txt")) { ftame = new FileStream("string_archive.txt", FileMode.Open); } if (!File.Exists("000.txt")) { throw new Exception("File 000.txt is required for processing Flyspeck linear programs"); } FileStream fdefs = new FileStream("000.txt", FileMode.Open); ListHypManager hypermaps = null; try { hypermaps = new ListHypManager(ftame != null ? new StreamReader(ftame) : null, new StreamReader(fdefs)); } finally { if (ftame != null) { ftame.Close(); } fdefs.Close(); } return(hypermaps); }
/// <summary> /// Creates a list hypermap from its string representation /// </summary> /// <param name="str"></param> public ListHyp(string str, ListHypManager manager) { this.Manager = manager; this.rawString = str; this.list = new List <List <int> >(); string[] els = str.Split(' '); this.Id = els[0]; for (int i = 2; i < els.Length;) { string el = els[i++]; if (el == null || el == "") { continue; } int n = int.Parse(el); List <int> face = new List <int>(); for (int k = 0; k < n; k++) { el = els[i++]; face.Add(int.Parse(el)); } list.Add(face); } }
/// <summary> /// Processes all Flyspeck linear programs in the current directory /// </summary> static void ProcessFlyspeckLP() { ListHypManager hypermaps = InitializeHypermaps(); // GenerateExamples(); string[] files = Directory.GetFiles(".", "*.lp"); FileStream fs = new FileStream("all_tests.hl", FileMode.Create); StreamWriter w = new StreamWriter(fs); w.WriteLine("let start = Sys.time();;"); int i = 1; foreach (string file in files) { string name = new FileInfo(file).Name; string[] els = name.Split('.'); ListHyp hypermap = hypermaps[els[0]]; hypermap.ComputeAllSets(); ProcessLP(els[0], new LpNumber(12), hypermap); w.WriteLine("\"Case: {0}/{1}\";;", i++, files.Length); w.WriteLine("let _ = needs \"{0}\" in Sys.time() -. start;;", els[0] + "_out.hl"); // break; } w.Flush(); fs.Close(); }
/// <summary> /// Creates a list hypermap from its string representation /// </summary> /// <param name="str"></param> public ListHyp(string str, ListHypManager manager) { this.Manager = manager; this.rawString = str; this.list = new List<List<int>>(); string[] els = str.Split(' '); this.Id = els[0]; for (int i = 2; i < els.Length;) { string el = els[i++]; if (el == null || el == "") continue; int n = int.Parse(el); List<int> face = new List<int>(); for (int k = 0; k < n; k++) { el = els[i++]; face.Add(int.Parse(el)); } list.Add(face); } }
/// <summary> /// Creates a list hypermap from the given list of numbers /// </summary> /// <param name="data"></param> /// <param name="manager"></param> public ListHyp(List<List<int>> data, ListHypManager manager) : this(manager) { // Make a deep copy foreach (var f0 in data) { List<int> f = new List<int>(); f.AddRange(f0); this.list.Add(f); } }
// Main static int Main(string[] args) { try { FileStream flog = new FileStream("log.txt", FileMode.Create); log = new StreamWriter(flog); using (log) { // GenerateArithTest(); // return; // Flyspeck if (args.Length == 0 || args.Length == 1) { ListHypManager hypermaps = InitializeHypermaps(); Console.WriteLine("Processing Flyspeck linear program(s)"); Console.WriteLine(); if (args.Length == 1) { ProcessFlyspeckLP(args[0], hypermaps); } else { ProcessFlyspeckLPs(hypermaps); } return(0); } // Incorrect number of arguments if (args.Length != 2) { Console.WriteLine("Usage: LP-HL lp_name upper_bound"); Console.WriteLine("Files {lp_name}.lp and {lp_name}.txt must be in the current directory."); Console.WriteLine("{upper_bound} is a decimal number"); return(1); } // Specific LP string name = args[0]; LpNumber upperBound = new LpNumber(decimal.Parse(args[1])); ProcessLP(name, upperBound, null, false, true); } } catch (Exception e) { Console.Error.WriteLine("ERROR: {0}", e.Message); return(2); } return(0); }
/// <summary> /// Creates a list hypermap from the given list of numbers /// </summary> /// <param name="data"></param> /// <param name="manager"></param> public ListHyp(List <List <int> > data, ListHypManager manager) : this(manager) { // Make a deep copy foreach (var f0 in data) { List <int> f = new List <int>(); f.AddRange(f0); this.list.Add(f); } }
/// <summary> /// Processes one Flyspeck LP /// </summary> /// <param name="fname"></param> static string ProcessFlyspeckLP(string fname, ListHypManager hypermaps) { FileStream info = new FileStream(fname, FileMode.Open); try { string name; bool infeasible; ListHyp hypermap = hypermaps.ComputeHypermap(new StreamReader(info), out name, out infeasible); ProcessLP(name, new LpNumber(12), hypermap, infeasible, false); return(name); } finally { info.Close(); } }
/// <summary> /// Initializes hypermaps of lists /// </summary> static ListHypManager InitializeHypermaps() { FileStream ftame = new FileStream("tame_archive.txt", FileMode.Open); FileStream fdefs = new FileStream("000.txt", FileMode.Open); ListHypManager hypermaps = null; try { hypermaps = new ListHypManager(new StreamReader(ftame), new StreamReader(fdefs)); } finally { ftame.Close(); fdefs.Close(); } return(hypermaps); }
/// <summary> /// Processes all Flyspeck linear programs in the current directory /// </summary> static void ProcessFlyspeckLPs(ListHypManager hypermaps) { // GenerateExamples(); string[] files = Directory.GetFiles(".", "flyspeck*.txt"); // FileStream fs = new FileStream("all_tests.hl", FileMode.Create); // StreamWriter w = new StreamWriter(fs); // w.WriteLine("let start = Sys.time();;"); // int i = 1; foreach (string file in files) { string name = ProcessFlyspeckLP(file, hypermaps); // w.WriteLine("\"Case: {0}/{1}\";;", i++, files.Length); // w.WriteLine("let _ = needs \"{0}\" in Sys.time() -. start;;", name + "_out.hl"); // break; } // w.Flush(); // fs.Close(); }
/// <summary> /// Private constructor /// </summary> /// <param name="manager"></param> private ListHyp(ListHypManager manager) { this.Manager = manager; this.list = new List<List<int>>(); }
/// <summary> /// Initializes hypermaps of lists /// </summary> static ListHypManager InitializeHypermaps() { FileStream ftame = new FileStream("tame_archive.txt", FileMode.Open); FileStream fdefs = new FileStream("000.txt", FileMode.Open); ListHypManager hypermaps = null; try { hypermaps = new ListHypManager(new StreamReader(ftame), new StreamReader(fdefs)); } finally { ftame.Close(); fdefs.Close(); } return hypermaps; }
/// <summary> /// Private constructor /// </summary> /// <param name="manager"></param> private ListHyp(ListHypManager manager) { this.Manager = manager; this.list = new List <List <int> >(); }