Esempio n. 1
0
        private void RefreshButton_Click(object sender, EventArgs e)
        {
            ParameterSetting dlg = new ParameterSetting(_db);

            if (dlg.ShowDialog(this) == DialogResult.Cancel)
            {
                return;
            }

            this.dateTimePicker_Start.Value = dlg.wpf.StartTime;
            this.dateTimePicker_End.Value   = dlg.wpf.EndTime;

            DlgWaiting wait = new DlgWaiting();

            wait.OnAction += dlg_OnAction;
            wait.ShowDialog();

            //this.textBox_LSL.Text = this._lsl;
            //this.textBox_USL.Text = this._usl;
            //this.textBox_Target.Text = this._target;
            //this.tb_Sigma.Text = this._sigma;
            //this.tb_M3Sigma.Text = this._m3Sigma;
            //this.tb_P3Sigma.Text = this._p3Sigma;
            //this.tb_Average.Text = this._average;
        }
        private static ParameterSetting[] LoadBaseParameters(ParameterSetting[] parameters, CsvReader reader, int[] columnMap)
        {
            var baseParameters = new ParameterSetting[parameters.Length];
            // we only read the first line
            int columns;

            if (reader.LoadLine(out columns))
            {
                var job = new Job()
                {
                    ProcessedBy = null,
                    Processing  = false,
                    Processed   = false,
                    Value       = float.NaN,
                    Parameters  = baseParameters
                };

                for (int i = 0; i < parameters.Length; i++)
                {
                    baseParameters[i] = new ParameterSetting()
                    {
                        Names   = parameters[i].Names,
                        Minimum = parameters[i].Minimum,
                        Maximum = parameters[i].Maximum
                    };
                }

                for (int i = 0; i < columnMap.Length; i++)
                {
                    reader.Get(out baseParameters[columnMap[i]].Current, i + 2);
                }
            }
            return(baseParameters);
        }
        private void LoadParameterFile()
        {
            XmlDocument doc = new XmlDocument();

            doc.Load(this.ParameterFile.GetFilePath());
            List <ParameterSetting> parameters = new List <ParameterSetting>();

            foreach (XmlNode child in doc["Root"].ChildNodes)
            {
                if (child.Name == "Parameter")
                {
                    ParameterSetting current = new ParameterSetting();
                    if (child.HasChildNodes)
                    {
                        var nodes = child.ChildNodes;
                        current.Names = new string[nodes.Count];
                        for (int i = 0; i < nodes.Count; i++)
                        {
                            XmlNode name          = nodes[i];
                            var     parameterPath = name.Attributes["ParameterPath"].InnerText;
                            current.Names[i] = parameterPath;
                        }
                    }
                    else
                    {
                        var parameterPath = child.Attributes["ParameterPath"].InnerText;
                        current.Names = new string[] { parameterPath };
                    }
                    parameters.Add(current);
                }
            }
            this.Parameters = parameters.ToArray();
        }
Esempio n. 4
0
        private void button3_Click(object sender, EventArgs e)
        {
            string path = @"D:\桌面\程式\玻璃";

            setting = new ParameterSetting(path, "玻璃");
            setting.ShowDialog();
        }
Esempio n. 5
0
        private void SaveShaField()
        {
            string text = cboSha.Text;

            if (text.Trim().Length == 0)
            {
                Administrator.ProfileManager.ShaSettings.Delete(Administrator.ProfileManager.ShaSettings.SelectedKey);
                InitialiseShaField();
                return;
            }
            if (!Administrator.ProfileManager.ShaSettings.Keys.Contains(text))
            {
                ParameterSetting setting = new ParameterSetting
                {
                    Key   = text,
                    Value = text,
                };
                Administrator.ProfileManager.ShaSettings.Persist(setting);
                InitialiseShaField();
            }
            else
            {
                Administrator.ProfileManager.ShaSettings.Select(text);
            }
        }
Esempio n. 6
0
        private ParameterSetting[] GeneratePairwiseAminoAcidParameters()
        {
            var parameterSettings = new List <ParameterSetting>
            {
                new ParameterSetting("DirectNeighborWeight", -1e3, 1e3, 0.01, 0.1),
                new ParameterSetting("4thNeighborWeight", -1e3, 1e3, 0.01, 1.0)
            };
            var aminoAcids        = (AminoAcidName[])Enum.GetValues(typeof(AminoAcidName));
            var singleLetterCodes = aminoAcids
                                    .Select(aa => aa.ToOneLetterCode())
                                    .OrderBy(x => x)
                                    .ToList();

            AminoAcidCodePairs = new List <string>();
            for (int idx1 = 0; idx1 < singleLetterCodes.Count; idx1++)
            {
                var code1 = singleLetterCodes[idx1];
                for (int idx2 = idx1; idx2 < singleLetterCodes.Count; idx2++)
                {
                    var code2    = singleLetterCodes[idx2];
                    var codePair = string.Empty + code1 + code2;
                    AminoAcidCodePairs.Add(codePair);
                    var parameterSetting = new ParameterSetting(
                        codePair,
                        -1,
                        1,
                        0.1,
                        1.0);
                    parameterSettings.Add(parameterSetting);
                }
            }
            return(parameterSettings.ToArray());
        }
Esempio n. 7
0
            internal Job UpdatePosition(HybridPSOGD us)
            {
                var temp = Job.Parameters;
                Job job  = new Job();

                job.Processed   = false;
                job.ProcessedBy = null;
                job.Processing  = false;
                job.Value       = float.NaN;
                var parameters = job.Parameters = new ParameterSetting[temp.Length];

                for (int i = 0; i < temp.Length; i++)
                {
                    parameters[i] = new ParameterSetting();
                    // we need to move in real parameter space instead of relative parameter space
                    parameters[i].Current = temp[i].Current + Velocity[i] * (temp[i].Size);
                    // clamp the value inside of parameter space
                    if (parameters[i].Current < (parameters[i].Minimum = temp[i].Minimum))
                    {
                        parameters[i].Current = temp[i].Minimum;
                        Velocity[i]           = -Velocity[i];
                    }
                    if (parameters[i].Current > (parameters[i].Maximum = temp[i].Maximum))
                    {
                        parameters[i].Current = temp[i].Maximum;
                        Velocity[i]           = -Velocity[i];
                    }
                }
                return(Job = job);
            }
