public void Export(StringBuilder sb)
        {
            var eDict = Experts.ToDictionary(x => x, x => new List <ExpertAnswer>());

            var maxLength = Experts.Max(x => x.Name.Length);

            foreach (var ea in base.ExpertAnswer)
            {
                eDict[ea.Expert].Add(ea);
            }

            const string qTitle = "Вопросы";

            string spaces;

            if (maxLength > qTitle.Length)
            {
                spaces = new string(' ', maxLength - qTitle.Length);
            }
            else
            {
                spaces = String.Empty;
            }

            sb.Append(spaces + qTitle);

            int number = 0;

            foreach (var q in Questions)
            {
                sb.Append('\t'); sb.Append(++number);
            }

            foreach (var e in eDict)
            {
                sb.AppendLine();

                sb.Append(e.Key.Name);

                var answers = e.Value.OrderBy(x => x.Question.Key).ToArray();

                foreach (var ea in answers)
                {
                    sb.Append('\t'); sb.Append(ea.Answer.Name);
                }
            }
            sb.AppendLine();
        }
Example #2
0
        void GetBounds(ExpertVariable var, out double vmin, out double vmax)
        {
            var min = Experts.Min(x => x.Estimates[var].GetQuantile(0));
            var max = Experts.Max(x => x.Estimates[var].GetQuantile(1));

            if (var is CalibrationVariable)
            {
                var cVar = (CalibrationVariable)var;
                min = Math.Min(min, cVar.TrueValue);
                max = Math.Max(max, cVar.TrueValue);
            }

            var overshoot = (max - min) * K / 100.0;

            vmin = min - overshoot;
            vmax = max + overshoot;
        }