Exemple #1
0
        /// <summary>
        /// инициализатор плоттеров для рисования и накидываетль их на форму
        /// </summary>
        /// <param name="PlottersCount"></param>
        /// <param name="LeftTopCorner"></param>
        /// <param name="sys"></param>
        public void InitPlotters(int PlottersCount, Point LeftTopCorner, ESystem sys)
        {
            //метки панелей
            PanesLabels = new System.Windows.Forms.Label[PlottersCount + 1];
            for (int k = 0; k < PlottersCount + 1; k++)
            {
                PanesLabels[k]      = new System.Windows.Forms.Label();
                PanesLabels[k].Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
            }
            PanesLabels[0].Text = "X";
            PanesLabels[1].Text = "U";
            PanesLabels[2].Text = "Y";
            PanesLabels[3].Text = "F (Quality)";
            //Создание панелей
            Panes = new StackedPlotters[PlottersCount];
            int i = 0;

            Panes[0] = new StackedPlotters(new Point(LeftTopCorner.X, LeftTopCorner.Y - PanesLabels[i].Height), new Size(100, 100), sys.current_state.x, Color.Green);
            i        = 1;
            Panes[1] = new StackedPlotters(new Point(LeftTopCorner.X + (100 + 10) * i, LeftTopCorner.Y - PanesLabels[i].Height), new Size(100, 100), sys.current_state.u, Color.Blue);
            i        = 2;
            Panes[2] = new StackedPlotters(new Point(LeftTopCorner.X + (100 + 10) * i, LeftTopCorner.Y - PanesLabels[i].Height), new Size(100, 100), sys.current_state.y, Color.Red);
            // И панели качества
            quality = new plotter(new Point(LeftTopCorner.X, LeftTopCorner.Y + 110), new Size(100, 100), Color.Red, sys.current_state.quality_f);
        }
Exemple #2
0
 /// <summary>
 /// перегружает панели из системы
 /// </summary>
 /// <param name="sys"></param>
 public void LoadPanes(ESystem sys)
 {
     Panes[0].LoadPlottersFromSys(sys.current_state.x);
     Panes[1].LoadPlottersFromSys(sys.current_state.u);
     Panes[2].LoadPlottersFromSys(sys.current_state.y);
     quality.LoadPointsFromDouble(sys.current_state.quality_f);
     quality.SetVisibleRangeAll();
 }
Exemple #3
0
        public SysInfo(ESystem sys)
        {
            this.sys = sys;
            //пустышка аднака - пустой блок для отображения матриц
            this.UniversalMatrixBox     = new TBMatrixDrawer(new MatrixLibrary.Matrix(10, 10));
            UniversalMatrixBox.Visible  = false;
            UniversalMatrixBox.Location = new Point(209, 56);
            this.Controls.Add(UniversalMatrixBox);

            InitializeComponent();
        }