Esempio n. 8
0
        private void LoadInstructions()
        {
            XmlDocument doc = new XmlDocument();

            doc.Load(GetFileLocation(ParameterInstructions));
            List <ParameterSetting> parameters = new List <ParameterSetting>();
            var childNodes = doc["Root"]?.ChildNodes;

            if (childNodes == null)
            {
                return;
            }
            foreach (XmlNode child in childNodes)
            {
                if (child.Name == "Parameter")
                {
                    ParameterSetting current = new ParameterSetting();
                    var childAttributes      = child.Attributes;
                    if (childAttributes != null)
                    {
                        current.Start   = float.Parse(childAttributes["Start"].InnerText);
                        current.Stop    = float.Parse(childAttributes["Stop"].InnerText);
                        current.Current = current.Start;
                        if (child.HasChildNodes)
                        {
                            var nodes = child.ChildNodes;
                            current.Names = new string[nodes.Count];
                            for (int i = 0; i < nodes.Count; i++)
                            {
                                var grandChildAttributes = nodes[i].Attributes;
                                if (grandChildAttributes != null)
                                {
                                    var modeName      = grandChildAttributes["Mode"].InnerText;
                                    var parameterName = grandChildAttributes["Name"].InnerText;
                                    current.Names[i] = String.Concat(modeName, '.', parameterName);
                                }
                            }
                        }
                        else
                        {
                            var modeName      = childAttributes["Mode"].InnerText;
                            var parameterName = String.Concat(modeName, '.', childAttributes["Name"].InnerText);
                            current.Names = new[] { parameterName };
                        }
                        if (!ValidateParameterNames || ValidateParameterName(current))
                        {
                            parameters.Add(current);
                        }
                        else
                        {
                            throw new XTMFRuntimeException(this,
                                                           "This parameter is invalid.  Please make sure the mode exists and that it has a parameter with the given name!\r\n" +
                                                           child.OuterXml);
                        }
                    }
                }
            }
            Parameters = parameters.ToArray();
        }
Esempio n. 9
0
 public void ParamSetExecuteChanged()
 {
     if (UserInfoHelper.IsHaveLogin)
     {
         ParameterSetting setWin = new ParameterSetting();
         setWin.ShowDialog();
     }
 }
        void _parameters_Click(object sender, RoutedEventArgs e)
        {
            ParameterSetting paramSetting = new ParameterSetting(this._host, false);

            paramSetting.Owner = this._host;
            paramSetting.ShowDialog();
            paramSetting = null;
        }
Esempio n. 11
0
 public ActionResult Edit(ParameterSetting parametersetting)
 {
     if (ModelState.IsValid)
     {
         db.Entry(parametersetting).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(parametersetting));
 }
        protected override bool Setting()
        {
            ParameterSetting dlg = new ParameterSetting(_db);

            if (dlg.ShowDialog(this) == DialogResult.Cancel)
            {
                return(false);
            }
            _bkSeries.Clear();
            return(true);
        }
 private int IndexOf(ParameterSetting[] parameters, ParameterSetting selectedParameter)
 {
     for (int i = 0; i < parameters.Length; i++)
     {
         if (parameters[i] == selectedParameter)
         {
             return(i);
         }
     }
     return(-1);
 }
Esempio n. 14
0
        static void Main(string[] args)
        {
            if (args.Length <= 0)
            {
                Console.WriteLine("Please specify config file:");
                return;
            }
            ParameterSetting.LoadArgs(args[0]);

            RunPipeline();
        }
Esempio n. 15
0
        private void SaveCheckoutBranchField()
        {
            string text = cboCheckoutBranch.Text;

            if (text.Trim().Length == 0)
            {
                Administrator.ProfileManager.BranchCheckoutSettings.Delete(Administrator.ProfileManager.BranchCheckoutSettings.SelectedKey);
                InitialiseCheckoutBranchField();
                return;
            }
            if (!Administrator.ProfileManager.BranchCheckoutSettings.Keys.Contains(text))
            {
                ParameterSetting setting = new ParameterSetting
                {
                    Key   = text,
                    Value = text,
                };
                Administrator.ProfileManager.BranchCheckoutSettings.Persist(setting);
                InitialiseCheckoutBranchField();
            }
            else
            {
                Administrator.ProfileManager.BranchCheckoutSettings.Select(text);
            }
            // Change related fields.
            if (text.Trim().Length > 0)
            {
                cboRemoteBranch.Text = text;
                cboLocalBranch.Text  = text;
                string currentCommentIssueIdentifier = GetIssueIdentifier(cboComment.Text);
                string newBranchIssueIdentifier      = GetIssueIdentifier(text);
                if (newBranchIssueIdentifier.Length > 0)
                {
                    if (newBranchIssueIdentifier != currentCommentIssueIdentifier)
                    {
                        List <string> sortedComments = Administrator.ProfileManager.CommentSettings.Keys.ToList();
                        sortedComments.Sort();
                        string comment = string.Empty;
                        foreach (string c in sortedComments)
                        {
                            if (c.StartsWith(newBranchIssueIdentifier))
                            {
                                comment = c;
                                break;
                            }
                        }
                        if (comment.Length > 0)
                        {
                            cboComment.Text = comment;
                        }
                    }
                }
            }
        }
Esempio n. 16
0
 private void SaveOneFileSpecField(string fileSpec)
 {
     if (!Administrator.ProfileManager.FileSpecSettings.Keys.Contains(fileSpec))
     {
         ParameterSetting setting = new ParameterSetting
         {
             Key   = fileSpec,
             Value = fileSpec,
         };
         Administrator.ProfileManager.FileSpecSettings.Persist(setting);
     }
 }
Esempio n. 17
0
        private void SaveCommentField()
        {
            string text = cboComment.Text;

            if (text.Trim().Length == 0)
            {
                Administrator.ProfileManager.CommentSettings.Delete(Administrator.ProfileManager.CommentSettings.SelectedKey);
                InitialiseCommentField();
                return;
            }
            if (!Administrator.ProfileManager.CommentSettings.Keys.Contains(text))
            {
                ParameterSetting setting = new ParameterSetting
                {
                    Key   = text,
                    Value = text,
                };
                Administrator.ProfileManager.CommentSettings.Persist(setting);
                InitialiseCommentField();
            }
            else
            {
                Administrator.ProfileManager.CommentSettings.Select(text);
            }
            // Change related fields.
            if (text.Trim().Length > 0)
            {
                string currentBranchIssueIdentifier = GetIssueIdentifier(cboCheckoutBranch.Text);
                string newCommentIssueIdentifier    = GetIssueIdentifier(text);
                if (newCommentIssueIdentifier.Length > 0)
                {
                    if (newCommentIssueIdentifier != currentBranchIssueIdentifier)
                    {
                        List <string> sortedBranches = Administrator.ProfileManager.BranchCheckoutSettings.Keys.ToList();
                        sortedBranches.Sort();
                        string branch = string.Empty;
                        foreach (string b in sortedBranches)
                        {
                            if (b.Contains(newCommentIssueIdentifier))
                            {
                                branch = b;
                                break;
                            }
                        }
                        if (branch.Length > 0)
                        {
                            cboCheckoutBranch.Text = branch;
                        }
                    }
                }
            }
        }
