コード例 #1
0
ファイル: HtmlPageHelper.cs プロジェクト: JabX/kinetix
        /// <summary>
        /// Rend un axe au format CSV.
        /// </summary>
        /// <param name="hyperCube">HyperCube.</param>
        /// <param name="context">Contexte.</param>
        /// <param name="writer">Writer CSV.</param>
        /// <param name="activeCounters">Compteur actifs.</param>
        /// <param name="axis">Axe.</param>
        private static void CreateCsvAxis(IHyperCube hyperCube, Context context, TextWriter writer, Dictionary <string, string> activeCounters, string axis)
        {
            CounterCubeCriteria criteria = new CounterCubeCriteria(axis, TimeLevel.Hour);
            CubeKey             key      = criteria.CreateCubeKey(context.EndDate);
            ICube cube = hyperCube.GetCube(key);

            if (cube != null && IsShown(context.EndDate, context.Filtre, hyperCube, criteria))
            {
                writer.Write(axis);
                writer.Write(";");

                double total = cube.GetCounter(Analytics.ElapsedTime).GetValue(CounterStatType.Total);
                writer.Write(Convert.ToString(total, CultureInfo.CurrentCulture));
                writer.Write(";");

                double hits = cube.GetCounter(Analytics.ElapsedTime).GetValue(CounterStatType.Hits);
                writer.Write(Convert.ToString(hits, CultureInfo.CurrentCulture));
                writer.Write(";");

                double avg;
                foreach (ICounterDefinition definition in hyperCube.AllDefinitions)
                {
                    if (activeCounters.ContainsKey(definition.Code))
                    {
                        ICounter counter = cube.GetCounter(definition.Code);
                        avg = (counter != null) ? counter.GetValue(CounterStatType.Avg) : 0;
                        writer.Write(string.Format(CultureInfo.CurrentCulture, "{0:0.##}", avg));
                        writer.Write(";");
                    }
                }

                writer.WriteLine();
            }
        }
コード例 #2
0
ファイル: HtmlPageHelper.cs プロジェクト: JabX/kinetix
        /// <summary>
        /// Retourne la liste de tous les axes d'un hypercybe trié sur la valeur moyen d'un compteur.
        /// </summary>
        /// <param name="date">Date des valeurs.</param>
        /// <param name="hyperCube">Hybercube contenant les valeurs.</param>
        /// <param name="sort">Compteur de tri.</param>
        /// <returns>Liste des axes triés sur un compteur.</returns>
        private static List <string> GetAllAxis(DateTime date, IHyperCube hyperCube, string sort)
        {
            ICollection <string> allAxis = hyperCube.AllAxis;

            if (sort == null)
            {
                // On crée une nouvelle liste pour pouvoir la trier sans toucher à l'originale.
                List <string> list = new List <string>(allAxis);

                // On trie cette liste par ordre alphabétique
                list.Sort();
                return(list);
            }
            else if ("HITS".Equals(sort))
            {
                return(SortAllAxis(hyperCube, allAxis, date, Analytics.ElapsedTime, CounterStatType.Hits));
            }
            else if ("TOTAL".Equals(sort))
            {
                return(SortAllAxis(hyperCube, allAxis, date, Analytics.ElapsedTime, CounterStatType.Total));
            }
            else if (Analytics.ElapsedTime.Equals(sort))
            {
                return(SortAllAxis(hyperCube, allAxis, date, Analytics.ElapsedTime, CounterStatType.Avg));
            }
            else
            {
                return(SortAllAxis(hyperCube, allAxis, date, sort, CounterStatType.Avg));
            }
        }
コード例 #3
0
 public static void TestAreEqual(double[] values, IHyperCube <double> point, string[] varNames, double delta = 1e-12)
 {
     for (int i = 0; i < varNames.Length; i++)
     {
         Assert.AreEqual(values[i], point.GetValue(varNames[i]), delta, "variable " + varNames[i]);
     }
 }
