Example #1
0
        private void saveAsToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var sfd = new SaveFileDialog();

            sfd.Filter = "Файлы xml|*.xml";
            var dialogResult = sfd.ShowDialog();

            if (dialogResult == DialogResult.OK)
            {
                var filePath   = sfd.FileName;
                var conditions = new ProblemConditions(_variables, _rules);
                ProblemConditionsHelper.WriteToFile(conditions, filePath);
            }
        }
        public void ReadConditionsFromXmlStringTest()
        {
            var result = ProblemConditionsHelper.ReadConditionsFromXmlString(Resources.input);

            Assert.IsTrue(result.Success);
            Assert.IsNotNull(result.Data);

            Assert.AreEqual(result.Data.Variables.Count, 3);
            Assert.AreEqual(result.Data.Rules.Count, 12);

            Assert.IsTrue(result.Data.Variables.Any(x => x.Name == "X1"));
            Assert.IsTrue(result.Data.Variables.Any(x => x.Name == "X1" && x.Terms.Any(t => t.Name == "низкий")));

            Assert.IsTrue(result.Data.Variables.Any(x => x.Name == "Y" && x.IsResult) && result.Data.Variables.Where(x => x.Name != "Y").All(x => !x.IsResult));

            Assert.IsTrue(result.Data.Rules.All(x => x.Conditions.Any(c => c.FuzzyVariable.Name == "X1") &&
                                                x.Conditions.Any(c => c.FuzzyVariable.Name == "X2") &&
                                                x.Conclusion.FuzzyVariable.Name == "Y"));
        }
        public void MamdaniServiceTestMethod1()
        {
            var solveResultPattern       = 0.34375;
            var result                   = ProblemConditionsHelper.ReadConditionsFromXmlString(Resources.input);
            var mamdaniService           = new MamdaniService();
            ProblemConditions conditions = new ProblemConditions()
            {
                Rules = result.Data.Rules, Variables = result.Data.Variables
            };

            var problem = new Problem()
            {
                InputData         = new double[] { 0.6, 0.8 },
                ProblemConditions = conditions
            };

            var solveResult = mamdaniService.SolveProblem(problem);

            Assert.IsTrue(Math.Abs(solveResult.Data - solveResultPattern) < 1e-3);
        }
Example #4
0
        private void task1ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var result = ProblemConditionsHelper.ReadConditionsFromXmlString(Resources.input1);

            if (!result.Success)
            {
                MessageBox.Show("Во время загрузки задачи возникли непридвиденные ошибки", "Ошибка",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            _variables.Clear();
            _variables.AddRange(result.Data.Variables);

            _rules.Clear();
            _rules.AddRange(result.Data.Rules);

            inputDataTextBox.Text = "";

            RefreshVariablesListView();
            RefreshRulesListView();
        }
Example #5
0
        private void openToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var ofd = new OpenFileDialog();

            ofd.Filter      = "Файлы xml|*.xml";
            ofd.Multiselect = false;


            var dialogResult = ofd.ShowDialog();

            if (dialogResult == DialogResult.OK)
            {
                using (var stream = ofd.OpenFile())
                {
                    var result = ProblemConditionsHelper.ReadConditionsFromXmlStream(stream);

                    if (!result.Success)
                    {
                        MessageBox.Show("Во время загрузки задачи возникли непредвиденные ошибки", "Ошибка",
                                        MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }

                    _variables.Clear();
                    _variables.AddRange(result.Data.Variables);

                    _rules.Clear();
                    _rules.AddRange(result.Data.Rules);

                    inputDataTextBox.Text = "";

                    RefreshVariablesListView();
                    RefreshRulesListView();
                }
            }
        }
        public void ReadConditionsFromXmlStreamTest()
        {
            using (var mem = new MemoryStream())
            {
                var str    = Resources.input;
                var buffer = Encoding.UTF8.GetBytes(str);
                mem.Write(buffer, 0, buffer.Length);
                mem.Seek(0, SeekOrigin.Begin);

                var result = ProblemConditionsHelper.ReadConditionsFromXmlStream(mem);
                Assert.IsTrue(result.Success);
                Assert.IsNotNull(result.Data);

                Assert.AreEqual(result.Data.Variables.Count, 3);
                Assert.AreEqual(result.Data.Rules.Count, 12);

                Assert.IsTrue(result.Data.Variables.Any(x => x.Name == "X1"));
                Assert.IsTrue(result.Data.Variables.Any(x => x.Name == "X1" && x.Terms.Any(t => t.Name == "низкий")));

                Assert.IsTrue(result.Data.Rules.All(x => x.Conditions.Any(c => c.FuzzyVariable.Name == "X1") &&
                                                    x.Conditions.Any(c => c.FuzzyVariable.Name == "X2") &&
                                                    x.Conclusion.FuzzyVariable.Name == "Y"));
            }
        }