Skip to content
This repository has been archived by the owner on Jan 14, 2025. It is now read-only.

Commit

Permalink
Merge branch 'main' into task_01
Browse files Browse the repository at this point in the history
  • Loading branch information
NogameNo-life authored Dec 26, 2024
2 parents 6b20aba + c6830ba commit 0d5234f
Show file tree
Hide file tree
Showing 79 changed files with 3,474 additions and 49 deletions.
41 changes: 22 additions & 19 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,29 +17,29 @@
|| ФИО | Directory name | #0 | #1 | #2 | #3 | #4 | #5 | #6 | Рейтинг |
|----|----------------------|-----------------------------|----|----|----|----|----|----|----|---------|
| 1 | Заседатель Никита |[ii02509](./trunk/ii02509/)|||||||||
| 2 | Гродзинский Алексей |[ii0230279](./trunk/ii0230279/)||||||||
| 3 | Андреюк Максим |[ii02503](./truk/ii02503/)|||||||||
| 4 | Подгайский Денис |[ii0230293](./trunk/ii0230293)|||||||||
| 2 | Гродзинский Алексей |[ii0230279](./trunk/ii0230279/)||||||||
| 3 | Андреюк Максим |[ii02503](./trunk/ii02503/)|||||||||
| 4 | Подгайский Денис |[ii0230293](./trunk/ii0230293)|||||||||
| 5 | Мохорева Татьяна |[ii0230290](trunk/ii0230290/)|||||||||
| 6 |Трошин Иван|[ii02506](trunk/ii02506)|||||||||
| 7 | Бекназарова Анжелика |[ii0230277](./trunk/ii0230277/)|||||||||
| 8 |Елец Юлия |[ii02508](trunk/ii02508)|||||||||
| 9 | Сидорчук Артём ||||||||||
| 8 |Елец Юлия |[ii02508](trunk/ii02508)|||||||||
| 9 | Сидорчук Артём |||||||||без GitHub|
| 10 | Кулик Яна |[ii0230285](./trunk/ii0230285/)|||||||||
| 11 | Борис Жук |[ii0230282](./trunk/ii0230282)|||||||||
| 12 | Милевский Артем |[ii230289](trunk/ii230289)|||||||||
| 11 | Борис Жук |[ii0230282](./trunk/ii0230282)|||||||||
| 12 | Милевский Артем |[ii0230289](trunk/ii0230289)|||||||||
| 13 | Глеб Горбат |[ii0230278](./trunk/ii0230278/)|||||||||
| 14 | Евгений Скачков | [ii0230297](./trunk/ii0230297/) |:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|||||
| 15 | Бажежа Анита |[ii0230276](./trunk/ii0230276/)|||||||||
| 16 | Пальчастый Ярослав |[ii02518](./trunk/ii02518/)|:white_check_mark:|:white_check_mark:||||||||
| 17 | Максимчук Елизавета |[ii02513](./trunk/ii02513/)|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|||||
| 18 | Денис Дулько |[ii230280](./trunk/ii230280/)|:white_check_mark:|:white_check_mark:|:white_check_mark:||||||
| 18 | Денис Дулько |[ii0230280](./trunk/ii0230280/)|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:||||
| 19 | Вячеслав Янушкевич |[ii230300](./trunk/ii230300/)|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|||||
| 20 | Максим Ящук |[ii02520](./trunk/ii02520/)|||||||||
| 21 | Артем Левай |[ii230286](./trunk/ii230286/)|:white_check_mark:|:white_check_mark:|||||||||
| 21 | Артем Левай |[ii0230286](./trunk/ii0230286/)|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:||||
| 22 | Владимир Котов |[ii025022](./trunk/ii0230284) |||||||||
| 23 | Мархель Анастасия |[ii00230288](./trunk/ii00230288/)|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:||||
| 24 | Нешумаев Александр |[ii002517](./trunk/ii002517/)|||||||||
| 24 | Нешумаев Александр |[ii002517](./trunk/ii002517/)|||||||||
| 25 | Редькович Станислав |[ii02525](./trunk/ii02525)|||||||||
| 26 | Рашед Аль-Хауатма ||||||||||
| 27 | Юхнович Виктор |[ii02527](./trunk/ii02527)|||||||||
Expand All @@ -49,28 +49,31 @@
|| ФИО | Directory name | #0 | #1 | #2 | #3 | #4 | #5 | #6 | Рейтинг |
|----|-----------------------------|------------------------------|----|----|----|----|----|----|----|---------|
|1|Семенов Арсений|[ii02616](./trunk/ii02616/)|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:||||||
|2|Павел Яшков||:white_check_mark:|:white_check_mark:|||||||
|3|Михаил Рулько|[ii02615](./trunk/ii02615/)|:white_check_mark:|:white_check_mark:|:white_check_mark:||:white_check_mark:||||
|4|Валерия Цурукова||||||||||
|5|Вика Сугак|[ii230205](./trunk/ii230205/)|:white_check_mark:|:white_check_mark:|:white_check_mark:||:white_check_mark:||||||
|6|Даниил Турич|[ii02619](./trunk/ii02619/)|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|||||||
|2|Павел Яшков|[ii02626](./trunk/ii02626/)|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:||||
|3|Михаил Рулько|[ii02615](./trunk/ii02615/)|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:||||
|4|Валерия Цурукова|[ii02622](./trunk/ii02622/)|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:||||
|5|Вика Сугак|[ii230205](./trunk/ii230205/)|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:||||||
|6|Даниил Турич|[ii02619](./trunk/ii02619/)|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:||||||
|7|Влад Рудь|[ii02614](./trunk/ii02614/)|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:||||||
|8|Денис Шарубнёв|[ii02625](./trunk/ii02625/)|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|||||
|9|Владислав Суховило |[ii02618](./trunk/ii02618/)|:white_check_mark:|:white_check_mark:|:white_check_mark:||:white_check_mark:|:white_check_mark:|||
|10|Катя Шоева|[ii230326](./trunk/ii230326/)|:white_check_mark:|:white_check_mark:|:white_check_mark:||||
|9|Владислав Суховило |[ii02618](./trunk/ii02618/)|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:||||
|10|Катя Шоева|[ii0230326](./trunk/ii0230326/)|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:||
|11|Илья Хомиченко|[ii02621](./trunk/ii02621/)|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|||||
|12|Настя Черноиван|[ii230324](./trunk/ii230324/)|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|||
|13|Алексей Хитренко|[ii02620](./trunk/ii02620/)|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:||||
|14|Вирко Егор|[ii002601](./trunk/ii002601/)|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:||||
|15|Данилюк Тимофей|[ii02602](./trunk/ii02602/)|:white_check_mark:|:white_check_mark:|:white_check_mark:||:white_check_mark:|||||
|15|Данилюк Тимофей|[ii02602](./trunk/ii02602/)|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|||||
|16|Заруцкий Владислав |[ii02604](./trunk/ii02604/)|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|||||
|17|Згера Егор|[ii02605](./trunk/ii02605/)|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:||||
|18|Карпович Ксения|[ii02606](./trunk/ii02606/)|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|||||
|19|Ковальчук Артем|[ii00230308](./trunk/ii00230308/)|:white_check_mark:|:white_check_mark:|:white_check_mark:||:white_check_mark:|:white_check_mark:||||
|20|Кушнеревич Евгений|[ii02608](./trunk/ii02608/)|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|||||
|21|Пасевич Ксения|[ii230311](./trunk/ii230311/)|:white_check_mark:|:white_check_mark:|:white_check_mark:||||||
|21|Пасевич Ксения|[ii0230311](./trunk/ii0230311/)|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:||||
|22|Петручик Дмитрий|[ii02610](./trunk/ii02610/)|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:||||
|23|Пилипук Максим|[ii02611](./trunk/ii02611/)|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:||||
|24|Прокопюк Артем|[ii02612](./trunk/ii02612/)|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:||||
|25|Рубцов Дмитрий|[ii02613](./trunk/ii02613/)|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:||||
|26|Ерошин Егор|[ii00230304](./trunk/ii00230304/)|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|||||



Binary file added trunk/ii0230279/task_02/doc/graphic.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
130 changes: 130 additions & 0 deletions trunk/ii0230279/task_02/doc/readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
<p align="center"> Министерство образования Республики Беларусь</p>
<p align="center">Учреждение образования</p>
<p align="center">“Брестский Государственный технический университет”</p>
<p align="center">Кафедра ИИТ</p>
<br><br><br><br><br><br><br>
<p align="center">Лабораторная работа №2</p>
<p align="center">По дисциплине “Общая теория интеллектуальных систем”</p>
<p align="center">Тема: “ПИД-регуляторы”</p>
<br><br><br><br><br>
<p align="right">Выполнил:</p>
<p align="right">Студент 2 курса</p>
<p align="right">Группы ИИ-25</p>
<p align="right">Гродзинский А.Д.</p>
<p align="right">Проверил:</p>
<p align="right">Ситковец Я. С.</p>
<br><br><br><br><br>
<p align="center">Брест 2024</p>

<hr>

# Общее задание #
1. Написать отчет по выполненной лабораторной работе №1 в .md формате (readme.md) и с помощью запроса на внесение изменений (**pull request**) разместить его в следующем каталоге: **trunk\ii0xxyy\task_02\doc** (где **xx** - номер группы, **yy** - номер студента, например **ii02302**).
2. Исходный код написанной программы разместить в каталоге: **trunk\ii0xxyy\task_02\src**.

# Задание #
Задание. На C++ реализовать программу, моделирующую рассмотренный выше ПИД-регулятор. В качестве объекта управления использовать математическую модель, полученную в предыдущей работе. В отчете также привести графики для разных заданий температуры объекта, пояснить полученные результаты.


<hr>

# Выполнение задания #

Код программы:
```C++
#include <iostream>
#include <vector>
#include <cmath>
#include <iomanip>
using namespace std;

// Глобальные переменные для коэффициентов и параметров
double coeffA, coeffB, coeffC, coeffD; // Коэффициенты системы
double gain, desiredOutput; // Параметры системы
double reg0, reg1, reg2; // Параметры регулятора

// Функция для симуляции системы
void runSimulation() {
const double INITIAL_OUTPUT = 2.0; // Начальное значение выхода
double controlSignal = 0.0; // Изначальный управляющий сигнал
double integral = 0.0; // Переменная для интегральной части
double previousError = 0.0; // Переменная для хранения предыдущей ошибки
vector<double> outputs = { INITIAL_OUTPUT }; // Вектор выходных значений
vector<double> errors = { desiredOutput - INITIAL_OUTPUT }; // Инициализация вектора ошибок

// Цикл продолжается, пока ошибка больше 0.01
while (fabs(errors.back()) > 0.01) {
double currentError = desiredOutput - outputs.back(); // Текущая ошибка
errors.push_back(currentError);

// Обновление интегральной части
integral += currentError;

// Пропорциональная + интегральная + дифференциальная составляющая
controlSignal = gain * (currentError + 0.1 * integral + 0.1 * (currentError - previousError));

// Упрощенные формулы для нового выхода
double newOutput = coeffA * outputs.back() + coeffB * sin(controlSignal) + coeffC * controlSignal;

// Обновление выходных данных
outputs.push_back(newOutput);
previousError = currentError; // Обновление предыдущей ошибки
}

// Вывод результатов симуляции
cout << fixed << setprecision(4); // Форматируем вывод с 4 знаками после запятой
cout << "Step\tOutput\tError\n";
for (size_t i = 0; i < outputs.size(); ++i) { // Итерируем по всем шагам
cout << i + 1 << "\t"
<< outputs[i] << "\t"
<< errors[i] << endl;
}
}

int main() {
// Ввод параметров системы от пользователя
setlocale(LC_ALL, "RU");
cout << "Введите коэффициенты системы:\n";
cout << "coeffA: "; cin >> coeffA;
cout << "coeffB: "; cin >> coeffB;
cout << "coeffC: "; cin >> coeffC;
cout << "coeffD: "; cin >> coeffD;

cout << "\nВведите параметры системы:\n";
cout << "gain: "; cin >> gain;
cout << "desiredOutput (желаемое значение выхода): "; cin >> desiredOutput;

// Расчет параметров регулятора
reg0 = gain + 5; // Можно сделать их зависящими от gain
reg1 = -gain / 2; // Изменяем коэффициент для большей сложности
reg2 = gain * 0.5; // Можно использовать различные значения для упрощения и компоновки

// Запуск симуляции
runSimulation();

return 0; // Выход из программы
}
'''
Вывод:
'''
Итерация Выход Ошибка Контроль
1 0 0 1
2 0 0 1
3 6.16092 10 13
4 7.3199 3.83908 5.30689
5 7.55022 2.6801 6.80095
6 8.00088 2.44978 7.59588
7 8.42251 1.99912 7.78563
8 8.69575 1.57749 7.95464
9 8.83901 1.30425 8.17916
10 8.8914 1.16099 8.44137
11 8.86832 1.1086 8.73495
12 8.76161 1.13168 9.07768
13 8.55626 1.23839 9.50436
14 8.28491 1.44374 10.0531
15 8.14266 1.71509 10.707
16 8.36672 1.85734 11.2593
17 8.76001 1.63328 11.4493
18 9.05286 1.23999 11.4855
'''
![График](./graphic.png)
4 changes: 4 additions & 0 deletions trunk/ii0230279/task_02/src/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
cmake_minimum_required (VERSION 3.0.0)

project (lab_02_ii0230279)
add_executable ( ${PROJECT_NAME} OtisLab02.cpp)
Loading

0 comments on commit 0d5234f

Please sign in to comment.