コード例 #4
0
        public IHyperCube<double> GenerateRandomWithinHypercube( IHyperCube<double>[] points )
        {
            if( points.Length == 0 )
            {
                return this.GenerateRandom(points[0]);
            }
            else
            {
                IHyperCube<double> p = points[0].Clone() as IHyperCube<double>;
                string[] varNames = p.GetVariableNames();
                for (int i = 0; i < varNames.Length; i++)
                {
                    string v = varNames[i];
                    double minimum;
                    double maximum;
                    GetSmallestIntervalForValues(points, v, out minimum, out maximum);
                    minimum = Math.Max(minimum, p.GetMinValue(v));
                    maximum = Math.Min(maximum, p.GetMaxValue(v));
                    checkFeasibleInterval(minimum, maximum, v);
                    p.SetValue(varNames[i], GetRandomisedValue(minimum, maximum));
                }

                return p;
            }
        }
コード例 #5
0
        public IHyperCube <double> GetCentroid(IHyperCube <double>[] points)
        {
            if (points == null)
            {
                return(null);
            }
            if (points.Length == 1)
            {
                return(points[0].Clone( ) as IHyperCube <double>);
            }

            IHyperCube <double> p = points[0].Clone( ) as IHyperCube <double>;

            string[] varNames = p.GetVariableNames();
            foreach (string varName in varNames)
            {
                double val = 0.0;
                for (int i = 0; i < points.Length; i++)
                {
                    val += points[i].GetValue(varName);
                }
                p.SetValue(varName, val / ((double)points.Length));
            }
            return(p);
        }
コード例 #6
0
        public IHyperCube<double> GetCentroid( IHyperCube<double>[] points )
        {
            if( points == null )
            {
                return null;
            }
            if( points.Length == 1 )
            {
                return points[0].Clone( ) as IHyperCube<double>;
            }

            IHyperCube<double> p = points[0].Clone( ) as IHyperCube<double>;

            string[] varNames = p.GetVariableNames();
            foreach( string varName in varNames )
            {
                double val = 0.0;
                for( int i = 0; i < points.Length; i++ )
                {
                    val += points[i].GetValue(varName);
                }
                p.SetValue( varName, val / ( (double)points.Length ) );
            }
            return p;
        }
コード例 #7
0
 public void Write(IHyperCube <double> newPoint, IDictionary <string, string> tags)
 {
     if (log.IsInfoEnabled)
     {
         log.Info(new SysConfigLogInfo(LoggerMhHelper.CreateNoScore(newPoint), tags));
     }
 }
コード例 #8
0
ファイル: HtmlPageHelper.cs プロジェクト: JabX/kinetix
 /// <summary>
 /// Rend un compteur sous forme HTML.
 /// </summary>
 /// <param name="hyperCube">Hypercube contenant les données.</param>
 /// <param name="writer">Writer HTML.</param>
 /// <param name="counter">Compteur.</param>
 /// <param name="counterDefinition">Définition du compteur.</param>
 /// <param name="link">Indique si un lien doit être créé pour la selection des graphiques.</param>
 /// <param name="context">Context courant de la requête.</param>
 private static void ToHtml(IHyperCube hyperCube, HtmlTextWriter writer, ICounter counter, ICounterDefinition counterDefinition, bool link, Context context)
 {
     StatToHtml(hyperCube, writer, counter, counterDefinition, link, context, CounterStatType.Last);
     StatToHtml(hyperCube, writer, counter, counterDefinition, link, context, CounterStatType.Avg);
     StatToHtml(hyperCube, writer, counter, counterDefinition, link, context, CounterStatType.Min);
     StatToHtml(hyperCube, writer, counter, counterDefinition, link, context, CounterStatType.Max);
 }
コード例 #9
0
        public ControlFileCreator(
            IHyperCube <double> StartingPoint,
            String CommandLineExecutable,
            String TemplateFile,
            String ParameterFile,
            String InstructionFile,
            String ResultFile,
            ModelRunner mr,
            String ControlFile,
            TimeSeries ObservationData,
            int Iterations,
            string controlSettings
            )
        {
            this.startingPoint         = StartingPoint;
            this.commandLineExecutable = CommandLineExecutable;
            this.templateFile          = TemplateFile;
            this.parameterFile         = ParameterFile;
            this.instructionFile       = InstructionFile;
            this.resultFile            = ResultFile;
            this.controlFile           = ControlFile;
            this.NumberOfIterations    = Iterations;
            this.xmlSettingsFile       = controlSettings;
            modelRunner = mr;

            this.observedTimeSeries = ObservationData;
        }