Esempio n. 18
0
        private void SetupParameters(List <ParameterSetting> list)
        {
            var param = new ParameterSetting[list.Count];

            for (int i = 0; i < param.Length; i++)
            {
                var other = list[i];
                param[i]         = new ParameterSetting();
                param[i].Minimum = other.Minimum;
                param[i].Maximum = other.Maximum;
                param[i].Current = (other.Maximum + other.Minimum) / 2;
            }
            LocalSpaces = param;
        }
 private ParameterSetting[] Clone(ParameterSetting[] parameters)
 {
     ParameterSetting[] ret = new ParameterSetting[parameters.Length];
     for (int i = 0; i < parameters.Length; i++)
     {
         ret[i] = new ParameterSetting()
         {
             Current        = parameters[i].Current,
             Names          = parameters[i].Names,
             Minimum        = parameters[i].Minimum,
             Maximum        = parameters[i].Maximum,
             NullHypothesis = parameters[i].NullHypothesis
         };
     }
     return(ret);
 }
Esempio n. 20
0
 private bool ValidateParameterName(ParameterSetting current)
 {
     for (int i = 0; i < current.Names.Length; i++)
     {
         var parts = current.Names[i].Split('.');
         if (parts.Length != 2)
         {
             throw new XTMFRuntimeException(this, "We were unable to validate the parameter name '" + current.Names[i] + "'!");
         }
         if (GetVariableName(parts[0], parts[1]) == null)
         {
             return(false);
         }
     }
     return(true);
 }
Esempio n. 21
0
        public List <Job> CreateJobsForIteration()
        {
            var ret             = new List <Job>();
            var parameters      = this.Root.Parameters.ToArray();
            int totalParameters = parameters.Sum(p => p.Names.Length);

            using (CsvReader reader = new CsvReader(this.ResultFile.GetFilePath()))
            {
                reader.LoadLine();
                int columns;
                while (reader.LoadLine(out columns))
                {
                    //+2 for generation and value
                    if (columns >= totalParameters + 2)
                    {
                        var jobParameters = new ParameterSetting[parameters.Length];
                        var job           = new Job()
                        {
                            ProcessedBy = null,
                            Processing  = false,
                            Processed   = false,
                            Value       = float.NaN,
                            Parameters  = jobParameters
                        };
                        var columnIndex = 2;
                        for (int i = 0; i < parameters.Length; i++)
                        {
                            jobParameters[i] = new ParameterSetting()
                            {
                                Names   = parameters[i].Names,
                                Minimum = parameters[i].Minimum,
                                Maximum = parameters[i].Maximum
                            };
                            reader.Get(out jobParameters[i].Current, columnIndex);
                            columnIndex += parameters[i].Names.Length;
                        }
                        ret.Add(job);
                        if (NumberOfRows > 0 & ret.Count >= NumberOfRows)
                        {
                            break;
                        }
                    }
                }
            }
            return(ret);
        }
Esempio n. 22
0
        protected override bool Setting()
        {
            base.Setting();
            ParameterSetting dlg = new ParameterSetting(_db);

            if (dlg.ShowDialog(this) == DialogResult.Cancel)
            {
                return(false);
            }
            if (this._db != null)
            {
                _db.time_start  = Properties.Settings.Default.DefaultDateTimeStart;
                _db.time_end    = Properties.Settings.Default.DefaultDateTimeEnd;
                _db.TestBench   = Properties.Settings.Default.DefaultTestBench;
                _db.ProductType = Properties.Settings.Default.ProductType;
            }
            return(true);
        }
        void _insetParameter_Click(object sender, RoutedEventArgs e)
        {
            ParameterSetting parameterSetting = new ParameterSetting(this._host, true);

            parameterSetting.Owner = this._host;
            parameterSetting.ShowDialog();
            if (string.IsNullOrEmpty(parameterSetting.ParameterName))
            {
                return;
            }
            if (this.main.SelectedText == null)
            {
                this.main.Text = this.main.Text.Insert(this.main.CaretIndex, parameterSetting.ParameterName);
            }
            else
            {
                this.main.SelectedText    = parameterSetting.ParameterName;
                this.main.CaretIndex     += this.main.SelectedText.Length;
                this.main.SelectionLength = 0;
            }
        }
Esempio n. 24
0
        private static ParameterSetting[] LoadBaseParameters(ParameterSetting[] parameters, CsvReader reader, int[] columnMap)
        {
            var baseParameters = new ParameterSetting[parameters.Length];

            // we only read the first line
            if (reader.LoadLine(out int columns))
            {
                for (int i = 0; i < parameters.Length; i++)
                {
                    baseParameters[i] = new ParameterSetting()
                    {
                        Names   = parameters[i].Names,
                        Minimum = parameters[i].Minimum,
                        Maximum = parameters[i].Maximum
                    };
                }

                for (int i = 0; i < columnMap.Length; i++)
                {
                    reader.Get(out baseParameters[columnMap[i]].Current, i + 2);
                }
            }
            return(baseParameters);
        }
Esempio n. 25
0
 private void SetupParameters(List<ParameterSetting> list)
 {
     var param = new ParameterSetting[list.Count];
     for ( int i = 0; i < param.Length; i++ )
     {
         var other = list[i];
         param[i] = new ParameterSetting();
         param[i].Minimum = other.Minimum;
         param[i].Maximum = other.Maximum;
         param[i].Current = ( other.Maximum + other.Minimum ) / 2;
     }
     this.LocalSpaces = param;
 }
Esempio n. 26
0
 private void LoadParameterInstructions()
 {
     XmlDocument doc = new XmlDocument();
     doc.Load( this.ParameterInstructions );
     List<ParameterSetting> parameters = new List<ParameterSetting>();
     foreach ( XmlNode child in doc["Root"].ChildNodes )
     {
         if ( child.Name == "Parameter" )
         {
             ParameterSetting current = new ParameterSetting();
             current.ParameterName = child.Attributes["Name"].InnerText;
             current.MSNumber = int.Parse( child.Attributes["MS"].InnerText );
             current.Start = float.Parse( child.Attributes["Start"].InnerText );
             current.Stop = float.Parse( child.Attributes["Stop"].InnerText );
             current.Current = current.Start;
             parameters.Add( current );
         }
     }
     this.Parameters = parameters.ToArray();
 }
