public void AddSomeFinishedWork(long ID, int Piece, MappedAnswer[] results) { if (!this.OriginalTasks.PieceHasBeenWorked(ID, Piece)) { this.CurrentTasks.AddCompletedWork(ID, results); } }
public void AddNew(long ID, MappedAnswer task) { if (task.ReduceKey == long.MaxValue) { task.ReduceKey = GetNewPlace(ID); this.identifier[ID].Add(task.ReduceKey, false); } }
public TaskInfoReduce(long ID, MappedAnswer[] task, byte[] WorkDll, string ReturnIP, int ReturnPort) : base(ID, WorkDll, ReturnIP, ReturnPort) { this.task = new List<MappedAnswer>(); foreach (var item in task) { this.task.Add(item); } }
public void AddFinishedWork(long ID, long ReduceID, MappedAnswer[] work) { if (this.ReduceList.CheckAndSwitch(ID, ReduceID)) { this.CurrentTasks.Remove(ID, ReduceID); this.ReduceTasks.Remove(ID, ReduceID); this.ReduceTasks.AddFinishedWork(ID, work); } }
public void AddCompletedWork(long ID, MappedAnswer[] mapping) { Monitor.Enter(tasks); try { if (tasks.ContainsKey(ID)) { tasks[ID].AddCompletedWork(mapping); } } finally { Monitor.Exit(tasks); } }
public void AddCompletedWork(MappedAnswer[] mappedAnswer) { Monitor.Enter(this.task); try { foreach (var item in mappedAnswer) { this.task.Add(item); } } finally { Monitor.Exit(this.task); } }
public void AddFinishedWork(long ID, MappedAnswer[] MappedData) { if (this.tasks.ContainsKey(ID)) { Monitor.Enter(this.tasks); try { tasks[ID].AddCompletedWork(MappedData); } finally { Monitor.Exit(this.tasks); } } }
public MappedAnswer[] Reduce(MappedAnswer[] mappedData) { Console.WriteLine("In the reduce"); MappedAnswer[] ma = null; if(null != mappedData[0] && null != mappedData[1]) { List<double[]> data1 = (List<double[]>)mappedData[0].Value; List<Cannon> family1 = new List<Cannon>(); foreach (var item in data1) { family1.Add(new Cannon() { Angle = item[0], Force = item[1], minimumForce = item[2], maximumForce = item[3], minimumAngle = item[4], maximumAngle = item[5], legthToPig = item[6], wallHeight = item[9]}); } List<double[]> data2 = (List<double[]>)mappedData[1].Value; List<Cannon> family2 = new List<Cannon>(); foreach (var item in data2) { family2.Add(new Cannon() { Angle = item[0], Force = item[1], minimumForce = item[2], maximumForce = item[3], minimumAngle = item[4], maximumAngle = item[5], legthToPig = item[6], wallHeight = item[9] }); } List<Cannon> combinedFamily = new List<Cannon>(); for (int i = 0; i < family1.Count(); i++) { combinedFamily.Add(family1[i]); combinedFamily.Add(family2[i]); } Family newGeneration = new Family(combinedFamily, family1[0].wallHeight); newGeneration.AddRandomCannons(10, 2000); newGeneration.fireAllCannons(); Cannon[] answer = newGeneration.getFittest(100).ToArray(); List<double[]> cannonConversion = new List<double[]>(); for (int i = 0; i < answer.Length; i++) { cannonConversion.Add(new double[] { answer[i].Angle, answer[i].Force, answer[i].minimumForce, answer[i].maximumForce, answer[i].minimumAngle, answer[i].maximumAngle, answer[i].legthToPig, answer[i].distanceFired, answer[i].fitness, answer[i].wallHeight }); } Console.WriteLine("Best is " + answer[0].distanceFired + " for " + answer[0].legthToPig); ma = new MappedAnswer[1]; ma[0] = new MappedAnswer("", cannonConversion); } return ma; }
public MappedAnswer[] Map(object data) { ReduceResult SomeData = (ReduceResult)data; double[] pigDataArray = (double[])SomeData.values; PigData pigData = new PigData() { distanceToPig = pigDataArray[0], generations = (int)pigDataArray[1], maximumforce = pigDataArray[2], wallheight = pigDataArray[2] }; Family generation = new Family(pigData.wallheight); generation.AddRandomCannons(500, pigData.maximumforce); generation.fireAllCannons(); Cannon[] answer = generation.getFittest(100).ToArray(); List<double[]> cannonConversion = new List<double[]>(); Console.WriteLine("Best is " + answer[0].distanceFired + " for " + pigData.distanceToPig); for (int i = 0; i < 100; i++) { cannonConversion.Add(new double[] { answer[i].Angle, answer[i].Force, answer[i].minimumForce, answer[i].maximumForce, answer[i].minimumAngle, answer[i].maximumAngle, answer[i].legthToPig, answer[i].distanceFired, answer[i].fitness, answer[i].wallHeight}); } MappedAnswer[] ma = new MappedAnswer[1]; ma[0] = new MappedAnswer("", cannonConversion); return ma; }
public MappedAnswer[] Reduce(MappedAnswer[] mappedData) { Console.WriteLine("In the Reduce!"); double totalHits = 0; double totalThrows = 0; for (int i = 0; i < mappedData.Length; i++) { if(mappedData[i] != null) { double hits = double.Parse(mappedData[i].Key); totalHits += hits; totalThrows += (double)mappedData[i].Value; } } Console.WriteLine("adding together hits " + totalHits + " with a total Throw of " + totalThrows); // double answer = total / count; return new MappedAnswer[] { new MappedAnswer() { Key = "" + totalHits, Value = totalThrows } }; //Console.WriteLine("Reducing " + mappedData[0].Value); //int count = 0; //for (int i = 0; i < mappedData.Length; i++) //{ // if(mappedData[i] != null) // { // count += (int)mappedData[i].Value; // } //} //return new MappedAnswer[] { new MappedAnswer(count.ToString(), count) }; }
internal MappedAnswer MatchReduceKey(long reduceKey, MappedAnswer work) { MappedAnswer match = null; Monitor.Enter(this.task); try { for (int i = 0; i < this.task.Count() && match == null; i++) { if(task[i].ReduceKey == reduceKey && task[i] != work && !task[i].isWorked) { match = task[i]; } } } finally { Monitor.Exit(this.task); } return match; }
public void AddSomeFinishedWork(long ID, int Piece, MappedAnswer[] results) { this.TaskHandler.AddSomeFinishedWork(ID, Piece, results); }
public void AddFinishedWork(long ID, long ReduceID, MappedAnswer[] work) { this.TaskHandler.AddFinishedWork(ID, ReduceID, work); }
private void SendWork(MappedAnswer[] ma, TaskInfoCurrentlyWorking ticw, Routing Route) { ReduceList.AddNew(ticw.ID, ma[0]); if (ma[1] != null) { ma[1].Sent(); ma[1].ReduceKey = ma[0].ReduceKey; } CreateAndSendMessage(ma, ticw, Route); }
private void CreateAndSendMessage(MappedAnswer[] ma, TaskInfoCurrentlyWorking ticw, Routing Route) { ReduceMessage rm = new ReduceMessage(); rm.Port = ManagerActor.LocalPort; rm.ReduceDLL = ticw.WorkDLL; rm.TaskID = ticw.ID; rm.Data = ma; rm.ReduceID = ma[0].ReduceKey; new NetworkResponseActor(rm, Route.Port, Route.IP).Start(); }
private bool CheckReduceIDs(MappedAnswer work, MappedAnswer work2) { bool bothOK = false; if((work2 != null && work.ReduceKey == long.MaxValue && work2.ReduceKey == long.MaxValue) || (work2 != null && work.ReduceKey == work2.ReduceKey)) { bothOK = true; } return bothOK; }