コード例 #10
0
        public IHyperCube <double> GenerateRandomWithinHypercube(IHyperCube <double>[] points)
        {
            if (points.Length == 0)
            {
                return(this.GenerateRandom(points[0]));
            }
            else
            {
                IHyperCube <double> p        = points[0].Clone() as IHyperCube <double>;
                string[]            varNames = p.GetVariableNames();
                for (int i = 0; i < varNames.Length; i++)
                {
                    string v = varNames[i];
                    double minimum;
                    double maximum;
                    GetSmallestIntervalForValues(points, v, out minimum, out maximum);
                    minimum = Math.Max(minimum, p.GetMinValue(v));
                    maximum = Math.Min(maximum, p.GetMaxValue(v));
                    checkFeasibleInterval(minimum, maximum, v);
                    p.SetValue(varNames[i], GetRandomisedValue(minimum, maximum));
                }

                return(p);
            }
        }
コード例 #11
0
        public IHyperCube <double> HomotheticTransform(IHyperCube <double> point, double factor)
        {
            var p      = point as MpiSysConfig;
            var result = (MpiSysConfig)this.Clone();

            //return performMirrorBounceTransform(factor, p, result);
            return(performDefaultTransform(factor, p, result));
        }
コード例 #12
0
ファイル: HyperCubeComparer.cs プロジェクト: JabX/kinetix
 /// <summary>
 /// Constructeur.
 /// </summary>
 /// <param name="hyperCube">HyperCube utilisé par le comparateur.</param>
 /// <param name="date">Date à la quelle se fait la comparaison.</param>
 /// <param name="counterDefinitionCode">Compteur à comparer.</param>
 /// <param name="statType">Type de statistique à comparer (min, max, moy, ...).</param>
 /// <param name="level">Période de temps sur laquelle appliquer la comparaison.</param>
 internal HyperCubeComparer(IHyperCube hyperCube, DateTime date, string counterDefinitionCode, CounterStatType statType, TimeLevel level)
 {
     this._counterDefinitionCode = counterDefinitionCode;
     this._date      = date;
     this._hyperCube = hyperCube;
     this._level     = level;
     this._statType  = statType;
 }
コード例 #13
0
ファイル: HtmlPageHelper.cs プロジェクト: JabX/kinetix
        /// <summary>
        /// Réalise le rendu HTML contenant les sparklines du nombre de hits sur les
        /// 10 dernières minutes.
        /// </summary>
        /// <param name="hyperCube">Hypercube contenant les valeurs.</param>
        /// <param name="criteria">Critère de rendu (axe courant, date, période de temps).</param>
        /// <param name="writer">Writer HTML.</param>
        /// <param name="context">Context courant de la requête.</param>
        private static void PrintChartSparkLines(IHyperCube hyperCube, CounterCubeCriteria criteria, HtmlTextWriter writer, Context context)
        {
            string url = context.ChangeSort(null).GetHandlerUrl() + "&CONTENT=sparklines.png&MON_ID=" + hyperCube.Name + "&LEVEL=" + criteria.Level;

            writer.Write("<td class=\"monitoring\" align=\"right\">");
            writer.Write("<img src=\"" + url + "\"/>");
            writer.WriteLine("</td>");
        }
コード例 #14
0
        public override IHyperCube <double> HomotheticTransform(IHyperCube <double> point, double factor)
        {
            var pt = point as TestHyperCube;
            HyperCube <double> result = new TestHyperCube(this.Dimensions);

            performHomoteticTransform(point, factor, ref result);
            return(result);
        }