Esempio n. 27
0
        public void Explore(ParameterSetting[] parameters, Action UpdateProgress, Func<ParameterSetting[], float> evaluationfunction)
        {
            this.Progress = 0;
            Random rand = new Random( ( ++this.NumberOfExplorations ) * ( this.RandomSeed ) );
            var numberOfParameters = parameters.Length;
            this.Kernel = parameters.Clone() as ParameterSetting[];
            this.GenerateRandomSeed( rand );
            float[,] explorationErrors = new float[numberOfParameters, 2];
            float[,] explorationGradients = new float[numberOfParameters, 2];
            ParameterSetting[,][] explorationPoints = new ParameterSetting[numberOfParameters, 2][];

            for ( int i = 0; i < numberOfParameters; i++ )
            {
                for ( int j = 0; j < 2; j++ )
                {
                    explorationPoints[i, j] = parameters.Clone() as ParameterSetting[];
                }
            }

            // Explore it for all of the pre-defined iterations
            for ( int iteration = 0; iteration < this.TotalIterations; iteration++ )
            {
                this.CurrentIteration = iteration;
                this.Progress = (float)iteration / this.TotalIterations;
                UpdateProgress();
                // figure out how good our point is
                if ( this.Exit )
                {
                    break;
                }
                var kernelError = evaluationfunction( this.Kernel );
                // Calculate all of the errors
                GenerateExplorationPoints( numberOfParameters, this.Kernel, explorationPoints, explorationErrors, evaluationfunction, UpdateProgress );
                // Calculate the gradients from the errors
                ComputeGradients( numberOfParameters, explorationErrors, explorationGradients, kernelError );
                MoveKernel( explorationGradients, rand );
            }
            this.Progress = 1;
        }
Esempio n. 28
0
 public float ComplexErrorFunction(ParameterSetting[] parameters, TransitLine[] transitLine, TransitLine[] predicted, float[] aggToTruth)
 {
     float sum = 0;
     //var regionError = this.ComputeRegionError( transitLine, predicted );
     //var lineByLine = this.ComputeLineError( transitLine, aggToTruth );
     foreach ( var tally in this.ErrorTallies )
     {
         sum += tally.ComputeError( parameters, transitLine, predicted );
     }
     return sum;
 }
Esempio n. 29
0
 private int IndexOf(ParameterSetting[] parameters, ParameterSetting selectedParameter)
 {
     for(int i = 0; i < parameters.Length; i++)
     {
         if(parameters[i] == selectedParameter) return i;
     }
     return -1;
 }
Esempio n. 30
0
 internal Job UpdatePosition(ParticleSwarmOptimization us)
 {
     var temp = Job.Parameters;
     Job job = new Job();
     job.Processed = false;
     job.ProcessedBy = null;
     job.Processing = false;
     job.Value = float.NaN;
     var parameters = job.Parameters = new ParameterSetting[temp.Length];
     for(int i = 0; i < temp.Length; i++)
     {
         parameters[i] = new ParameterSetting();
         // we need to move in real parameter space instead of relative parameter space
         parameters[i].Current = temp[i].Current + Velocity[i] * (temp[i].Size);
         // clamp the value inside of parameter space
         if(parameters[i].Current < (parameters[i].Minimum = temp[i].Minimum))
         {
             parameters[i].Current = temp[i].Minimum;
             Velocity[i] = -Velocity[i];
         }
         if(parameters[i].Current > (parameters[i].Maximum = temp[i].Maximum))
         {
             parameters[i].Current = temp[i].Maximum;
             Velocity[i] = -Velocity[i];
         }
     }
     return (Job = job);
 }
Esempio n. 31
0
 private GenerationJob[] GetLowestBest(CsvReader reader, ParameterSetting[] parameters)
 {
     List<GenerationJob> best = new List<GenerationJob>( this.ResultsToSave + 2 );
     GenerationJob currentJob;
     var maxResults = this.ResultsToSave;
     while ( ( currentJob = ReadJob( reader, parameters ) ) != null )
     {
         int index = -1;
         // Always accept the first one
         if ( best.Count > 0 )
         {
             //check the last one first since they are in order to see if we need to check each one
             if ( currentJob.Job.Value < best[best.Count - 1].Job.Value )
             {
                 for ( int i = 0; i < best.Count; i++ )
                 {
                     if ( currentJob.Job.Value < best[i].Job.Value )
                     {
                         index = i;
                         break;
                     }
                 }
             }
         }
         if ( index >= 0 )
         {
             best.Insert( index, currentJob );
             if ( best.Count > maxResults )
             {
                 best.RemoveAt( best.Count - 1 );
             }
         }
         // if we don't have enough just add
         else if ( index == -1 & best.Count < maxResults )
         {
             best.Add( currentJob );
         }
     }
     return best.ToArray();
 }
Esempio n. 32
0
 private Job CreateWithout(ParameterSetting[] baseParameters, int index)
 {
     var parameters = Clone(baseParameters);
     parameters[index].Current = 0.0f;
     return CreateJob(parameters);
 }
Esempio n. 33
0
 public void Explore(ParameterSetting[] parameters, Action UpdateProgress, Func<ParameterSetting[], float> evaluationfunction)
 {
     this.Exit = false;
     this.Progress = 0;
     this.Explore( parameters, UpdateProgress, evaluationfunction, 0 );
     this.Progress = 1;
     UpdateProgress();
 }
Esempio n. 34
0
 public float ComplexErrorFunction(ParameterSetting[] parameters, TransitLine[] transitLine, TransitLine[] predicted, float[] aggToTruth)
 {
     return this.ErrorTally.ComputeError( parameters, transitLine, predicted );
 }
Esempio n. 35
0
 private Job CreateWithOffset(ParameterSetting[] baseParameters, int index, float delta)
 {
     var parameters = Clone(baseParameters);
     parameters[index].Current += delta * (parameters[index].Maximum - parameters[index].Minimum);
     return CreateJob(parameters);
 }
