//Додавання параметрів цілей до списку
        private void buttonAddParameterToList_Click(object sender, EventArgs e)
        {
            if (dataGridView1.CurrentRow == null)
            {
                return;
            }

            ParametersGoal paramGoal = dataGridView1.CurrentRow.DataBoundItem as ParametersGoal;

            if (paramGoal == null)
            {
                MessageBox.Show("Параметр для цілі не обрано!", "Помилка");
                return;
            }

            //Знаходимо ціль, яку вибрав користувач в базі даних. для зв'язки
            string selectedGoalName = comboBox1.SelectedItem.ToString();

            Goal selectedGoal = goals.FirstOrDefault(g => g.name == selectedGoalName);

            if (selectedGoal == null)
            {
                MessageBox.Show("Обраної цілі не існує в базі даних! \n Оберіть існуючу ціль!", "Помилка вибору цілі");
                return;
            }

            //Закріплюємо за параметром обрану користувачем ціль
            ParametersGoal newParamGoal = new ParametersGoal()
            {
                id_parameter = paramGoal.id_parameter,
                name         = paramGoal.name,
                unit         = paramGoal.unit,
                Goal         = selectedGoal
            };

            //Зберегти в локальне сховище
            if (cacheData.AddElement <ParametersGoal>(newParamGoal))
            {
                MessageBox.Show("Параметр: " + newParamGoal.name + " для цілі: " + newParamGoal.Goal.name + " додано для оцінювання!", "Підтверджено");
            }
            else
            {
                MessageBox.Show("Параметр: " + newParamGoal.name + " для цілі: " + newParamGoal.Goal.name + " вже занесено для оцінювання!", "Відхилено");
            }
            //Зберегти до бази даних
            //db.SolutionsOfFunctions.AddOrUpdate(solOfFunc);
        }
예제 #2
0
        //Додавання функцій та їх технічних рішень
        private void buttonAddSolutionsOfFunctionsToList_Click(object sender, EventArgs e)
        {
            if (dataGridView1.CurrentRow == null)
            {
                return;
            }

            Solution sol = dataGridView1.CurrentRow.DataBoundItem as Solution;

            if (sol == null)
            {
                MessageBox.Show("Рішення для функції не обрано!", "Помилка");
                return;
            }

            //Знаходимо функцію, яку вибрав користувач в базі даних. для зв'язки
            string selectedFuncName = comboBox1.SelectedItem.ToString();

            Function selectedFunc = funcList.FirstOrDefault(f => f.name == selectedFuncName);

            if (selectedFunc == null)
            {
                MessageBox.Show("Обраної функції не існує в базі даних! \n Оберіть існуючу функцію!", "Помилка вибору функції");
                return;
            }

            //Створюємо об'єкт де функція має своє рішення
            SolutionsOfFunction solOfFunc = new SolutionsOfFunction()
            {
                Solution = sol,
                Function = selectedFunc
            };



            //Зберегти в локальне сховище
            if (solOfFuncCacheData.AddElement <SolutionsOfFunction>(solOfFunc))
            {
                MessageBox.Show("Рішення: " + solOfFunc.Solution.name + " для функції: " + solOfFunc.Function.name + " додано для оцінювання!", "Підтверджено");
            }
            else
            {
                MessageBox.Show("Рішення: " + solOfFunc.Solution.name + " для функції: " + solOfFunc.Function.name + " вже занесено для оцінювання!", "Відхилено");
            }
            //Зберегти до бази даних
            //db.SolutionsOfFunctions.AddOrUpdate(solOfFunc);
        }
예제 #3
0
        private void buttonAddGoalToList_Click(object sender, EventArgs e)
        {
            var goal = dataGridView1.CurrentRow.DataBoundItem as Goal;

            if (goal == null)
            {
                MessageBox.Show("Ціль не обрана!", "Помилка");
                return;
            }
            else
            {
                if (cacheData.AddElement <Goal>(goal))
                {
                    MessageBox.Show("Ціль " + goal.name + " додано для оцінювання!", "Підтверджено");
                }
                else
                {
                    MessageBox.Show("Ціль " + goal.name + " вже занесено для оцінювання!", "Відхилено");
                }
            }
        }
