private IEnumerable <Shelf> GetShelfData(RlmLearnedSessionDetails data) { var shelves = new List <Shelf>(); IDictionary <string, RlmIODetails> inputDict = data.Inputs.Where(a => a.CycleScore == 1).ToDictionary(a => a.Value, a => a); IDictionary <long, RlmIODetails> outputDict = data.Outputs.Where(a => a.CycleScore == 1).ToDictionary(a => a.CaseId, a => a); int numSlots = simSettings.NumShelves * simSettings.NumSlots; var shelf = new Shelf(); for (int i = 1; i <= numSlots; i++) { var input = inputDict[i.ToString()]; var output = outputDict[input.CaseId]; Item itemReference = itemsCache[Convert.ToInt32(output.Value)]; shelf.Add(itemReference, PlanogramOptimizer.GetCalculatedWeightedMetrics(itemReference, simSettings)); if (i % simSettings.NumSlots == 0) { shelves.Add(shelf); shelf = new Shelf(); } } return(shelves); }
public void DisplayLearningComparisonResults(RlmLearnedSessionDetails selectedData, RlmLearnedSessionDetails comparisonData) { if (enableSimulation) { tmpSelectedData = selectedData; tmpComparisonData = comparisonData; } comparisonOverlay.Visibility = Visibility.Visible; enableSimulation = false; IEnumerable <Shelf> selectedPlanogram = GetShelfData(selectedData); IEnumerable <Shelf> comparisonPlanogram = null; if (comparisonData != null) { comparisonPlanogram = GetShelfData(comparisonData); } FillGrid(planogram, selectedPlanogram, false, mouseEnterHandler: ItemAttributes_Compare_MouseEnter, mouseLeaveHandler: ItemAttributes_MouseLeave, comparisonResult: comparisonPlanogram); if (!btnComparisonClose.IsEnabled == true) { itemRow = _row; itemCol = _col; } //btnComparisonClose.Visibility = Visibility.Visible; btnComparisonClose.IsEnabled = true; }
public void DisplayLearningComparisonResults(RlmLearnedSessionDetails selectedData, RlmLearnedSessionDetails comparisonData) { if (core.IsComparisonModeOn) { tmpSelectedData = selectedData; tmpComparisonData = comparisonData; itemRow = _row; itemCol = _col; } comparisonOverlay.Visibility = Visibility.Visible; IEnumerable <Shelf> selectedPlanogram = GetShelfData(selectedData); IEnumerable <Shelf> comparisonPlanogram = null; if (comparisonData != null) { comparisonPlanogram = GetShelfData(comparisonData); } FillGrid(gridIceCreamShelves, selectedPlanogram, false, mouseEnterHandler: ItemAttributes_Compare_MouseEnter, mouseLeaveHandler: ItemAttributes_Compare_MouseLeave, comparisonResult: comparisonPlanogram); //btnComparisonClose.Visibility = Visibility.Visible; //btnComparisonClose.IsEnabled = true; txtStatus.Visibility = Visibility.Hidden; txtTimeElapsed.Visibility = Visibility.Hidden; txtItemScore.Visibility = Visibility.Hidden; }
//public event LearningComparisonDisplayResultsDelegate LearningComparisonDisplayResultsEvent; public void IRLVCore_LearningComparisonResultsHandler(RlmLearnedSessionDetails selectedData, RlmLearnedSessionDetails comparisonData) { //LearningComparisonDisplayResultsEvent?.Invoke(selectedData, comparisonData); //Parent.DisplayLearningComparisonResults(selectedData, comparisonData); var currentMoves = new List <MoveDetails>(); var comprisonMoves = new List <MoveDetails>(); if (selectedData != null && selectedData.Outputs != null && selectedData.Outputs.Count() > 0 && selectedData.Inputs != null && selectedData.Inputs.Count() > 0) { for (int i = 0; i < selectedData.Inputs.Count(); i++) { currentMoves.Add(new MoveDetails() { MoveNumber = Convert.ToInt32(selectedData.Inputs.ElementAt(i).Value), Direction = Convert.ToInt16(selectedData.Outputs.ElementAt(i).Value) }); } } if (comparisonData != null && comparisonData.Outputs != null && comparisonData.Outputs.Count() > 0 && comparisonData.Inputs != null && comparisonData.Inputs.Count() > 0) { for (int i = 0; i < comparisonData.Inputs.Count(); i++) { comprisonMoves.Add(new MoveDetails() { MoveNumber = Convert.ToInt32(comparisonData.Inputs.ElementAt(i).Value), Direction = Convert.ToInt16(comparisonData.Outputs.ElementAt(i).Value) }); } } Parent.ShowComparisonData(currentMoves, comprisonMoves); }
public void IRLVCore_SessionBreakdownClickResultsHandler(RlmLearnedSessionDetails details) { if (OutputVisualizer != null) { var breakdown = OutputVisualizer.SessionScoreBreakdown(details); showSessionBreakdown(breakdown); } }
public IEnumerable <RlmLearnedSessionDetails> GetSessionIODetails(params long[] sessionIds) { var retVal = new List <RlmLearnedSessionDetails>(); var sqlParams = new List <SqlParameter>(); for (int i = 0; i < sessionIds.Length; i++) { sqlParams.Add(new SqlParameter($"id_{i}", sessionIds[i])); } string query = $@" SELECT i.ID, i.Name, ivr.Value, CAST(1 AS BIT) [IsInput], c.ID [CaseId], c.CycleScore, c.Session_ID [SessionId] FROM Cases c INNER JOIN Input_Values_Rneuron ivr on c.Rneuron_ID = ivr.Rneuron_ID INNER JOIN Inputs i on ivr.Input_ID = ivr.Input_ID WHERE c.Session_ID in ({string.Join(",", sqlParams.Select(a => $"@{a.ParameterName}").ToArray())}) UNION SELECT o.ID, o.Name, ovs.Value, CAST(0 AS BIT) [IsInput], c.ID [CaseId], c.CycleScore, c.Session_ID [SessionId] FROM Cases c LEFT JOIN Output_Values_Solution ovs on c.Solution_ID = ovs.Solution_ID LEFT JOIN Outputs o on ovs.Output_ID = ovs.Output_ID WHERE c.Session_ID in ({string.Join(",", sqlParams.Select(a => $"@{a.ParameterName}").ToArray())})"; using (RlmDbEntities db = new RlmDbEntities(DatabaseName)) { var results = db.Database.SqlQuery <RlmIODetails>(query, sqlParams.ToArray()).ToList(); if (results != null) { var sessionIODetails = results.GroupBy(a => a.SessionId); foreach (var item in sessionIODetails) { var learnedSess = new RlmLearnedSessionDetails(); learnedSess.SessionId = item.Key; learnedSess.Inputs = item.Where(a => a.IsInput).ToList(); learnedSess.Outputs = item.Where(a => !a.IsInput).ToList(); retVal.Add(learnedSess); } } } return(retVal); }
public IEnumerable <IRLVItemDisplay> SessionScoreBreakdown(RlmLearnedSessionDetails sessionDetails) { IEnumerable <IRLVItemDisplay> retVal = new List <IRLVItemDisplay>(); if (sessionDetails != null) { Item[] items = GetItemsFromSession(sessionDetails); retVal = GetMetricSum(items); } return(retVal); }
public Item[] GetItemsFromSession(RlmLearnedSessionDetails sessionDetails) { var retVal = new List <Item>(); foreach (var item in sessionDetails.Outputs.Where(a => a.CycleScore == 1)) { int itemIndex = Convert.ToInt32(item.Value); Item itemReference = Parent.ItemsCache[itemIndex]; retVal.Add(itemReference); } return(retVal.ToArray()); }
//public event LearningComparisonDisplayResultsDelegate LearningComparisonDisplayResultsEvent; public void IRLVCore_LearningComparisonResultsHandler(RlmLearnedSessionDetails selectedData, RlmLearnedSessionDetails comparisonData) { //LearningComparisonDisplayResultsEvent?.Invoke(selectedData, comparisonData); Parent.DisplayLearningComparisonResults(selectedData, comparisonData); }
public override IEnumerable <RlmLearnedSessionDetails> GetSessionIODetails(params long[] sessionIds) { var retVal = new List <RlmLearnedSessionDetails>(); Dictionary <string, object> paramVals = new Dictionary <string, object>(); for (int i = 0; i < sessionIds.Length; i++) { paramVals[$"id_{i}"] = sessionIds[i]; } string query = $@" SELECT i.ID, i.Name, i.Value, CAST(1 AS BIT) [IsInput], c.ID [CaseId], c.CycleScore, c.Session_ID [SessionId], c.[Order] [CycleOrder] FROM {nameof(_Case)} c LEFT JOIN ( SELECT i.ID, i.Name, ivr.Value, ivr.Rneuron_ID FROM [{nameof(_Input_Values_Rneuron)}] ivr LEFT JOIN [{nameof(_Input)}] i on ivr.Input_ID = i.ID ) i ON c.Rneuron_ID = i.Rneuron_ID WHERE c.Session_ID in ({string.Join(",", paramVals.Select(a => $"@{a.Key}").ToArray())}) UNION SELECT o.ID, o.Name, o.Value, CAST(0 AS BIT) [IsInput], c.ID [CaseId], c.CycleScore, c.Session_ID [SessionId], c.[Order] [CycleOrder] FROM {nameof(_Case)} c LEFT JOIN ( SELECT o.ID, o.Name, ovs.Value, ovs.Solution_ID FROM [{nameof(_Output_Values_Solution)}] ovs LEFT JOIN [{nameof(_Output)}] o on ovs.Output_ID = o.ID ) o ON c.Solution_ID = o.Solution_ID WHERE c.Session_ID in ({string.Join(",", paramVals.Select(a => $"@{a.Key}").ToArray())})"; using (var conn = GetOpenDBConnection(ConnectionStringWithDatabaseName)) { var results = conn.Query <RlmIODetails>(query, paramVals); if (results != null) { var sessionIODetails = results.GroupBy(a => a.SessionId); foreach (var item in sessionIODetails) { var learnedSess = new RlmLearnedSessionDetails(); learnedSess.SessionId = item.Key; learnedSess.Inputs = item.Where(a => a.IsInput).OrderBy(a => a.CycleOrder).ToList(); learnedSess.Outputs = item.Where(a => !a.IsInput).OrderBy(a => a.CycleOrder).ToList(); retVal.Add(learnedSess); } } } return(retVal); }