Esempio n. 36
0
        private void GenerateExplorationPoints(int numberOfParameters, ParameterSetting[] kernel, ParameterSetting[,][] explorationPoints
            , float[,] explorationErrors, Func<ParameterSetting[], float> evaluationfunction, Action UpdateProgress)
        {
            for ( int i = 0; i < numberOfParameters; i++ )
            {
                for ( int j = 0; j < numberOfParameters; j++ )
                {
                    if ( i != j )
                    {
                        explorationPoints[i, 0][j].Current = kernel[j].Current;
                        explorationPoints[i, 1][j].Current = kernel[j].Current;
                        explorationPoints[i, 2][j].Current = kernel[j].Current;
                        explorationPoints[i, 3][j].Current = kernel[j].Current;
                    }
                    else
                    {
                        for ( int k = 0; k < 4; k++ )
                        {
                            float currentWhisker;
                            switch ( k )
                            {
                                case 0:
                                    currentWhisker = this.WhiskerLength * -2;
                                    break;

                                case 1:
                                    currentWhisker = -this.WhiskerLength;
                                    break;

                                case 2:
                                    currentWhisker = this.WhiskerLength;
                                    break;

                                default:
                                    currentWhisker = this.WhiskerLength * 2;
                                    break;
                            }
                            explorationPoints[i, k][j].Current = kernel[j].Current + ( kernel[j].Stop - kernel[j].Start ) * currentWhisker;
                            if ( explorationPoints[i, k][j].Current < explorationPoints[i, k][j].Start )
                            {
                                explorationPoints[i, k][j].Current = explorationPoints[i, k][j].Start;
                            }
                            else if ( explorationPoints[i, k][j].Current > explorationPoints[i, k][j].Stop )
                            {
                                explorationPoints[i, k][j].Current = explorationPoints[i, k][j].Stop;
                            }
                        }
                    }
                }
                for ( int k = 0; k < 4; k++ )
                {
                    if ( this.Exit )
                    {
                        break;
                    }
                    explorationErrors[i, k] = evaluationfunction( explorationPoints[i, k] );
                    this.Progress = (float)( (float)this.CurrentIteration / this.TotalIterations )
                        + ( 1.0f / this.TotalIterations ) * ( ( i * 4 + k ) / (float)( numberOfParameters * 4 ) );
                    UpdateProgress();
                }
            }
        }
Esempio n. 37
0
        public void Explore(ParameterSetting[] parameters, Action UpdateProgress, Func<ParameterSetting[], float> evaluationfunction)
        {
            this.Progress = 0;
            Random rand = new Random( ( ++this.NumberOfExplorations ) * ( this.RandomSeed ) );
            var numberOfParameters = parameters.Length;
            this.Kernel = parameters.Clone() as ParameterSetting[];
            this.ParameterVolatility = new float[numberOfParameters];
            this.PreviousVolatility = new float[numberOfParameters];
            this.Momentum = new float[numberOfParameters];
            this.MoveChoice = new float[numberOfParameters];
            this.PreviousMoveChoice = new float[numberOfParameters];
            this.GenerateRandomSeed( rand );
            float[,] explorationErrors = new float[numberOfParameters, 4];
            float[,] explorationGradients = new float[numberOfParameters, 4];
            ParameterSetting[,][] explorationPoints = new ParameterSetting[numberOfParameters, 4][];
            float bestSoFar = float.MaxValue;
            int numberOfIterationSinceBest = 0;

            for ( int i = 0; i < numberOfParameters; i++ )
            {
                for ( int j = 0; j < 4; j++ )
                {
                    explorationPoints[i, j] = parameters.Clone() as ParameterSetting[];
                }
            }

            // Explore it for all of the pre-defined iterations
            for ( int iteration = 0; iteration < this.TotalIterations; iteration++ )
            {
                this.CurrentIteration = iteration;
                this.Progress = (float)iteration / this.TotalIterations;
                UpdateProgress();
                // figure out how good our point is
                if ( this.Exit )
                {
                    break;
                }
                var kernelError = evaluationfunction( this.Kernel );
                if ( kernelError < bestSoFar )
                {
                    bestSoFar = kernelError;
                    numberOfIterationSinceBest = 0;
                }
                else if ( ( ++numberOfIterationSinceBest ) > this.IterationsFromBest )
                {
                    break;
                }
                // Calculate all of the errors
                GenerateExplorationPoints( numberOfParameters, this.Kernel, explorationPoints, explorationErrors, evaluationfunction, UpdateProgress );
                // Calculate the gradients from the errors
                ComputeGradients( numberOfParameters, explorationErrors, explorationGradients, kernelError );
                ComputeVolatility( explorationGradients, kernelError );
                if ( EarlyTermination() )
                {
                    break;
                }
                MoveKernel( explorationGradients, rand );
                var moveChoiceTemp = PreviousMoveChoice;
                PreviousMoveChoice = MoveChoice;
                MoveChoice = moveChoiceTemp;
            }
            this.Progress = 1;
        }
Esempio n. 38
0
 private static float RelativeDistance(ParameterSetting parameter, float ourValue, float otherValue)
 {
     return((otherValue - ourValue) / parameter.Size);
 }
Esempio n. 39
0
 private void Explore(ParameterSetting[] parameters, Action UpdateProgress, Func<ParameterSetting[], float> evaluationfunction, int parameterIndex)
 {
     float point = parameters[parameterIndex].Start;
     for ( ; point < parameters[parameterIndex].Stop; point += ( parameters[parameterIndex].Stop - parameters[parameterIndex].Start ) * this.Interval )
     {
         parameters[parameterIndex].Current = point;
         if ( parameterIndex >= parameters.Length - 1 )
         {
             var result = evaluationfunction( parameters );
             this.Progress = this.Progress + ( 1f / (float)Math.Pow( 1f / this.Interval, parameters.Length ) );
             UpdateProgress();
         }
         else
         {
             this.Explore( parameters, UpdateProgress, evaluationfunction, parameterIndex + 1 );
         }
         if ( this.Exit )
         {
             break;
         }
     }
 }
