Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 5
0
 public void IRLVCore_SessionBreakdownClickResultsHandler(RlmLearnedSessionDetails details)
 {
     if (OutputVisualizer != null)
     {
         var breakdown = OutputVisualizer.SessionScoreBreakdown(details);
         showSessionBreakdown(breakdown);
     }
 }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 10
0
        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);
        }