public SuccessiveConcessionsResultsForm(
            Form prevForm,
            Model model,
            ScMethodResult result)
        {
            InitializeComponent();

            // Подстройка интерфейса
            this.Left = prevForm.Left;
            this.Top  = prevForm.Top;
            if (this.FormBorderStyle != FormBorderStyle.FixedSingle)
            {
                this.WindowState = prevForm.WindowState;
            }
            if (this.WindowState == FormWindowState.Normal)
            {
                this.Width  = prevForm.Width;
                this.Height = prevForm.Height;
            }

            this._prevForm = prevForm;
            this._model    = model;
            this._result   = result;

            // Заполним таблицу результатами
            ScDataGridFiller.FillDataGrid(
                this._model,
                this._result,
                this.dgvData);

            // Запустим сборщик мусора, чтобы убить
            // предыдущие ветки
            System.GC.Collect();
        }
        private void mnuShowConstraints_Click(object sender, EventArgs e)
        {
            this._showConstraints = this.mnuShowConstraints.Checked;
            TId sortingCritId = ScSolver.FindSortingCriterionId(this._concessions);

            ScDataGridFiller.FillMidDataGrid(
                this._currentState,
                this.dgvData,
                this._result,
                this._concessions,
                sortingCritId,
                this._showConstraints,
                this._showParams);
        }
        private void FindDecision()
        {
            // Применим набор уступок к матрице решений
            TId sortingCritId = ScSolver.FindSortingCriterionId(this._concessions);

            // Применять будем к копии модели
            byte[] modelCopyBytes = Model.Serialize(this._model);
            this._currentState = Model.Deserialize(modelCopyBytes);
            this._result       = ScSolver.ApplyConcessions(ref this._currentState, this._concessions, sortingCritId);

            // Заполним матрицу решений
            ScDataGridFiller.FillMidDataGrid(
                this._currentState,
                this.dgvData,
                this._result,
                this._concessions,
                sortingCritId,
                this._showConstraints,
                this._showParams);
        }