Esempio n. 40
0
 public float ComputeError(ParameterSetting[] parameters, TransitLine[] transitLine, TransitLine[] predicted)
 {
     List<Pair<char, char>> foundModes = new List<Pair<char, char>>();
     var ttsLines = transitLine.Length;
     var predictedLines = predicted.Length;
     var compairePair = new Pair<char, char>();
     for ( int i = 0; i < ttsLines; i++ )
     {
         if ( i > transitLine.Length )
         {
             throw new XTMFRuntimeException( String.Format( "i = {0}, ttsLines = {1}, transitLine.Length = {2}",
                 i, ttsLines, transitLine.Length ) );
         }
         var mode = transitLine[i].Mode;
         if ( transitLine[i].ID == null )
         {
             throw new XTMFRuntimeException( "There is a TTS line without an ID!" );
         }
         else if ( transitLine[i].ID.Length < 1 )
         {
             throw new XTMFRuntimeException( "There is a TTS line without an ID!" );
         }
         else if ( transitLine[i].ID[0].Length < 1 )
         {
             throw new XTMFRuntimeException( "There is an invalid ID for the TTS line #" + i + "!" );
         }
         var firstLetter = transitLine[i].ID[0][0];
         compairePair.First = mode;
         compairePair.Second = firstLetter;
         if ( !foundModes.Contains( compairePair ) )
         {
             foundModes.Add( new Pair<char, char>( mode, firstLetter ) );
         }
     }
     var numberOfModesFirstLetters = foundModes.Count;
     float[] aggTTSToMode = new float[numberOfModesFirstLetters];
     float[] aggPredToMode = new float[numberOfModesFirstLetters];
     // first pass agg all of the tts numbers
     var testPair = new Pair<char, char>();
     for ( int i = 0; i < ttsLines; i++ )
     {
         testPair.First = transitLine[i].Mode;
         testPair.Second = transitLine[i].ID[0][0];
         var indexOfTransitLine = foundModes.IndexOf( testPair );
         if ( indexOfTransitLine == -1 )
         {
             continue;
         }
         aggTTSToMode[indexOfTransitLine] += transitLine[i].Bordings;
     }
     // second pass agg all of the predicted numbers
     for ( int i = 0; i < predictedLines; i++ )
     {
         testPair.First = predicted[i].Mode;
         testPair.Second = predicted[i].ID[0][0];
         var indexOfPredictedMode = foundModes.IndexOf( testPair );
         if ( indexOfPredictedMode == -1 )
         {
             continue;
         }
         aggPredToMode[indexOfPredictedMode] += predicted[i].Bordings;
     }
     double rmse = 0;
     double mabs = 0;
     double terror = 0;
     for ( int i = 0; i < numberOfModesFirstLetters; i++ )
     {
         float error = this.RegionPercentError ? (float)( Math.Abs( aggPredToMode[i] - aggTTSToMode[i] ) / aggTTSToMode[i] ) : aggTTSToMode[i] - aggPredToMode[i];
         rmse += error * error;
         mabs += Math.Abs( error );
         terror += error;
     }
     var finalError = (float)( ( rmse * this.RMSEWeight ) + ( mabs * this.MABSWeight ) + ( terror * this.TERRORWeight ) );
     if ( !String.IsNullOrWhiteSpace( this.RegionErrorFile ) )
     {
         bool exists = File.Exists( this.RegionErrorFile );
         using ( var writer = new StreamWriter( this.RegionErrorFile, true ) )
         {
             if ( !exists )
             {
                 for ( int i = 0; i < numberOfModesFirstLetters; i++ )
                 {
                     writer.Write( foundModes[i].Second );
                     writer.Write( ':' );
                     writer.Write( foundModes[i].First );
                     if ( i == numberOfModesFirstLetters - 1 )
                     {
                         if ( this.RegionPercentError )
                         {
                             writer.WriteLine( ",%Error" );
                         }
                         else
                         {
                             writer.WriteLine( ",Error" );
                         }
                     }
                     else
                     {
                         writer.Write( ',' );
                     }
                 }
             }
             for ( int i = 0; i < numberOfModesFirstLetters; i++ )
             {
                 if ( this.RegionPercentError )
                 {
                     writer.Write( (float)( Math.Abs( aggPredToMode[i] - aggTTSToMode[i] ) / aggTTSToMode[i] ) );
                 }
                 else
                 {
                     writer.Write( aggPredToMode[i] - aggTTSToMode[i] );
                 }
                 writer.Write( ',' );
             }
             writer.WriteLine( finalError );
         }
     }
     return finalError;
 }
Esempio n. 41
0
 private void GenerateExplorationPoints(int numberOfParameters, ParameterSetting[] kernel, ParameterSetting[,][] explorationPoints
     , float[,] explorationErrors, Func<ParameterSetting[], float> evaluationfunction, Action UpdateProgress)
 {
     for ( int i = 0; i < numberOfParameters; i++ )
     {
         for ( int j = 0; j < numberOfParameters; j++ )
         {
             if ( i != j )
             {
                 explorationPoints[i, 0][j].Current = kernel[j].Current;
                 explorationPoints[i, 1][j].Current = kernel[j].Current;
             }
             else
             {
                 for ( int k = 0; k < 2; k++ )
                 {
                     explorationPoints[i, k][j].Current = kernel[j].Current + ( kernel[j].Stop - kernel[j].Start ) * ( k == 0 ? -this.WhiskerLength : this.WhiskerLength );
                     if ( explorationPoints[i, k][j].Current < explorationPoints[i, k][j].Start )
                     {
                         explorationPoints[i, k][j].Current = explorationPoints[i, k][j].Start;
                     }
                     else if ( explorationPoints[i, k][j].Current > explorationPoints[i, k][j].Stop )
                     {
                         explorationPoints[i, k][j].Current = explorationPoints[i, k][j].Stop;
                     }
                 }
             }
         }
         for ( int k = 0; k < 2; k++ )
         {
             if ( this.Exit )
             {
                 break;
             }
             explorationErrors[i, k] = evaluationfunction( explorationPoints[i, k] );
             this.Progress = (float)( (float)this.CurrentIteration / this.TotalIterations )
                 + ( 1.0f / this.TotalIterations ) * ( ( i * 2 + k ) / (float)( numberOfParameters * 2 ) );
             UpdateProgress();
         }
     }
 }
Esempio n. 42
0
 private Job CreateZero(ParameterSetting[] baseParameters)
 {
     var parameters = Clone(baseParameters);
     for(int i = 0; i < parameters.Length; i++)
     {
         parameters[i].Current = parameters[i].NullHypothesis;
     }
     return CreateJob(parameters);
 }