Exemple #4
0
        private void CreateSys()
        {
            sys = new ESystem(CreateF1.sys1.current_state);

            if (sys != null)
            {
                //грузим полученный sys в формочку
                if (SI == null && sys != null)//проверка на открытие файла снова
                {
                    SI = new SysInfo(sys);
                }
                else
                {
                    SI.UpdateInfo(sys);
                }
                //разблокировка элементов
                this.showStateInfoToolStripMenuItem.Enabled  = true;
                this.startEmulationToolStripMenuItem.Enabled = true;

                tabControl1.SelectTab(0);
                if (!debug)
                {
                    step = 0;
                }
                else
                {
                    step = 4;
                }
                tabPage2.Controls.Clear();
                tabPage2.Controls.Add(button2);

                tabPage1.Controls.Clear();
                tabPage1.Controls.Add(button1);
                tabPage1.Controls.Add(label1);
                tabPage1.Controls.Add(lAnalogEquation);
                lAnalogEquation.Text = "x'(t) = ";

                for (int i = 0; i < sys.current_state.analog_A()[0].Count; i++)
                {
                    if (i != 0)
                    {
                        this.lAnalogEquation.Text += " + ";
                    }
                    this.lAnalogEquation.Text += "Ан" + i.ToString() + "x(t";
                    if (i == 0)
                    {
                        this.lAnalogEquation.Text += ")";
                    }
                    else
                    {
                        this.lAnalogEquation.Text += " - " + sys.current_state.tau[i] + ")";
                    }
                }

                for (int i = 0; i < sys.current_state.analog_B()[0].Count; i++)
                {
                    this.lAnalogEquation.Text += " + Bн" + i.ToString() + "u(t";
                    if (i == 0)
                    {
                        this.lAnalogEquation.Text += ")";
                    }
                    else
                    {
                        this.lAnalogEquation.Text += " - " + sys.current_state.teta[i] + ")";
                    }
                }


                UniversalMatrixBox = new List <MatrixDrawer>();
                LabelList          = new List <System.Windows.Forms.Label>();

                int loctemp = 20;
                int j       = 0;
                for (int i = 0; i < sys.current_state.analog_B()[0].Count + sys.current_state.analog_A()[0].Count; i++)
                {
                    MatrixDrawer tmp = new MatrixDrawer(new MatrixLibrary.Matrix(10, 10));

                    this.UniversalMatrixBox.Add(new MatrixDrawer(new MatrixLibrary.Matrix(10, 10)));
                    this.LabelList.Add(new System.Windows.Forms.Label());


                    UniversalMatrixBox[i].Visible  = false;
                    UniversalMatrixBox[i].Location = new Point(loctemp, 130);
                    this.LabelList[i].Location     = new Point(loctemp, 115);
                    this.LabelList[i].Font         = new Font(this.Font, FontStyle.Bold);


                    this.tabPage1.Controls.Add(UniversalMatrixBox[i]);
                    this.tabPage1.Controls.Add(LabelList[i]);


                    if (i < sys.current_state.analog_A()[0].Count)
                    {
                        this.UniversalMatrixBox[i].ReloadMatrix(sys.current_state.analog_A()[0][i]);
                        this.LabelList[i].Text = "Ан" + i.ToString() + ": ";
                    }
                    else
                    {
                        this.UniversalMatrixBox[i].ReloadMatrix(sys.current_state.analog_B()[0][j]);
                        this.LabelList[i].Text = "Bн" + j.ToString() + ": ";
                        j++;
                    }
                    UniversalMatrixBox[i].Visible = true;
                    loctemp += UniversalMatrixBox[i].Size.Width + 20;
                }

                button1.Location = new Point(20, UniversalMatrixBox[0].Location.Y + 20 + UniversalMatrixBox[0].Size.Height);
                button1.Visible  = true;
            }
        }