예제 #4
0
        private void buttonAddFuncToList_Click(object sender, EventArgs e)
        {
            var func = dataGridView1.CurrentRow.DataBoundItem as Function;

            if (func == null)
            {
                MessageBox.Show("Функція не обрана!", "Помилка");
                return;
            }
            else
            {
                if (funcCacheData.AddElement <Function>(func))
                {
                    MessageBox.Show("Функцію " + func.name + " додано для оцінювання!", "Підтверджено");
                }
                else
                {
                    MessageBox.Show("Функцію " + func.name + " вже занесено для оцінювання!", "Відхилено");
                }
            }
        }
예제 #5
0
        private void buttonAddModToList_Click(object sender, EventArgs e)
        {
            var mod = dataGridView1.CurrentRow.DataBoundItem as Modification;

            if (mod == null)
            {
                MessageBox.Show("Модифікація не обрана!", "Помилка");
                return;
            }
            else
            {
                if (cahceData.AddElement <Modification>(mod))
                {
                    MessageBox.Show("Функцію " + mod.name + " додано для оцінювання!", "Підтверджено");
                }
                else
                {
                    MessageBox.Show("Функцію " + mod.name + " вже занесено для оцінювання!", "Відхилено");
                }
            }
        }
예제 #6
0
        //Збереження оцінок з DGV для кожної модифікації згідно параметру цілі
        //Параметрична формула розрахунку оцінки виконання групи модифікацій j-го рішення
        //згідно з парметрам цілей.
        private void buttonSaveRating_Click(object sender, EventArgs e)
        {
            decimal sumAllMods = 0.0m;

            for (int i = 0; i < dataGridView1.Rows.Count; i++)
            {
                //GetFirstColumnNameSolutionFunction(i, ref solutionNameInTable, ref functionNameInTable);
                GetFirstColumnNameModification(i, ref modificationNameInTable);

                //Знайдемо рішення і функцію, яке зараз оцінюється відносно параметру цілей
                Modification selectedModification = modificationList.FirstOrDefault(m => m.name == modificationNameInTable);
                if (selectedModification is null)
                {
                    return;
                }


                //decimal estimateSol = selectedSolOfFunc.Solution.weight ?? 0;

                int     index = 0;
                decimal sum   = 0;



                //Отримаємо оцінки по стовбцям
                foreach (ParametersGoal paramGoal in parametersGoalsList)
                {
                    decimal estimateParamGoal  = paramGoal.Goal.weight ?? 0;
                    decimal estimateModOnParam = 0;
                    if (!(decimal.TryParse(dataGridView1[++index, i].Value.ToString(), out estimateModOnParam)))
                    {
                        MessageBox.Show("Неможливо конвертувати значення комірки в тип decimal", "Помилка");
                        return;
                    }

                    //Питання відкрите щодо використання середнього значення в формулі
                    sum += (estimateParamGoal * (estimateModOnParam / 100.0m));
                }

                //Створюємо новий об'єкт, який закріплює за кожною цілью рішення і кінцеву оцінку рішення
                foreach (ParametersGoal paramGoal in parametersGoalsList)
                {
                    ParametersGoalsForModification parameterGoalForModification = new ParametersGoalsForModification();
                    //Присваюємо модифікацію
                    parameterGoalForModification.Modification = selectedModification;
                    //Присвоємо параметричну ціль об'єкту
                    parameterGoalForModification.ParametersGoal = paramGoal;
                    //Присваюємо загальну оцінку щодо
                    parameterGoalForModification.rating = sum;
                    //Додамо до списку
                    cacheData.AddElement <ParametersGoalsForModification>(parameterGoalForModification);
                }

                dataGridView1[dataGridView1.Columns.Count - 1, i].Value = sum;

                //накопичуємо оцінку всіх модифікацій
                sumAllMods += sum;


                //з урахуванням ваги мат. моделі
                sumAllMods *= SetWeightMathModel;
            }

            dataGridView1.Columns[dataGridView1.Columns.Count - 1].Visible = true;

            MessageBox.Show("Оцінки збережено", "Пітверджено");

            //Збереження даних для генетичного алгоритму
            //А саме: збереження сукупної оцінки модифікацій для рішень (буде задієно у фітнес функції)
            GeneticAlgorithm.ManagerGA manager = GeneticAlgorithm.ManagerGA.GetInstance();
            manager.SetDataForTableParametersGoalsModifications(sumAllMods);
        }
        //Збереження оцінок з DGV для кожного рішення параметру цілі
        //Параметрична формула розрахунку виконання
        //технічними рішеннями згідно параметрам цілей
        private void buttonSaveRating_Click(object sender, EventArgs e)
        {
            Dictionary <int, decimal> solEstimateByParametersDict = new Dictionary <int, decimal>();

            //int firstIndex = dataGridView1.Columns.GetFirstColumn(DataGridViewElementStates.Visible, DataGridViewElementStates.None).Index;
            for (int i = 0; i < dataGridView1.Rows.Count; i++)
            {
                GetFirstColumnNameSolutionFunction(i, ref solutionNameInTable, ref functionNameInTable);

                //Знайдемо рішення і функцію, яке зараз оцінюється відносно параметру цілей
                SolutionsOfFunction selectedSolOfFunc = solOfFuncList.FirstOrDefault(s => (s.Solution.name == solutionNameInTable) && (s.Function.name == functionNameInTable));
                if (selectedSolOfFunc is null)
                {
                    return;
                }


                //decimal estimateSol = selectedSolOfFunc.Solution.weight ?? 0;

                int     index = 0;
                decimal sum   = 0;



                //Отримаємо оцінки по стовбцям
                foreach (ParametersGoal paramGoal in parametersGoalsList)
                {
                    decimal estimateParamGoal  = paramGoal.Goal.weight ?? 0;
                    decimal estimateSolOnParam = 0;
                    if (!(decimal.TryParse(dataGridView1[++index, i].Value.ToString(), out estimateSolOnParam)))
                    {
                        MessageBox.Show("Неможливо конвертувати значення комірки в тип decimal", "Помилка");
                        return;
                    }

                    //Питання відкрите щодо використання середнього значення в формулі
                    sum += (estimateParamGoal * (estimateSolOnParam / 100.0m));
                }

                //Створюємо новий об'єкт, який закріплює за кожною цілью рішення і кінцеву оцінку рішення
                foreach (ParametersGoal paramGoal in parametersGoalsList)
                {
                    ParametersGoalsForSolution parameterGoalForSolution = new ParametersGoalsForSolution();
                    //Присваюємо рішення об'єкту
                    parameterGoalForSolution.Solution = selectedSolOfFunc.Solution;
                    //Присвоємо параметричну ціль об'єкту
                    parameterGoalForSolution.ParametersGoal = paramGoal;
                    //Присваюємо загальну оцінку щодо
                    parameterGoalForSolution.rating = sum;
                    //Додамо до списку
                    //cacheData.AddParamGoalForSolToList(parameterGoalForSolution);
                    cacheData.AddElement <ParametersGoalsForSolution>(parameterGoalForSolution);
                }

                //з урахуванням ваги мат. моделі
                sum *= SetWeightMathModel;

                dataGridView1[dataGridView1.Columns.Count - 1, i].Value = sum;

                //Зберігаємо оцінку рішення по параметрам в словник
                //Для генетичного алгоритму
                AddSolToDict(solEstimateByParametersDict, selectedSolOfFunc.Solution.id_solution, sum);
            }

            dataGridView1.Columns[dataGridView1.Columns.Count - 1].Visible = true;

            MessageBox.Show("Оцінки збережено", "Пітверджено");

            //Передеча даних для генетичного алгоритму
            //List<ParametersGoalsForSolution> list = cacheData.GetListElements<ParametersGoalsForSolution>();
            GeneticAlgorithm.ManagerGA manager = GeneticAlgorithm.ManagerGA.GetInstance();
            manager.SetDataForTableParametersGoalsSolutions(solEstimateByParametersDict);//list);
        }