Esempio n. 43
0
 private float EvaluteParameters(ParameterSetting[] parameters)
 {
     SetupInputFiles( parameters );
     this.NetworkAssignment.RunNetworkAssignment();
     return ProcessResults( parameters );
 }
            internal Job UpdatePosition(ParticleSwarmOptimization us, Random rand)
            {
                var temp = Job.Parameters;
                var job  = new Job
                {
                    Processed   = false,
                    ProcessedBy = null,
                    Processing  = false,
                    Value       = float.NaN
                };
                var parameters = job.Parameters = new ParameterSetting[temp.Length];

                for (int i = 0; i < temp.Length; i++)
                {
                    parameters[i] = new ParameterSetting
                    {
                        // we need to move in real parameter space instead of relative parameter space
                        Current = temp[i].Current + Velocity[i] * (temp[i].Size)
                    };
                    // clamp the value inside of parameter space
                    if (parameters[i].Current < (parameters[i].Minimum = temp[i].Minimum))
                    {
                        // reflect off the boundary instead of being absorbed
                        switch (us.Bounce)
                        {
                        case BounceStrategy.Reflect:
                            parameters[i].Current = Math.Min(temp[i].Minimum + (temp[i].Minimum - parameters[i].Current), temp[i].Maximum);
                            break;

                        case BounceStrategy.RandomReallocation:
                            parameters[i].Current = (float)(rand.NextDouble() * (temp[i].Maximum - temp[i].Minimum) + temp[i].Minimum);
                            break;

                        case BounceStrategy.Absorb:
                            parameters[i].Current = parameters[i].Minimum;
                            break;
                        }

                        if (us.Momentum > 0)
                        {
                            Velocity[i] = -Velocity[i];
                        }
                    }
                    if (parameters[i].Current > (parameters[i].Maximum = temp[i].Maximum))
                    {
                        // reflect off the boundary instead of being absorbed
                        switch (us.Bounce)
                        {
                        case BounceStrategy.Reflect:
                            parameters[i].Current = Math.Max(temp[i].Maximum - (parameters[i].Current - temp[i].Maximum), temp[i].Minimum);
                            break;

                        case BounceStrategy.RandomReallocation:
                            parameters[i].Current = (float)(rand.NextDouble() * (temp[i].Maximum - temp[i].Minimum) + temp[i].Minimum);
                            break;

                        case BounceStrategy.Absorb:
                            parameters[i].Current = parameters[i].Maximum;
                            break;
                        }
                        if (us.Momentum > 0)
                        {
                            Velocity[i] = -Velocity[i];
                        }
                    }
                }
                return(Job = job);
            }
Esempio n. 45
0
        public ActionResult Edit(int id)
        {
            ParameterSetting parametersetting = db.ParameterSettings.Find(id);

            return(View(parametersetting));
        }
Esempio n. 46
0
 private static float RelativeDistance(ParameterSetting parameter, float ourValue, float otherValue)
 {
     return (otherValue - ourValue) / parameter.Size;
 }
Esempio n. 47
0
 private void SaveEvaluation(ParameterSetting[] param, float value, double rmse, double mabs, double terror)
 {
     if ( this.Client != null )
     {
         var paramLength = param.Length;
         float[] results = new float[paramLength + 4];
         for ( int i = 0; i < paramLength; i++ )
         {
             results[i] = param[i].Current;
         }
         results[paramLength] = value;
         results[paramLength + 1] = (float)rmse;
         results[paramLength + 2] = (float)mabs;
         results[paramLength + 3] = (float)terror;
         this.Client.SendCustomMessage( results, this.ResultPort );
         results = null;
     }
     bool exists = File.Exists( this.EvaluationFile );
     using ( StreamWriter writer = new StreamWriter( this.EvaluationFile, true ) )
     {
         if ( !exists )
         {
             writer.Write( param[0].ParameterName );
             for ( int i = 1; i < param.Length; i++ )
             {
                 writer.Write( ',' );
                 writer.Write( param[i].ParameterName );
             }
             writer.Write( ',' );
             writer.Write( "Value" );
             writer.Write( ',' );
             writer.Write( "rmse" );
             writer.Write( ',' );
             writer.Write( "mabs" );
             writer.Write( ',' );
             writer.WriteLine( "terror" );
         }
         if ( this.FirstRun && exists )
         {
             writer.WriteLine();
         }
         this.FirstRun = false;
         writer.Write( param[0].Current );
         for ( int i = 1; i < param.Length; i++ )
         {
             writer.Write( ',' );
             writer.Write( param[i].Current );
         }
         writer.Write( ',' );
         writer.Write( value );
         writer.Write( ',' );
         writer.Write( rmse );
         writer.Write( ',' );
         writer.Write( mabs );
         writer.Write( ',' );
         writer.WriteLine( terror );
     }
 }
Esempio n. 48
0
 public float ComplexErrorFunction(ParameterSetting[] parameters, Emme.TransitLine[] transitLine, Emme.TransitLine[] predicted, float[] aggToTruth)
 {
     throw new NotImplementedException();
 }
Esempio n. 49
0
 private GenerationJob ReadJob(CsvReader reader, ParameterSetting[] parameters)
 {
     int columns;
     while ( reader.LoadLine( out columns ) )
     {
         if ( columns >= parameters.Length + 2 )
         {
             var localParameters = CloneParameters( parameters );
             var job = new Job()
             {
                 ProcessedBy = null,
                 Processed = false,
                 Processing = false,
                 Parameters = localParameters
             };
             int generation;
             reader.Get( out generation, 0 );
             GenerationJob genJob = new GenerationJob( job, generation );
             // we don't load the generation
             reader.Get( out job.Value, 1 );
             for ( int i = 0; i < localParameters.Length; i++ )
             {
                 reader.Get( out localParameters[i].Current, i + 2 );
             }
             return genJob;
         }
     }
     return null;
 }
Esempio n. 50
0
 private void SetupInputFiles(ParameterSetting[] param)
 {
     /*
      * t matrices
      * m ms[MS:##] [NAME]
      *  all all: [VALUE]
      */
     using ( StreamWriter writer = new StreamWriter( this.MacroInputFile ) )
     {
         writer.WriteLine( "t matrices" );
         foreach ( var p in param )
         {
             writer.WriteLine( String.Format( "m ms{0} {1}", p.MSNumber, p.ParameterName ) );
             writer.WriteLine( String.Format( " all all: {0}", p.Current ) );
         }
     }
 }
Esempio n. 51
0
 public float ComputeError(ParameterSetting[] parameters, TransitLine[] truth, TransitLine[] predicted)
 {
     var first = this.FirstTally.ComputeError( parameters, truth, predicted );
     var second = this.SecondTally.ComputeError( parameters, truth, predicted );
     return ( first * FirstWeight ) + ( second * SecondWeight );
 }
Esempio n. 52
0
 private void buttonConditions_Click(object sender, EventArgs e)
 {
     settings = new ParameterSetting(_db);
     settings.ShowDialog();
 }