コード例 #15
0
            public IObjectiveScores <IHyperCube <double> > EvaluateScore(IHyperCube <double> systemConfiguration)
            {
                apply(systemConfiguration, simulation);
                simulation.Execute();
                double result = sumSquares(simulation.GetRecorded("Runoff"), this.observedData);

                return(MetaheuristicsHelper.CreateSingleObjective(systemConfiguration, result, "Sum Squares"));
            }
コード例 #16
0
ファイル: HtmlPageHelper.cs プロジェクト: JabX/kinetix
        /// <summary>
        /// Tri une liste.
        /// </summary>
        /// <param name="hyperCube">Hybercube contenant les éléments de la liste.</param>
        /// <param name="allAxis">Liste des axes.</param>
        /// <param name="date">Date des valeurs à trier.</param>
        /// <param name="counterDefinitionCode">Compteur à trier.</param>
        /// <param name="statType">Type de statistique à trier.</param>
        /// <returns>Liste triée par ordre croissant des valeurs sur les axes.</returns>
        private static List <string> SortAllAxis(IHyperCube hyperCube, ICollection <string> allAxis, DateTime date, string counterDefinitionCode, CounterStatType statType)
        {
            // On crée une nouvelle liste pour pouvoir la trier sans toucher à l'originale.
            List <string> countersList = new List <string>(allAxis);

            countersList.Sort(new HyperCubeComparer(hyperCube, date, counterDefinitionCode, statType, TimeLevel.Hour));
            return(countersList);
        }
コード例 #17
0
        public override IHyperCube <double> HomotheticTransform(IHyperCube <double> point, double factor)
        {
            var pt = point as BasicHyperCube;
            HyperCube <double> result =
                (BasicHyperCube)this.Clone();

            performHomoteticTransform(point, factor, ref result);
            return(result);
        }
コード例 #18
0
            private void apply(IHyperCube <double> systemConfiguration, IModelSimulation <double[], double, int> simulation)
            {
                var varNames = systemConfiguration.GetVariableNames();

                foreach (var varName in varNames)
                {
                    simulation.SetVariable(varName, systemConfiguration.GetValue(varName));
                }
            }
コード例 #19
0
ファイル: HtmlPageHelper.cs プロジェクト: JabX/kinetix
        /// <summary>
        /// Crée un axe en HTML.
        /// </summary>
        /// <param name="hyperCube">Cube.</param>
        /// <param name="context">Contexte.</param>
        /// <param name="writer">Writer HTML.</param>
        /// <param name="requestName">Nom de la requête.</param>
        /// <param name="activeCounters">Compteurs actifs.</param>
        /// <param name="odd">Parité.</param>
        /// <param name="axis">Axe.</param>
        /// <param name="criteria">Critères.</param>
        /// <param name="cube">Cube.</param>
        private static void CreateHtmlAxis(IHyperCube hyperCube, Context context, HtmlTextWriter writer, string requestName, Dictionary <string, string> activeCounters, bool odd, string axis, CounterCubeCriteria criteria, ICube cube)
        {
            writer.Write(HtmlPageRenderer.Indent);
            writer.WriteLine("<tr " + (odd ? "class=\"odd\"" : string.Empty) + '>');

            writer.Write(HtmlPageRenderer.Indent2);
            writer.Write("<td class=\"monitoring\">");

            Context localContext = context.Zoom(hyperCube.Name, axis);

            writer.Write(HtmlPageRenderer.GetLink(localContext, axis, !axis.Equals(requestName)));
            writer.WriteLine("</td>");

            writer.Write(HtmlPageRenderer.Indent2);
            writer.Write("<td class=\"monitoring\" align=\"right\">");
            double total = cube.GetCounter(Analytics.ElapsedTime).GetValue(CounterStatType.Total);

            writer.Write(Convert.ToString(total, CultureInfo.CurrentCulture));
            writer.WriteLine("</td>");

            writer.Write(HtmlPageRenderer.Indent2);
            double avg = cube.GetCounter(Analytics.ElapsedTime).GetValue(CounterStatType.Avg);

            writer.Write("<td class=\"monitoring\" align=\"right\" "
                         + GetHtmlStyle(1000, 10000, avg) + '>');
            writer.Write(string.Format(CultureInfo.CurrentCulture, "{0:0.##}", avg));
            writer.WriteLine("</td>");

            writer.Write(HtmlPageRenderer.Indent2);
            writer.Write("<td class=\"monitoring\" align=\"right\">");
            double hits = cube.GetCounter(Analytics.ElapsedTime).GetValue(CounterStatType.Hits);

            writer.Write(Convert.ToString(hits, CultureInfo.CurrentCulture));
            writer.WriteLine("</td>");

            writer.Write(HtmlPageRenderer.Indent2);
            PrintChartSparkLines(hyperCube, new CounterCubeCriteria(axis, TimeLevel.Minute), writer, localContext);

            double midValue;

            foreach (ICounterDefinition counterDefinition in hyperCube.AllDefinitions)
            {
                if (activeCounters.ContainsKey(counterDefinition.Code))
                {
                    ICounter counter = hyperCube.GetCube(criteria.CreateCubeKey(context.EndDate)).GetCounter(counterDefinition.Code);
                    midValue = (counter != null) ? counter.GetValue(CounterStatType.Avg) : 0;
                    writer.Write(HtmlPageRenderer.Indent2);
                    writer.Write("<td class=\"monitoring\" align=\"right\" "
                                 + GetHtmlStyle(counterDefinition, midValue) + '>');
                    writer.Write(string.Format(CultureInfo.CurrentCulture, "{0:0.##}", midValue));
                    writer.WriteLine("</td>");
                }
            }

            writer.Write(HtmlPageRenderer.Indent);
            writer.WriteLine("</tr>");
        }
コード例 #20
0
        public static void TestCentroidCalculation(HyperCubeOperations hco, IHyperCube <double> hc_1, IHyperCube <double> hc_2, IHyperCube <double> hc_3, string[] varNames)
        {
            IHyperCube <double>[] points = new IHyperCube <double>[] { hc_1, hc_2, hc_3 };
            var centroid = hco.GetCentroid(points);

            //[0,0,0]
            //[1,0,0]
            //[0,2,0]
            TestAreEqual(new double[] { 1 / 3.0, 2 / 3.0, 0 }, centroid, varNames);
        }
コード例 #21
0
            public IHyperCube <double> HomotheticTransform(IHyperCube <double> point, double factor)
            {
                var p      = point as UnivariateReal;
                var result = new UnivariateReal(p.value + factor * (this.value - p.value));

                if (result.value > result.max || result.value < result.min)
                {
                    return(null);
                }
                return(result);
            }
コード例 #22
0
ファイル: HtmlPageHelper.cs プロジェクト: JabX/kinetix
        /// <summary>
        /// Réalise le rendu du résumé d'un hypercube.
        /// </summary>
        /// <param name="hyperCube">Hypercube à rendre.</param>
        /// <param name="context">Context courant de la requête.</param>
        /// <param name="writer">Writer HTML.</param>
        internal static void ToSummary(IHyperCube hyperCube, Context context, HtmlTextWriter writer)
        {
            if (writer == null)
            {
                throw new ArgumentNullException("writer");
            }

            string requestName = context.GetRequestName(hyperCube.Name);

            writer.WriteLine("<ul>");
            writer.Write("<li>");
            writer.WriteLine(HtmlPageRenderer.GetLink(context, "Rafraîchir", true));
            writer.WriteLine("</li>");
            if (hyperCube.IsResetable)
            {
                writer.Write("<li>");
                writer.WriteLine(HtmlPageRenderer.GetLink(context.Reset(hyperCube.Name), "Remettre à zéro", true));
                writer.WriteLine("</li>");
            }

            // Si on est sur une page locale on rend accès aux statistiques globales
            if (requestName != null)
            {
                writer.Write("<li>");
                writer.WriteLine(HtmlPageRenderer.GetLink(context.Zoom(null, null), "Statistiques globales", true));
                writer.WriteLine("</li>");
            }

            writer.WriteLine("</ul>");
            Context targetContext;

            if (requestName == null)
            {
                writer.Write("<h2>Statistiques globales</h2>");
                targetContext = context;
            }
            else
            {
                writer.Write("<h2>Statistiques pour ");
                writer.Write(requestName);
                writer.WriteLine("</h2>");
                targetContext = context.Zoom(null, null);
            }

            ICube cube = hyperCube.GetCube(new CounterCubeCriteria(requestName, TimeLevel.Hour).CreateCubeKey(context.EndDate));

            if (cube != null)
            {
                // On affiche les données relative au cube
                bool link = requestName == null; // Si pas de request précisé on met les liens.
                RenderCube(hyperCube, cube, writer, link, targetContext);
            }
        }
コード例 #23
0
        /// <summary>
        /// Réalise le rendu du contrôle.
        /// </summary>
        /// <param name="writer">Writer HTML.</param>
        public override void RenderControl(HtmlTextWriter writer)
        {
            if (writer == null)
            {
                throw new ArgumentNullException("writer");
            }

            Context ctx = new Context(HttpContext.Current, this.ResolveUrl(this.HandlerPath));

            ctx.ClearAction();
            foreach (string param in _params.Keys)
            {
                ctx.AddParam(param, _params[param]);
            }

            writer.AddAttribute(HtmlTextWriterAttribute.Id, "managers");
            writer.RenderBeginTag(HtmlTextWriterTag.Div);

            SortedDictionary <int, string> sortMap = new SortedDictionary <int, string>();

            foreach (string databaseName in _databaseSet.DatabaseNames)
            {
                IManagerDescription description = this.DatabaseDefinition[databaseName];
                sortMap.Add(description.Priority, databaseName);
            }

            foreach (int priority in sortMap.Keys)
            {
                string databaseName             = sortMap[priority];
                IManagerDescription description = this.DatabaseDefinition[databaseName];

                writer.AddAttribute(HtmlTextWriterAttribute.Id, "manager");
                writer.RenderBeginTag(HtmlTextWriterTag.Div);

                writer.WriteLine("<h1 style=\"background-image: url('" + this.ResolveUrl(this.HandlerPath) + "?CONTENT=img_manager&MON_ID=" +
                                 description.Image + "');\">");

                writer.WriteLine(description.Name);
                writer.WriteLine("</h1>");
                writer.WriteLine("<div id=\"description\">");

                IHyperCube hyperCube = _databaseSet.GetDatabase(databaseName);
                HtmlPageHelper.ToSummary(hyperCube, ctx, writer);
                HtmlPageHelper.ToTable(hyperCube, ctx, writer);

                writer.WriteLine("</div>"); // description

                writer.RenderEndTag();
            }

            writer.RenderEndTag();
        }
コード例 #24
0
        public static double CalculateParaboloid(IHyperCube <double> sysConfig, double bestParam)
        {
            var    names  = sysConfig.GetVariableNames();
            double result = 0;

            for (int i = 0; i < names.Length; i++)
            {
                var    name = names[i];
                double v    = (sysConfig.GetValue(name) - bestParam);
                result += v * v;
            }
            return(result);
        }
コード例 #25
0
        private string createPESTFiles(
            IHyperCube <double> startingPoint,
            String outputFolder,
            TimeSeries observedTimeSeries,
            string modelOutputName,
            string PestToMetaheuristicsCommandLine,
            ModelRunner modelRunner,
            int Iterations,
            string controlSettings,
            out string resultFile
            )
        {
            String templateFile;
            String instructionFile;
            String controlFile;
            String parameterFile;
            String calculatedResultFile;

            createFileNames(outputFolder, out templateFile, out instructionFile, out controlFile, out parameterFile, out calculatedResultFile);
            const int precision = 23;

            // create the three files using the helper classes
            TemplateFileCreator templateCreator = new TemplateFileCreator(templateFile, modelRunner, precision, PESTDELIMITER);

            templateCreator.CreateFile();

            InstructionFileCreator instructionCreator = new InstructionFileCreator(observedTimeSeries, instructionFile);

            instructionCreator.CreateFile();

            ControlFileCreator controlCreator =
                new ControlFileCreator(
                    startingPoint,
                    PestToMetaheuristicsCommandLine,
                    templateFile,
                    parameterFile,
                    instructionFile,
                    calculatedResultFile,
                    modelRunner,
                    controlFile,
                    observedTimeSeries,
                    Iterations,
                    controlSettings
                    );

            controlCreator.CreateFile();
            resultFile = calculatedResultFile;

            return(controlFile);
        }
