Разработка численного алгоритма и программного обеспечения для оптимального управления подвижной системой управляемой по каналам связи
Заказать уникальную курсовую работу- 23 23 страницы
- 6 + 6 источников
- Добавлена 29.04.2020
- Содержание
- Часть работы
- Список литературы
- Вопросы/Ответы
1. Основные определения 3
2. Математическая модель оптимального управления подвижной системой управляемой по каналам связи 6
3. Спецификация разработанной программы 14
3.1 Назначение 14
3.2 Описание 14
3.3 Системные требования 15
3.4 Алгоритм работы программы 16
4. Инструкция пользователя 17
5. Выполнение исследований 18
5.1 Исследование вероятности безотказной работы и среднего времени восстановления устройства от интенсивности восстановления технической системы 18
Заключение 23
Список использованных источников 24
Приложения 25
Anchor = AnchorStyles.Left | AnchorStyles.Right; textBox.Text = DefaultText; textBox.ReadOnly = readOnly; if (!readOnly) { textBox.CausesValidation = true; textBox.Validating += ValidateTextBox; } return textBox; } // проверка валидности текста в текстарии private void ValidateTextBox(object sender, CancelEventArgs e) { TextBox textBox = (TextBox)sender; double result; e.Cancel = !double.TryParse(textBox.Text, out result); } // создаёт вдумерный массив текстарий, вставляя каждую в таблицу расположения private TextBox[,] InitTextBoxMatrix(TableLayoutPanel layoutPanel, int count, bool readOnly) { layoutPanel.SuspendLayout(); layoutPanel.Controls.Clear(); layoutPanel.ColumnStyles.Clear(); layoutPanel.ColumnCount = count; layoutPanel.RowStyles.Clear(); layoutPanel.RowCount = count; TextBox[,] result = new TextBox[count, count]; float cellSize = 1f / count * 100f; for (int col = 0; col < count; ++col) { layoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, cellSize)); for (int row = 0; row < count; ++row) { layoutPanel.RowStyles.Add(new RowStyle(SizeType.Percent, cellSize)); TextBox textBox = InitTextBox(readOnly); layoutPanel.Controls.Add(textBox, col, row); result[col, row] = textBox; } } layoutPanel.ResumeLayout(true); return result; } // создаёт одномерный массив текстарий, вставляя каждую таблицу расположения private TextBox[] InitTextBoxArray(TableLayoutPanel layoutPanel, int count, bool readOnly) { layoutPanel.SuspendLayout(); layoutPanel.Controls.Clear(); layoutPanel.ColumnStyles.Clear(); layoutPanel.ColumnCount = 1; layoutPanel.RowStyles.Clear(); layoutPanel.RowCount = count; TextBox[] result = new TextBox[count]; float cellSize = 1f / count * 100f; layoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100f)); for (int row = 0; row < count; ++row) { layoutPanel.RowStyles.Add(new RowStyle(SizeType.Percent, cellSize)); TextBox textBox = InitTextBox(readOnly); layoutPanel.Controls.Add(textBox, 0, row); result[row] = textBox; } layoutPanel.ResumeLayout(true); return result; } private int n; private TextBox[,] matrixA; private TextBox[] vectorB; private TextBox[] vectorX; private TextBox[] vectorU; private void InitMatrixA() { matrixA = InitTextBoxMatrix(layoutMatrixA, n, false); } private void InitVectorX() { vectorX = InitTextBoxArray(layoutVectorX, n, true); } private void InitVectorB() { vectorB = InitTextBoxArray(layoutVectorB, n, false); } private void InitVectorU() { vectorU = InitTextBoxArray(layoutVectorU, n, true); } public int N { get { return n; } set { if (value != n && value > 0) { n = value; InitMatrixA(); InitVectorX(); InitVectorB(); InitVectorU(); } } } private void MainForm_Load(object sender, EventArgs e) { N = (int)numericUpDown1.Value; ShowAboutBox(); } private void numericUpDown1_ValueChanged(object sender, EventArgs e) { N = (int)numericUpDown1.Value; } private void button1_Click(object sender, EventArgs e) { if (Validate()) { try { LinearSystem system = new LinearSystem(MatrixA, VectorB); VectorX = system.XVector; VectorU = system.UVector; } catch (Exception error) { MessageBox.Show(error.Message); } } } public double[,] MatrixA { get { // собираем введённую пользователем матрицу A double[,] matrix_a = new double[n, n]; for (int i = 0; i < n; ++i) for (int j = 0; j < n; ++j) matrix_a[i, j] = double.Parse(matrixA[j, i].Text); return matrix_a; } set { // записываем в текстбоксы матрицу A for (int i = 0; i < n; ++i) for (int j = 0; j < n; ++j) matrixA[j, i].Text = value[i, j].ToString("f"); } } public double[] VectorB { get { // собираем введённый пользователем вектор B double[] vector_b = new double[n]; for (int j = 0; j < n; ++j) vector_b[j] = double.Parse(vectorB[j].Text); return vector_b; } set { // записываем в текстбоксы вектор B for (int j = 0; j < n; ++j) vectorB[j].Text = value[j].ToString("f"); } } public double[] VectorX { set { // показываем вычисленный результат X for (int j = 0; j < n; ++j) vectorX[j].Text = value[j].ToString("f"); } } public double[] VectorU { set { // показываем вычисленную невязку U for (int j = 0; j < n; ++j) vectorU[j].Text = value[j].ToString("e"); } } private void ShowAboutBox() { new AboutBox().ShowDialog(this); } private void оПрогаммеToolStripMenuItem_Click(object sender, EventArgs e) { ShowAboutBox(); } private void выходToolStripMenuItem_Click(object sender, EventArgs e) { Application.Exit(); } private void пример1ToolStripMenuItem_Click(object sender, EventArgs e) { numericUpDown1.Value = 3; MatrixA = new double[,] { { 3.0, -9.0, 3.0 }, { 2.0, -4.0, 4.0 }, { 1.0, 8.0, -18.0 } }; VectorB = new double[] { -18.0, -10.0, 35.0 }; } private void пример2ToolStripMenuItem_Click(object sender, EventArgs e) { numericUpDown1.Value = 4; MatrixA = new double[,] { { 2.0, 3.0, 5.0, 2.0 }, { 2.0, 2.0, 4.0, 3.0 }, { 3.0, 6.0, 3.0, 5.0 }, { 2.0, 5.0, 3.0, 7.0 } }; VectorB = new double[] { 4.0, 3.0, 8.0, 9.0 }; } private void пример3ToolStripMenuItem_Click(object sender, EventArgs e) { numericUpDown1.Value = 4; MatrixA = new double[,] { { 1.0, 6.0, 4.0, 1.0 }, { 6.0, 4.0, 4.0, 6.0 }, { 0.0, 1.0, 566.0, 7.0 }, { 2.0, 4.0, 5.0, 6.0 } }; VectorB = new double[] { 4.0, 6.0, 6.0, 6.0 }; } private void пример4ToolStripMenuItem_Click(object sender, EventArgs e) { numericUpDown1.Value = 5; MatrixA = new double[,] { {7.0, 1.0, 3.0, 2.0, 4.0}, {9.0, 2.0, 4.0, 2.0, 1.0}, {4.0, 2.0, 1.0, 3.0, 4.0}, {1.0, 3.0, 1.0, 2.0, 1.0}, {2.0, 1.0, 2.0, 4.0, 3.0} }; VectorB = new double[] { 4.0, 2.0, 5.0, 3.0, 1.0 }; } }}
1. ГОСТ Р 27.002-2009. Надежность в технике. Термины и определения. М.: Издательство стандартов, 2011. – 32 с.
2. Потапов В.И. Противоборство технических систем в конфликтных ситуациях: модели и алгоритмы. Монография – Омск, Издательство ОмГТУ, 2015. – 168 с.
3. Вентцель Е.С. Исследование операций: задачи, принципы, методология. – Наука, Главная редакция физика-математической литературы, 1980. – 208 с.
4. Половко А.М., Гуров С. В. Основы теории надежности. – 2-е изд., перераб. и доп. – СПб.: БХВ-Петербург, 2006. – 704
5. ГОСТ 27.301-95. Надежность в технике. Расчет надежности. Основные положения. М.: Издательство стандартов, 1997. – 15 с.
6. Матвеевский В.Р. Надежность технических систем. Учебное пособие - Московский государственный институт электроники и математики. М., 2002. – 113 с.
Вопрос-ответ:
Что такое оптимальное управление подвижной системой управляемой по каналам связи?
Оптимальное управление подвижной системой управляемой по каналам связи - это метод управления движением системы, который позволяет достичь оптимальных результатов, минимизируя затраты или максимизируя выходы системы, в условиях ограниченных ресурсов и переменных факторов.
Какие основные определения используются в разработке численного алгоритма оптимального управления подвижной системой?
Основные определения, используемые в разработке численного алгоритма оптимального управления подвижной системой, включают в себя понятия управления, управляемости, оптимальности, математической модели и др.
Какая математическая модель используется для оптимального управления подвижной системой управляемой по каналам связи?
Для оптимального управления подвижной системой управляемой по каналам связи используется математическая модель, которая описывает движение системы, управляющие воздействия, ограничения и оптимальные критерии качества.
Каким образом разработанное программное обеспечение для оптимального управления подвижной системой управляемой по каналам связи может быть использовано?
Разработанное программное обеспечение для оптимального управления подвижной системой управляемой по каналам связи может быть использовано для проведения исследований, моделирования и оптимизации системы управления, а также для обучения и практического применения в различных областях, связанных с управлением подвижными системами.
Какие системные требования должны быть выполнены для работы программы разработанного программного обеспечения?
Для работы программы разработанного программного обеспечения требуется компьютер с операционной системой, способный обрабатывать математические вычисления и взаимодействовать с подвижной системой по каналам связи.
Какие основные определения используются в статье?
В статье используются следующие основные определения: оптимальное управление, подвижная система, управление по каналам связи, математическая модель.
Какая математическая модель используется для оптимального управления подвижной системой?
Для оптимального управления подвижной системой, управляемой по каналам связи, используется определенная математическая модель, которая описывается в статье.
Какие системные требования предъявляются к разработанной программе?
Для работы разработанной программы необходимы определенные системные требования, которые описаны в статье.
Какой алгоритм работы программы предложен в статье?
В статье предложен определенный алгоритм работы разработанной программы для оптимального управления подвижной системой.
Какое исследование выполнено в статье и чего оно касается?
В статье выполнено определенное исследование вероятности бе, которое рассматривает оптимальное управление подвижной системой, управляемой по каналам связи.