Esempio n. 53
0
        private static ParameterSetting[] LoadBaseParameters(ParameterSetting[] parameters, CsvReader reader, int[] columnMap)
        {
            var baseParameters = new ParameterSetting[parameters.Length];
            // we only read the first line
            int columns;
            if(reader.LoadLine(out columns))
            {
                var job = new Job()
                {
                    ProcessedBy = null,
                    Processing = false,
                    Processed = false,
                    Value = float.NaN,
                    Parameters = baseParameters
                };

                for(int i = 0; i < parameters.Length; i++)
                {
                    baseParameters[i] = new ParameterSetting()
                    {
                        Names = parameters[i].Names,
                        Minimum = parameters[i].Minimum,
                        Maximum = parameters[i].Maximum
                    };
                }

                for(int i = 0; i < columnMap.Length; i++)
                {
                    reader.Get(out baseParameters[columnMap[i]].Current, i + 2);
                }
            }
            return baseParameters;
        }
Esempio n. 54
0
        private float ProcessResults(ParameterSetting[] param)
        {
            TransitLines currentLines = new TransitLines( this.MacroOutputFile );
            var predicted = currentLines.Lines;
            var numberOfLines = predicted.Length;
            double rmse = 0;
            double mabs = 0;
            double terror = 0;
            float[] aggToTruth = new float[this.Truth.Length];
            List<KeyValuePair<string, float>> Orphans = new List<KeyValuePair<string, float>>();
            for ( int i = 0; i < numberOfLines; i++ )
            {
                int index = -1;
                bool orphan = true;
                for ( int j = 0; j < this.Truth.Length; j++ )
                {
                    bool found = false;
                    foreach ( var line in predicted[i].ID )
                    {
                        if ( this.Truth[j].ID.Contains( line ) )
                        {
                            index = j;
                            found = true;
                            break;
                        }
                    }
                    if ( found )
                    {
                        orphan = false;
                        aggToTruth[j] += predicted[i].Bordings;
                        break;
                    }
                }
                if ( orphan )
                {
                    Orphans.Add( new KeyValuePair<string, float>( predicted[i].ID[0], predicted[i].Bordings ) );
                }
            }

            for ( int i = 0; i < this.Truth.Length; i++ )
            {
                var error = aggToTruth[i] - this.Truth[i].Bordings;
                rmse += error * error;
                mabs += Math.Abs( error );
                terror += error;
            }
            var value = this.EstimationAI.UseComplexErrorFunction ? this.EstimationAI.ComplexErrorFunction( this.Parameters, this.Truth, predicted, aggToTruth ) : this.EstimationAI.ErrorCombinationFunction( rmse, mabs, terror );
            if ( value < this.BestRunError )
            {
                SaveBordingData( aggToTruth, Orphans );
                this.BestRunError = value;
            }
            SaveEvaluation( param, value, rmse, mabs, terror );
            return value;
        }
Esempio n. 55
0
 private ParameterSetting[] Clone(ParameterSetting[] parameters)
 {
     ParameterSetting[] ret = new ParameterSetting[parameters.Length];
     for(int i = 0; i < parameters.Length; i++)
     {
         ret[i] = new ParameterSetting()
         {
             Current = parameters[i].Current,
             Names = parameters[i].Names,
             Minimum = parameters[i].Minimum,
             Maximum = parameters[i].Maximum,
             NullHypothesis = parameters[i].NullHypothesis
         };
     }
     return ret;
 }
Esempio n. 56
0
 /// <summary>
 /// 일자별 객실유금 폼 생성자 입니다.<see cref="DAHAH08"/> class.
 /// </summary>
 /// <param name="pSetting">The p setting.</param>
 /// <remarks>
 /// 리턴 값은 다음과 같습니다. [string 총요금] [string 금일요금] [bool 변경여부] [DataTable 일자별객실요금]
 /// </remarks>
 public DAHAH08(string ReturnFunctionName, ParameterSetting pSetting)
 {
     InitializeComponent();
     pSettings            = pSetting;
     fnReturnFunctionName = ReturnFunctionName;
 }
Esempio n. 57
0
 private Job CreateJob(ParameterSetting[] parameters)
 {
     return new Job()
     {
         Parameters = parameters,
         Processed = false,
         ProcessedBy = null,
         Processing = false,
         Value = float.NaN
     };
 }
Esempio n. 58
0
 private void LoadParameterFile()
 {
     XmlDocument doc = new XmlDocument();
     doc.Load( this.ParameterFile.GetFilePath() );
     List<ParameterSetting> parameters = new List<ParameterSetting>();
     foreach ( XmlNode child in doc["Root"].ChildNodes )
     {
         if ( child.Name == "Parameter" )
         {
             ParameterSetting current = new ParameterSetting();
             if ( child.HasChildNodes )
             {
                 var nodes = child.ChildNodes;
                 current.Names = new string[nodes.Count];
                 for ( int i = 0; i < nodes.Count; i++ )
                 {
                     XmlNode name = nodes[i];
                     var parameterPath = name.Attributes["ParameterPath"].InnerText;
                     current.Names[i] = parameterPath;
                 }
             }
             else
             {
                 var parameterPath = child.Attributes["ParameterPath"].InnerText;
                 current.Names = new string[] { parameterPath };
             }
             parameters.Add( current );
         }
     }
     this.Parameters = parameters.ToArray();
 }
Esempio n. 59
0
 public List<Job> CreateJobsForIteration()
 {
     var ret = new List<Job>();
     var parameters = this.Root.Parameters.ToArray();
     int totalParameters = parameters.Sum(p => p.Names.Length);
     using ( CsvReader reader = new CsvReader( this.ResultFile.GetFilePath() ) )
     {
         reader.LoadLine();
         int columns;
         while ( reader.LoadLine( out columns ) )
         {
             //+2 for generation and value
             if ( columns >= totalParameters + 2 )
             {
                 var jobParameters = new ParameterSetting[parameters.Length];
                 var job = new Job()
                 {
                     ProcessedBy = null,
                     Processing = false,
                     Processed = false,
                     Value = float.NaN,
                     Parameters = jobParameters
                 };
                 var columnIndex = 2;
                 for ( int i = 0; i < parameters.Length; i++ )
                 {
                     jobParameters[i] = new ParameterSetting()
                     {
                         Names = parameters[i].Names,
                         Minimum = parameters[i].Minimum,
                         Maximum = parameters[i].Maximum
                     };
                     reader.Get( out jobParameters[i].Current, columnIndex );
                     columnIndex += parameters[i].Names.Length;
                 }
                 ret.Add( job );
                 if (NumberOfRows > 0 & ret.Count >= NumberOfRows)
                 {
                     break;
                 }
             }
         }
     }
     return ret;
 }