コード例 #26
0
ファイル: HtmlGraphHelper.cs プロジェクト: JabX/kinetix
        /// <summary>
        /// Réalise le rendu d'un cude.
        /// </summary>
        /// <param name="hyperCube">HyperCupe à rendre.</param>
        /// <param name="context">Context courant de la requête.</param>
        /// <param name="s">Stream de sortie.</param>
        internal static void RenderGraph(IHyperCube hyperCube, Context context, Stream s)
        {
            TimeLevel           level    = TimeLevel.ValueOf(context.Level);
            CounterCubeCriteria criteria = new CounterCubeCriteria(context.RequestName, level);

            if (context.Content.Equals("sparklines.png"))
            {
                HtmlGraphHelper.RenderGraphSparklines(context, hyperCube, criteria, s);
            }
            else
            {
                throw new NotSupportedException();
            }
        }
コード例 #27
0
        public IHyperCube <double> HomotheticTransform(IHyperCube <double> point, double factor)
        {
            var centralPoint   = (UnivariateReal)point;
            var reflectedValue = centralPoint.value + (this.value - centralPoint.value) * factor;

            if (reflectedValue > this.maxValue || reflectedValue < this.minValue)
            {
                return(null);
            }
            var result = (UnivariateReal)this.MemberwiseClone( );

            result.SetValue(this.VariableName, reflectedValue);
            return(result);
        }
コード例 #28
0
 public static bool CheckInBounds <T>(IHyperCube <T> point) where T : IComparable
 {
     foreach (var varName in point.GetVariableNames())
     {
         var min = point.GetMinValue(varName);
         var max = point.GetMaxValue(varName);
         var val = point.GetValue(varName);
         if (!MetaheuristicsHelper.CheckInBounds(val, min, max, throwIfFalse: false))
         {
             return(false);
         }
     }
     return(true);
 }
コード例 #29
0
ファイル: HtmlPageHelper.cs プロジェクト: JabX/kinetix
        /// <summary>
        /// Rend une statistique au format HTML.
        /// </summary>
        /// <param name="hyperCube">Hypercube contenant les données.</param>
        /// <param name="writer">Writer HTML.</param>
        /// <param name="counter">Compteur.</param>
        /// <param name="counterDefinition">Définition du compteur.</param>
        /// <param name="link">Indique si un lien doit être créé pour la selection des graphiques.</param>
        /// <param name="context">Contexte courant de la requête.</param>
        /// <param name="counterStatType">Type de statistique du compteur à rendre.</param>
        private static void StatToHtml(IHyperCube hyperCube, HtmlTextWriter writer, ICounter counter, ICounterDefinition counterDefinition, bool link, Context context, CounterStatType counterStatType)
        {
            writer.Write(HtmlPageRenderer.Indent2);
            writer.Write("<td class=\"monitoring\" align=\"right\" " + GetHtmlStyle(counterDefinition, counter.GetValue(counterStatType)) + '>');
            writer.Write(string.Format(CultureInfo.CurrentCulture, "{0:0.##}", counter.GetValue(counterStatType)));
            writer.WriteLine("</td>");

            if (counter.HasInfo(counterStatType))
            {
                writer.Write(HtmlPageRenderer.Indent2);
                writer.Write("<td class=\"monitoring\">");
                writer.Write(HtmlPageRenderer.GetLink(context.Zoom(hyperCube.Name, counter.GetInfo(counterStatType)), counter.GetInfo(counterStatType), link));
                writer.WriteLine("</td>");
            }
        }