Exemple #5
0
        private void openToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //отлавливаем исключения инициализации
            try
            {
                //загрузка sys из файла
                sys = GUI.OpenJsonFile(isSpline, isNoiseEnabled);
            }
            catch (Exception excption)                                                                                                                                                     //если при определении следующего шага чтото пошло нетак
            {
                MessageBox.Show(excption.Message + "\n" + excption.StackTrace.ToString(), "Внимание!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1); //вываливаем сообщение
            }
            //если файл был успешно загружен
            if (sys != null)
            {
                //грузим полученный sys в формочку
                if (SI == null && sys != null)//проверка на открытие файла снова
                {
                    SI = new SysInfo(sys);
                }
                else
                {
                    SI.UpdateInfo(sys);
                }
                //разблокировка элементов
                this.showStateInfoToolStripMenuItem.Enabled  = true;
                this.startEmulationToolStripMenuItem.Enabled = true;

                tabControl1.SelectTab(0);
                if (!debug)
                {
                    step = 0;
                }
                else
                {
                    step = 4;
                }
                tabPage2.Controls.Clear();
                tabPage2.Controls.Add(button2);

                tabPage1.Controls.Clear();
                tabPage1.Controls.Add(button1);
                tabPage1.Controls.Add(label1);
                tabPage1.Controls.Add(lAnalogEquation);
                lAnalogEquation.Text = "x'(t) = ";

                for (int i = 0; i < sys.current_state.analog_A()[0].Count; i++)
                {
                    if (i != 0)
                    {
                        this.lAnalogEquation.Text += " + ";
                    }
                    this.lAnalogEquation.Text += "Ан" + i.ToString() + "x(t";
                    if (i == 0)
                    {
                        this.lAnalogEquation.Text += ")";
                    }
                    else
                    {
                        this.lAnalogEquation.Text += " - " + sys.current_state.tau[i] + ")";
                    }
                }

                for (int i = 0; i < sys.current_state.analog_B()[0].Count; i++)
                {
                    this.lAnalogEquation.Text += " + Bн" + i.ToString() + "u(t";
                    if (i == 0)
                    {
                        this.lAnalogEquation.Text += ")";
                    }
                    else
                    {
                        this.lAnalogEquation.Text += " - " + sys.current_state.teta[i] + ")";
                    }
                }


                UniversalMatrixBox = new List <MatrixDrawer>();
                LabelList          = new List <System.Windows.Forms.Label>();

                int loctemp = 20;
                int j       = 0;
                for (int i = 0; i < sys.current_state.analog_B()[0].Count + sys.current_state.analog_A()[0].Count; i++)
                {
                    MatrixDrawer tmp = new MatrixDrawer(new MatrixLibrary.Matrix(10, 10));

                    this.UniversalMatrixBox.Add(new MatrixDrawer(new MatrixLibrary.Matrix(10, 10)));
                    this.LabelList.Add(new System.Windows.Forms.Label());


                    UniversalMatrixBox[i].Visible  = false;
                    UniversalMatrixBox[i].Location = new Point(loctemp, 130);
                    this.LabelList[i].Location     = new Point(loctemp, 115);
                    this.LabelList[i].Font         = new Font(this.Font, FontStyle.Bold);


                    this.tabPage1.Controls.Add(UniversalMatrixBox[i]);
                    this.tabPage1.Controls.Add(LabelList[i]);


                    if (i < sys.current_state.analog_A()[0].Count)
                    {
                        this.UniversalMatrixBox[i].ReloadMatrix(sys.current_state.analog_A()[0][i]);
                        this.LabelList[i].Text = "Ан" + i.ToString() + ": ";
                    }
                    else
                    {
                        this.UniversalMatrixBox[i].ReloadMatrix(sys.current_state.analog_B()[0][j]);
                        this.LabelList[i].Text = "Bн" + j.ToString() + ": ";
                        j++;
                    }
                    UniversalMatrixBox[i].Visible = true;
                    loctemp += UniversalMatrixBox[i].Size.Width + 20;
                }

                button1.Location = new Point(20, UniversalMatrixBox[0].Location.Y + 20 + UniversalMatrixBox[0].Size.Height);
                button1.Visible  = true;
            }
        }
Exemple #6
0
 public ViewerG(ESystem sys)
 {
     this.sys = sys;
     DrawMatrix();
     InitializeComponent();
 }
Exemple #7
0
 public void UpdateInfo(ESystem sys)
 {
     DrawMatrix();
 }
Exemple #8
0
        //обновление информации на форме
        public void UpdateInfo(ESystem sys)
        {
            this.sys = sys;
            //обновление типа системы
            if (sys.current_state.stationarity)
            {
                Stationarity.ForeColor = Color.Green;
            }
            else
            {
                Stationarity.ForeColor = Color.Red;
            }

            if (sys.current_state.synchronism)
            {
                this.Syncronism.ForeColor = Color.Green;
            }
            else
            {
                Syncronism.ForeColor = Color.Red;
            }

            if (sys.current_state.delay_by_state)
            {
                this.delay_by_state.ForeColor = Color.Green;
            }
            else
            {
                delay_by_state.ForeColor = Color.Red;
            }

            if (sys.current_state.delay_by_control)
            {
                this.delay_by_control.ForeColor = Color.Green;
            }
            else
            {
                delay_by_control.ForeColor = Color.Red;
            }

            if (sys.current_state.full_controllability)
            {
                this.full_controllability.ForeColor = Color.Green;
            }
            else
            {
                full_controllability.ForeColor = Color.Red;
            }

            if (sys.current_state.part_controllability)
            {
                this.part_controllability.ForeColor = Color.Green;
            }
            else
            {
                part_controllability.ForeColor = Color.Red;
            }

            if (sys.current_state.full_observersability)
            {
                this.full_observability.ForeColor = Color.Green;
            }
            else
            {
                full_observability.ForeColor = Color.Red;
            }

            if (sys.current_state.part_observersability)
            {
                this.part_observability.ForeColor = Color.Green;
            }
            else
            {
                part_observability.ForeColor = Color.Red;
            }

            if (sys.current_state.determinancy)
            {
                this.Determinancy.ForeColor = Color.Green;
            }
            else
            {
                Determinancy.ForeColor = Color.Red;
            }

            if (sys.current_state.perturbation)
            {
                this.Perturbation.ForeColor = Color.Green;
            }
            else
            {
                Perturbation.ForeColor = Color.Red;
            }
            //строчичка с размерами
            this.Sizes.Text = "n = " + sys.current_state.n + " m = " + sys.current_state.m + " p = " + sys.current_state.p + " a = " + sys.current_state.a + " c = " + sys.current_state.c;
            //протирка матриц.. а ВДРУК!
            //скрываем все, что было до этого
            UniversalMatrixBox.Visible = false;
            this.TimeBox.Enabled       = false;
            this.TimeBox.Items.Clear();
            this.DelayBox.Enabled = false;
            this.DelayBox.Items.Clear();
            this.LoadMatrix.Enabled = false;
        }
