//[DllImport("GTCSP.dll")] //public static extern int generateFile(int argc, string[] argv); //public static extern int getp(int argc); //[DllImport("msvcrt.dll")] //internal static extern int _flushall(); static void Main(string[] args) { //string[] sss = {"20", "0.5", "0.6", "0.7", "3", "3", "0.7", "0.02", "80", "67", "1", ">", "file.txt"}; //generateFile(13, sss); //return; //Console.Out.WriteLine(getp(9)); //Console.In.ReadLine(); //_flushall(); Network net = new Network(); // reading events and SOPO StreamReader re = File.OpenText("numfile.txt");//"Anum1.txt");//"fn1.txt"); //"numfile.txt"); string input = re.ReadLine(); string[] s = input.Split(' '); int n; try { n = Convert.ToInt16(s[1]); // no of events } catch { Console.WriteLine("Failed to read no of events!!"); return; } if (n == 0) // no events { Console.WriteLine("No of events must be greater than 0 !!"); return; } var A = new AllenVariable[n]; for (var i = 0; i < n; i++) { try { //input = ""; //while (input.Equals("")) input = re.ReadLine(); s = input.Split(' '); A[i] = new AllenVariable(net, Convert.ToInt16(s[1]), Convert.ToInt16(s[2]), Convert.ToInt16(s[3]), Convert.ToInt16(s[4]), "A" + i); } catch { Console.WriteLine("Error occured while reading file numfile.txt !!"); return; } } re.Close(); // READING REALTIONS re = File.OpenText("symbfile.txt");//"Asym1.txt");//"fs1.txt");//"symbfile.txt"); try { re.ReadLine(); // we don't need the first line input = re.ReadLine(); // this is the number of constraints int m = Convert.ToInt16(input); // m represents the number of constraints for (int i = 0; i < m; i++) { input = re.ReadLine(); s = input.Split(' '); int firstVar = Convert.ToInt16(s[0]); int secondVar = Convert.ToInt16(s[1]); string rel = s[2]; for (int j = 0; j < rel.Length; j++) { char r = rel[j]; switch (r) { case 'P': A[firstVar].Precedes(A[secondVar]); break; case 'p': A[firstVar].Precededby(A[secondVar]); break; case 'F': A[firstVar].Finishes(A[secondVar]); break; case 'f': A[firstVar].FinishedBy(A[secondVar]); break; case 'M': A[firstVar].Meets(A[secondVar]); break; case 'm': A[firstVar].MetBy(A[secondVar]); break; case 'S': A[firstVar].Starts(A[secondVar]); break; case 's': A[firstVar].StartedBy(A[secondVar]); break; case 'D': A[firstVar].During(A[secondVar]); break; case 'd': A[firstVar].Contains(A[secondVar]); break; case 'O': A[firstVar].Overlaps(A[secondVar]); break; case 'o': A[firstVar].OverlappedBy(A[secondVar]); break; case 'E': A[firstVar].Equals(A[secondVar]); break; default: Console.WriteLine("Error occured while reading relations"); return; } } } } catch { Console.WriteLine("Error occured while reading file symbfile.txt !!"); return; } /*AllenVariable[] A = new AllenVariable[3]; * A[0] = new AllenVariable(net, 30, 60, 25, "M"); * A[1] = new AllenVariable(net, 20, 60, 30, "L"); * A[2] = new AllenVariable(net, 20, 46, 20, "J"); * A[0].meets(A[1]); * A[0].during(A[1]); * A[0].overlaps(A[1]); * A[0].starts(A[1]); * A[0].precedes(A[1]); * A[1].equals(A[2]); * A[1].starts(A[2]); * A[1].startedBy(A[2]); * A[0].equals(A[2]); * A[0].overlaps(A[2]); * A[0].overlappedBy(A[2]); * A[0].starts(A[2]); * A[0].startedBy(A[2]); * A[0].finishes(A[2]); * A[0].finishedBy(A[2]); * A[0].during(A[2]); * A[0].contains(A[2]);*/ /*AllenVariable John = new AllenVariable(net, 0, 40, 30,1, "John"); * AllenVariable Mary = new AllenVariable(net, 35, 60, 20, "Mary"); * AllenVariable Wendy = new AllenVariable(net, 0, 60, 50, "Wendy"); * AllenVariable Soccer = new AllenVariable(net, 30, 135, 105, "Soccer"); * John.equals(Mary); * John.starts(Mary); * John.startedBy(Mary); * John.meets(Mary); * John.equals(Wendy); * John.starts(Wendy); * John.startedBy(Wendy); * John.meets(Wendy); * John.overlaps(Soccer); * Mary.finishes(Wendy); * //Mary.during(Wendy); * Mary.finishedBy(Wendy); * Mary.during(Soccer); * Mary.contains(Soccer);*/ Solver solver = new AllenSolver(net); //solver.findFirst(); //solver.waitNext(); int c = 0; long timer = DateTime.Now.Ticks; StreamWriter wr = File.CreateText("Output.txt"); wr.WriteLine("Started at " + DateTime.Now); Console.WriteLine("Started at " + DateTime.Now); wr.WriteLine("================================"); Console.WriteLine("================================"); //st(); //Console.Out.WriteLine(Fibonacci(9)); //Console.Out.WriteLine(anotherway(4400)); //Console.In.ReadLine(); //return; for (solver.Start(); solver.WaitNext(); solver.Resume()) { Solution solution = solver.Solution; AllenDomain[] ad = new AllenDomain[n]; for (int k = 0; k < n; k++) { ad[k] = (AllenDomain)(A[k].Domain); } int[] s0 = new int[n]; for (int k = 0; k < n; k++) { s0[k] = solution.GetIntValue(A[k]) + ad[k].Duration; Console.Out.WriteLine(solution.GetIntValue(A[k]) + "-" + s0[k]); wr.WriteLine(solution.GetIntValue(A[k]) + "-" + s0[k]); } /*AllenDomain ad0 = (AllenDomain)(John.Domain); * AllenDomain ad1 = (AllenDomain)(Mary.Domain); * AllenDomain ad2 = (AllenDomain)(Wendy.Domain); * AllenDomain ad3 = (AllenDomain)(Soccer.Domain); * int s0 = solution.getIntValue(John) + ad0.Duration; * int s1 = solution.getIntValue(Mary) + ad1.Duration; * int s2 = solution.getIntValue(Wendy) + ad2.Duration; * int s3 = solution.getIntValue(Soccer) + ad3.Duration; * Console.Out.WriteLine(solution.getIntValue(John) + "-" + s0 + " John "); * Console.Out.WriteLine(solution.getIntValue(Mary) + "-" + s1+" Mary"); * Console.Out.WriteLine(solution.getIntValue(Wendy) + "-" + s2+" Wendy"); * Console.Out.WriteLine(solution.getIntValue(Soccer) + "-" + s3+" Soccer");*/ c++; wr.WriteLine("C==" + c); wr.WriteLine("================================"); wr.WriteLine(DateTime.Now); Console.WriteLine(DateTime.Now); Console.WriteLine("C==" + c); Console.WriteLine("================================"); // if (c==1) break; } wr.WriteLine("Finished at " + DateTime.Now); Console.WriteLine("Finished at " + DateTime.Now); wr.WriteLine("================================"); Console.WriteLine("================================"); timer = DateTime.Now.Ticks - timer; Console.Out.WriteLine("timer: " + timer / 10000 / 1000 / 60.0); wr.WriteLine("timer: " + timer / 10000); wr.Close(); //foreach (Constraint c1 in net.Constraints) //{ // Console.WriteLine(c1.ToString()); //} Console.WriteLine(c); solver.Stop(); Console.In.ReadLine(); /*CVarToVar[] df = new CVarToVar[net.Variables.Count]; * IEnumerator va = net.Variables.GetEnumerator(); * AllenVariable aa; * while (va.MoveNext()) * { * aa = (AllenVariable) va.Current; * df = aa.getConstraintsVars(); * * for (int l = 0; l < net.Variables.Count; l++) * { * if (df[l].ToString() != null) * Console.WriteLine(df[l]); * } * Console.WriteLine(); * } * * int [][][] h = NetWorkConstraints.getConstraintNetwork(net); * int[][][] BB = AllenEvents.AllenComposition;*/ }
private void doItOnce() { Session.Clear(); net = new Network(); John = new AllenVariable(net, 0, 40, 30, "John"); Mary = new AllenVariable(net, 35, 60, 20, "Mary"); Wendy = new AllenVariable(net, 0, 60, 50, "Wendy"); Soccer = new AllenVariable(net, 30, 135, 105, "Soccer"); John.Equals(Mary); John.Starts(Mary); John.StartedBy(Mary); John.Meets(Mary); John.Equals(Wendy); John.Starts(Wendy); John.StartedBy(Wendy); John.Meets(Wendy); John.Overlaps(Soccer); Mary.Finishes(Wendy); Mary.FinishedBy(Wendy); Mary.During(Soccer); Mary.Contains(Soccer); AllenDomain ad0 = (AllenDomain)(John.Domain); AllenDomain ad1 = (AllenDomain)(Mary.Domain); AllenDomain ad2 = (AllenDomain)(Wendy.Domain); AllenDomain ad3 = (AllenDomain)(Soccer.Domain); solver = new AllenSolver(net); for (solver.Start(); solver.WaitNext(); solver.Resume()) { solution = solver.Solution; Session["jd"] = ad0.Duration; Session["md"] = ad1.Duration; Session["wd"] = ad2.Duration; Session["sd"] = ad3.Duration; Session["js" + Convert.ToInt16(counter)] = solution.GetIntValue(John); Session["ms" + Convert.ToInt16(counter)] = solution.GetIntValue(Mary); Session["ws" + Convert.ToInt16(counter)] = solution.GetIntValue(Wendy); Session["ss" + Convert.ToInt16(counter)] = solution.GetIntValue(Soccer); Session["jp" + Convert.ToInt16(counter)] = ad0.Duration; Session["mp" + Convert.ToInt16(counter)] = ad1.Duration; Session["wp" + Convert.ToInt16(counter)] = ad2.Duration; Session["sp" + Convert.ToInt16(counter)] = ad3.Duration; Session["jn" + Convert.ToInt16(counter)] = solution.GetIntValue(John).ToString(); Session["mn" + Convert.ToInt16(counter)] = solution.GetIntValue(Mary).ToString(); Session["wn" + Convert.ToInt16(counter)] = solution.GetIntValue(Wendy).ToString(); Session["sn" + Convert.ToInt16(counter)] = solution.GetIntValue(Soccer).ToString(); counter += 1; } Session["done"] = true; Session["total"] = counter; Session["counter"] = 0; total.Text = "There are " + counter + " solutions"; counter = 0; Display(); Button1.Enabled = true; Button2.Enabled = true; Button3.Enabled = true; Button4.Enabled = true; if (Convert.ToInt16(Session["counter"]) == 0) { Button1.Enabled = false; Button2.Enabled = false; } if (Convert.ToInt16(Session["counter"]) == Convert.ToInt16(Session["total"]) - 1) { Button3.Enabled = false; Button4.Enabled = false; } }