コード例 #30
0
 public IHyperCube<double> GenerateRandom( IHyperCube<double> point )
 {
     string[] varNames = point.GetVariableNames( );
     IHyperCube<double> result = point.Clone( ) as IHyperCube<double> ;
     for( int i = 0; i < varNames.Length; i++ )
     {
         string v = varNames[i];
         // We take the bounds of the result point, to cater for cascading parameter constraints.
         double min = result.GetMinValue(v);
         double max = result.GetMaxValue(v);
         checkFeasibleInterval(min, max, v);
         result.SetValue( varNames[i], GetRandomisedValue(min, max) );
     }
     return result;
 }
コード例 #31
0
ファイル: HtmlPageHelper.cs プロジェクト: JabX/kinetix
        /// <summary>
        /// Réalise le rendu d'une base au format CSV.
        /// </summary>
        /// <param name="hyperCube">Hypercube contenant les valeurs.</param>
        /// <param name="context">Contexte de la requête.</param>
        /// <param name="writer">Writer.</param>
        internal static void ToCsv(IHyperCube hyperCube, Context context, TextWriter writer)
        {
            string        requestName = context.GetRequestName(hyperCube.Name);
            List <string> axisList    = GetAllAxis(context.EndDate, hyperCube, context.Sort);

            writer.Write("Requete;");
            writer.Write("total;");
            writer.Write("hits;");

            Dictionary <string, string> activeCounters = RenderLabels(writer, hyperCube, context, requestName);

            foreach (string axis in axisList)
            {
                CreateCsvAxis(hyperCube, context, writer, activeCounters, axis);
            }
        }
コード例 #32
0
        public static HyperCubeInterop ToDataFrame(IHyperCube <double> paramSet)
        {
            var names = paramSet.GetVariableNames();
            var r     = new HyperCubeInterop(names.Length);

            for (int i = 0; i < names.Length; i++)
            {
                var name = names[i];
                r.Name[i]        = name;
                r.Description[i] = "";
                r.Value[i]       = paramSet.GetValue(name);
                r.Min[i]         = paramSet.GetMinValue(name);
                r.Max[i]         = paramSet.GetMaxValue(name);
            }
            return(r);
        }
コード例 #33
0
        public IHyperCube <double> GenerateRandom(IHyperCube <double> point)
        {
            string[]            varNames = point.GetVariableNames( );
            IHyperCube <double> result   = point.Clone( ) as IHyperCube <double>;

            for (int i = 0; i < varNames.Length; i++)
            {
                string v = varNames[i];
                // We take the bounds of the result point, to cater for cascading parameter constraints.
                double min = result.GetMinValue(v);
                double max = result.GetMaxValue(v);
                checkFeasibleInterval(min, max, v);
                result.SetValue(varNames[i], GetRandomisedValue(min, max));
            }
            return(result);
        }
コード例 #34
0
 public void Write(IHyperCube<double> newPoint, IDictionary<string, string> tags)
 {
     if (log.IsInfoEnabled)
         log.Info(new SysConfigLogInfo(LoggerMhHelper.CreateNoScore(newPoint), tags));
 }
コード例 #35
0
 public static HyperCubeInterop ToDataFrame(IHyperCube<double> paramSet)
 {
     var names = paramSet.GetVariableNames();
     var r = new HyperCubeInterop(names.Length);
     for (int i = 0; i < names.Length; i++)
     {
         var name = names[i];
         r.Name[i] = name;
         r.Description[i] = "";
         r.Value[i] = paramSet.GetValue(name);
         r.Min[i] = paramSet.GetMinValue(name);
         r.Max[i] = paramSet.GetMaxValue(name);
     }
     return r;
 }
コード例 #36
0
        private void GetSmallestIntervalForValues( IHyperCube<double>[] points, string varName, out double minimum, out double maximum )
        {
            int n = points.Length;
            double[] values = new double[n];

            for( int j = 0; j < n; j++ )
                values[j] = points[j].GetValue(varName);

            minimum = MetaheuristicsHelper.GetMinimum( values );
            maximum = MetaheuristicsHelper.GetMaximum( values );
        }