Exemple #9
0
        private void Done_button1_Click(object sender, EventArgs e)
        {
            try
            {
                List <Matrix> tmp;
                Matrix        tmpM;
                int           J;
                if (a > c)
                {
                    J = a + 1;
                }
                else
                {
                    J = c + 1;
                }



                if (debug)
                {
                    x = new List <Matrix>();
                    for (int i = 0; i < J * 2; i++)
                    {
                        tmpM = new Matrix(n, 1);
                        for (int j = 0; j < n; j++)
                        {
                            tmpM[j, 0] = 1;
                        }
                        x.Add(tmpM);
                    }


                    u = new List <Matrix>();
                    for (int i = 0; i < J * 2; i++)
                    {
                        tmpM = new Matrix(m, 1);
                        for (int j = 0; j < m; j++)
                        {
                            tmpM[j, 0] = 0;
                        }
                        u.Add(tmpM);
                    }
                }

                A   = new List <List <Matrix> >();
                tmp = new List <Matrix>();
                for (int i = 0; i <= a; i++)
                {
                    tmp.Add(new Matrix(n, n));
                    for (int j = 0; j < n; j++)
                    {
                        for (int k = 0; k < n; k++)
                        {
                            tmp[i][j, k] = Convert.ToDouble(MatrixBoxListA[i].getVal(j, k));
                        }
                    }
                }

                A.Add(tmp);

                B   = new List <List <Matrix> >();
                tmp = new List <Matrix>();
                for (int i = 0; i <= c; i++)
                {
                    tmp.Add(new Matrix(n, m));
                    for (int j = 0; j < n; j++)
                    {
                        for (int k = 0; k < m; k++)
                        {
                            tmp[i][j, k] = Convert.ToDouble(MatrixBoxListB[i].getVal(j, k));
                        }
                    }
                }

                B.Add(tmp);

                H = new List <Matrix>();

                H.Add(new Matrix(p, n));
                for (int j = 0; j < p; j++)
                {
                    for (int k = 0; k < n; k++)
                    {
                        H[0][j, k] = Convert.ToDouble(MatrixBoxListH[0].getVal(j, k));
                    }
                }


                tau = new List <double>();
                tau.Add(0);
                for (int i = 0; i < a; i++)
                {
                    tau.Add(Convert.ToDouble(TextBoxListTau[i].Text));
                }


                teta = new List <double>();
                teta.Add(0);
                for (int i = 0; i < c; i++)
                {
                    teta.Add(Convert.ToDouble(TextBoxListTeta[i].Text));
                }

                List <Matrix> Fi = new List <Matrix>();
                if (debug)
                {
                    Fi.Add(new Matrix(Matrix.Identity(n)));
                }

                List <Matrix> Psi = new List <Matrix>();
                if (debug)
                {
                    Psi.Add(new Matrix(Matrix.Identity(m)));
                }

                if (Tu <= 0 && Tx > 0)//если задали только Tx
                {
                    Tu = Tx;
                }
                if (Tx <= 0 && Tu > 0)//а если только Tu
                {
                    Tx = Tu;
                }
                if (Tu <= 0 || Tx <= 0)//и если оне по-прежнему некорректны...
                {
                    Tx = Tu = 1;
                }

                Boolean new_determinancy = true;
                Boolean new_perturbation = false;



                State newState = new State(
                    x,
                    u,
                    A,
                    B,
                    H,
                    tau,
                    teta,
                    Fi,
                    Psi,
                    Tx,
                    Tu,
                    FlagStationary.Checked,
                    new_determinancy,
                    new_perturbation);

                newState.isRandomEffect = false;
                newState.isSplainAppr   = false;
                sys1 = new ESystem(newState);

                this.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(this, ex.Message, "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }