Научная статья на тему 'ИССЛЕДОВАНИЕ СОВРЕМЕННЫХ МЕТОДОВ ОБУЧЕНИЯ НА ОСНОВЕ РАЗРАБОТКИ ОБУЧАЮЩЕЙ КОМПЬЮТЕРНОЙ ИГРЫ ПО ЯЗЫКАМ ПРОГРАММИРОВАНИЯ'

ИССЛЕДОВАНИЕ СОВРЕМЕННЫХ МЕТОДОВ ОБУЧЕНИЯ НА ОСНОВЕ РАЗРАБОТКИ ОБУЧАЮЩЕЙ КОМПЬЮТЕРНОЙ ИГРЫ ПО ЯЗЫКАМ ПРОГРАММИРОВАНИЯ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
231
22
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
СОВРЕМЕННЫЕ / ТРАДИЦИОННЫЕ / С++ / C# / ПОДХОД К ОБУЧЕНИЮ

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Сидоренко Дмитрий Витальевич

В данной статье будут рассмотрены современные методы обучения языку программирования С++ для учеников и студентов на основе разработки обучающей компьютерной игры. Сравнение их с традиционными методами обучения XXI века. В исследовании анализируются недостатки и достоинства современного метода обучения. Проводится анализ, преимущества и недостатки, а также причины его использования. Производится сравнение игровых движков, их доступность, многоплотформенность и уровень использования для создания проектов. Для них также проводится анализ, преимущества и недостатки, а также причины использования игрового движка. Рассматривается создание самого проекта. Объясняется почему был выбран именно игровой движок Unity3D. Какие функции в себя включает проект. Рассматривается проработка дизайна уровней и механик. Производится разбор подключенных скриптов и анимации персонажа при определенных действиях. Активация наказаний за неправильный ответ. Подсчет статистики неправильных ответов, количества попыток и отвеченных вопросов. Как происходит переход между уровнями и вывод определенного текста при выборе того или иного ответа. Приводятся скриншоты с проекта для подробного изучения функций Unity3D и сравнительные таблицы для игровых движков и методов обучения.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

RESEARCH OF MODERN TEACHING METHODS BASED ON THE DEVELOPMENT OF AN EDUCATIONAL COMPUTER GAME IN PROGRAMMING LANGUAGES

This article will consider modern methods of teaching the C+ + programming language for students and students based on the development of an educational computer game. Comparing them with traditional teaching methods of the XXI century. The author analyzes the disadvantages and advantages of the modern method of teaching. An analysis is carried out, advantages and disadvantages, as well as the reasons for its use. Game engines are compared, their availability, multiplatformity and the level of use for creating projects. They are also analyzed, advantages and disadvantages, as well as the reasons for using the game engine. The creation of the project itself is being considered. It explains why the Unity 3D game engine was chosen. What functions the project includes. The study of the design of levels and mechanics is considered. The analysis of the connected scripts and character animations is performed for certain actions. Activation of punishments for an incorrect answer. Counting statistics of incorrect answers, the number of attempts and answered questions. How is the transition between levels and the output of a certain text when choosing a particular answer. Screenshots from the project are provided for a detailed study of Unity3D functions and comparative tables for game engines and training methods.

Текст научной работы на тему «ИССЛЕДОВАНИЕ СОВРЕМЕННЫХ МЕТОДОВ ОБУЧЕНИЯ НА ОСНОВЕ РАЗРАБОТКИ ОБУЧАЮЩЕЙ КОМПЬЮТЕРНОЙ ИГРЫ ПО ЯЗЫКАМ ПРОГРАММИРОВАНИЯ»

УДК 004.432.2

DOI: 10.24412/2071-6168-2022-10-175-182

ИССЛЕДОВАНИЕ СОВРЕМЕННЫХ МЕТОДОВ ОБУЧЕНИЯ НА ОСНОВЕ РАЗРАБОТКИ ОБУЧАЮЩЕЙ КОМПЬЮТЕРНОЙ ИГРЫ ПО ЯЗЫКАМ ПРОГРАММИРОВАНИЯ

Д.В. Сидоренко

В данной статье будут рассмотрены современные методы обучения языку программирования С++ для учеников и студентов на основе разработки обучающей компьютерной игры. Сравнение их с традиционными методами обучения XXI века. В исследовании анализируются недостатки и достоинства современного метода обучения. Проводится анализ, преимущества и недостатки, а также причины его использования. Производится сравнение игровых движков, их доступность, многоплотформен-ность и уровень использования для создания проектов. Для них также проводится анализ, преимущества и недостатки, а также причины использования игрового движка. Рассматривается создание самого проекта. Объясняется почему был выбран именно игровой движок Unity3D. Какие функции в себя включает проект. Рассматривается проработка дизайна уровней и механик. Производится разбор подключенных скриптов и анимации персонажа при определенных действиях. Активация наказаний за неправильный ответ. Подсчет статистики неправильных ответов, количества попыток и отвеченных вопросов. Как происходит переход между уровнями и вывод определенного текста при выборе того или иного ответа. Приводятся скриншоты с проекта для подробного изучения функций Unity3D и сравнительные таблицы для игровых движков и методов обучения.

Ключевые слова: современные, традиционные, С++, C#, подход к обучению.

Введение. Исследовательской работой в статье является современные методы обучения, обучающие компьютерные игры по языкам программирования [2]. Так как большое количество учеников и студентов основное время проводят за телефонами и компьютерами, данная тема была выбрана для того, чтобы соответствовать технологиям и знаниям XXI века, позволяющая, легче понимать учебный материал во время его изучения.

Большинство учащихся в школах, колледжах или институтах получают большое количество учебного материала, которую игнорируют, или просто теряют интерес от такого объемного чтения, или наоборот, просят находить его в городских библиотеках, где информация может быть либо устаревшей (не подходящая под современные версии языков программирования), либо как говорилось ранее, он может быть слишком объемным и трудоемким для поиска нужной информации. Из-за этого традиционное обучение для современной аудитории становится объемным, неинтересным, а зачастую устаревшим, поэтому они не могут после этого ответить на элементарные вопросы преподавателя [3].

Выше перечисленные проблемы можно решить с помощью обучающих компьютерных игр, которые завлекают учащихся и позволяют им лучше понимать материал, который приводится уже в качестве готового примера и продукта. При желании они смогут сами посмотреть сделанный программный код продукта, тем самым закрепят пройденный материал.

В результате исследования проводится сравнительный анализ между традиционными методами и современными методами, на основе проверенных данных в интернете и их анализа можно сказать, что современные методами являются лучшим методом обучения учащихся. Полученные теоретические результаты внедряются и тестируются при разработке программного проекта и апробируются при изучении языка С++.

Описание подхода. Задачей исследования является разработка игровой программной среды для современного метода обучения.

Для реализации метода обучения в игровой программной среде был разработан проект на игровом движке Unity3D [1]. Выбор игрового движка основан на простоте понимании и реализации различных игровых решений [4]. В отличии от других движков, таких как: Unreal Engine 5, Source 1, Creation Engine и тому подобное, которые либо свободны для разработки определенных жанров проекта (First Person Shooter (FPS), Royal Play Game (RPG)), либо закрыты от пользователей (табл. 1).

Для решения поставленной задачи были выдвинуты условия разрабатываемого проекта:

1) Доступный интерфейс для пользователя;

2) Множество уровней с различным подходом к их детализации и оформлению;

3) Вывод различных анимации в случаи правильного или неправильного ответа;

4) Вывод сетки результатов в конце игровой сессии для оценивания и сравнения с другими пользователями.

Выбранные условия определяют будущую разработку с учетом поставленной задачи исследования: разработка игровой программной среды для современного метода обучения.

Описание алгоритма. Основными этапами алгоритма разрабатываемой ИС является:

Во-первых, определение для какого предмета будет создаваться проект, а также с каким уклоном в учебе. В нашем случае это предмет, тесно связанный с программированием на языке С++.

Во-вторых, после определения, приступаем непосредственно к реализации данного проекта. Данный этап включает в себя несколько подэтапов:

- запуск программы Unity3D;

- создание нескольких сцен в Unity3D;

- программа Visual Studio для написания скриптов.

Запустив Unity3D создаем первую сцену [5-7], она будет отвечать за навигацию по настройкам, уровням и просмотр результатов других пользователей (рис. 1).

Как видно из рис. 1 на сцене имеются 4 кнопки: «Начать игру», «Уроки», «Настройки» и «Выход». Рассмотрим подробнее некоторые кнопки и их функциональную часть.

Кнопка «Начать игру» отвечает за загрузку новой сцены через написанный код в скрипте «MenuControls.cs». В нем используется команда:

SceneManager. LoadScene(SceneManager. GetActiveScene(). buildlndex + 1); Она организует переход между сценами, которые указываются при сборке проекта.

Таблица 1

Сравнение игровых движков __

Unity3D Unreal Engine Gamemaker Studio 2 Godot HTML5

Оплата Регулярно, оплата зависит от уровня 5% автору, когда публикуются на стороннем рынке Однажды или регулярно Бесплатно Бесплатно

3D Да Да Плохая поддержка Да Что-то похожее

2D Да Да Да Да Да

Предлагаемые настройки Огромный Огромный Много Много Ограничено для web

Легко в использовании Относительно легко Не так легко Легко Легко Зависит от разработчика

Поддерживаемые языки C#, UnityScript (похожий на JavaScript), Boo (похожий на Python) C++ GameMaker Language(похожий на JavaScript) C# и Go-dotScript (Похожий на Python) Широкая поддержка

Кнопки «Уроки» и «Настройки» работают по одному и тому же принципу. Справа, во вкладке «Inspector», имеется событие «On Click()», которое отвечает на действие при нажатии кнопки. Соответственно, как видно из рис. 1 при нажатии кнопки активируется соответствующий раздел слева из вкладки «Hierarchy».

Рис. 1. Создание сцены «Меню» в Unity3D

Далее создается вторая сцена, на которой будет проходить основное время разработки проекта. Так как у проекта подразумевается несколько уровней с различными механиками и дизайнами, которые в дальнейшем появятся, то для примера будет рассмотрен первый уровень. На ней создается дизайн, вопросы, наказания и главный персонаж, который будет управляться автоматически, не зависимо от пользователя (рис. 2).

Для начала, рассмотрим, как производится движение персонажа. Как видно из рис. 2, движение у нас будет происходить через «Animator», присваивая переменной «Speed», с помощью команды SetFloat, полученное значение из формулы:

_animator. SetFloat("Speed", _navMeshAgent. velocity. magnitude / movementspeed / 2); (1)

где _navMeshAgent.velocity.magnitude - текущая скорость движения, movementspeed - заданная скорость движения.

: О Inspector f Lighting ' " ^ MainPlayer

t Tag Player ▼

Model Open Selee

ng X Navigat ► ¡3 i Static * Layer Player »

^ Animator 8 2 I

Controller % Controller ©

Avatar ic Ninja J>emo@T - Posei ©

Apply Root Motion v

Update Mode Normal *

Culling Mode Cull Update Transforms »

Clip Count: 0

_ Curves Pes 0 Qua! 0 Euftr 0 Seal«: 0 Muscles

A : 0 PP;r a

^Uf Curves Count: 0 Constant: a (O.OK) Den«: 0 [0,0** Stream: 0 (O.OK)

Animator ее Game Layers Parameters ® Base Layer Blend Tree

r Ufe lid ТЧее

в ■к un О" «о»»» PI

Speed • ■г

ВавсМовопхфймпО! - For.

I М1Ч*

fijqiclbûdy • 7

С л р s и 1 с Collider Л г

Move Character [Scrip0 •

BMovoCtiatacti

Mover nentspeea 4

New Mesh Agent a -V

Generate Questions (Script) e

в - Traps (Script) Q ■г

в Score (Script) e

Рис. 2. Главный персонаж. Его настройки в Unity3D

Данная формула выполняет вычисление состояния персонажа, т.е. при какой скорости использовать ту или иную анимацию передвижения. Выполнение анимации происходит с помощью «Blend Tree», где находятся наши анимации. Если посмотреть на рис. 2, то можно увидеть, что есть анимации «Idle» и «Run», которые активируется, если переменная «Speed» равна 0 или 0.5.

Далее перейдем к дизайну проекта, то есть к его внешнему виду, с помощью которого можно придать приятный вид, способный привлечь внимание пользователя и не оттолкнуть его (рис. 3).

Рис. 3. Дизайн первого уровня и генерация вопросов

В проекте использовались низкополегональные текстуры, позволяющие быстро подгружать уровень и не ждать по 5-10 минут загрузки. Из-за этого внешний вид проекта не пострадал и не вызывает какого-либо дискомфорта.

После того, как разобрались с персонажем и дизайном уровня, перейдем к основной части проекта, то есть к созданию вопросов и наказания за неправильный ответ (рис. 4).

На рис. 4 во вкладке «Inspecter» в разделе «Questions» видно, что вопросы задаются вручную, для обеспечения минимальных ошибок в вопросах и ответах на них. Так как это все прописывалось в скрипте «GenerateQuestions.cs», рассмотрим, как создавался список для составления вопрсов:

//Организация списка для вопросов

[System. Serializable]

public class QuestionList

{

//Создание поля для записи вопросов public string question;

//Создания массива полей для записи ответов на вопросы public string[] answers = new string[3];

}

Рис. 4. Генерация вопросов.

После составления списка вопросов и ответов, переходим к выводу их в проекте, и чтобы вопросы не выводились постоянно в одной и той же последовательности в скрипте предусмотрен случайный вывод для них. Ниже предоставлен код с помощью которого происходит данный вывод: //Генерация вопросов

void questionGenerate() {

if (qList.Count > 0)

{

//Выбор рандомного номера из всех вопросов randQ = Random.Range(0, qList.Count); //Поиск выбранного вопроса в списке crntQ = qList[randQ] as QuestionList; //Вывод текущего вопроса на интерфейс qText.text = crntQ.question; //Организация ответов на текущий вопрос List<string> answers = new List<string>(crntQ.answers);

for (int i = 0; i < crntQ.answers.Length; i++) {

//Задаем случайный порядок для ответов int rand = Random.Range(0, answers.Count); //Вывод ответов на вопрос answersText[i].text = answers[rand];

//Удаление ответов, для избежание вывода их в последующих вопросах answers.RemoveAt(rand);

}

}

}

Далее, чтобы пользователь знал на сколько вопросов он ответил и сколько ошибок допустил, предусмотрен подсчет, который выводится на экран (рис. 4) в правом верхнем углу экрана игры. А также знал сколько попыток он на это потратил. Ниже предоставлен код: //Проверка нажатия кнопки ответа на вопрос

IEnumerator trueOrFalse(bool check) {

//Задержка в 1 секунду, для отображения правильного/неправильного ответа yield return new WaitForSeconds(1); //Проверка условия, если правильный ответ if (check)

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

{

//Туманная преграда, для того, чтобы пользоваель не знал правильное направление

FoggedWay[countF] .SetActive(false);

FoggedWay[countF + 1].SetActive(false);

//Отключение окна с вопросом

qWindow.SetActive(false);

//Вывод текста о том, что ответ правильный

Ranswer.SetActive(true);

//Отключение текущего объекта отвечающего за вопрос PathTrue[Score.countQ].SetActive(false);

//Задержка в 3 секунды, чтобы пользователь понял, что он ответил правильно yield return new WaitForSeconds(3); //Отключение текста Ranswer.SetActive(false);

//Проверка условия, что вопрос не является конечным

if (Score.countQ != 10)

{

//Откючение режима ожидания для персонажа MoveCharacter.idle = false; //Запись счета о том, на вопрос ответили Score.countQ++;

//Подсчет туманной преграды для дальнейшего отключения countF += 2;

//Назначение следующего пункта для отображения вопроса

_navMeshAgent.SetDestination(PathTrue[Score.countQ].transform.position);

//Удаление вопроса из спика, для предотвращения повтора

qList.RemoveAt(randQ);

//Генерация следующего вопроса в списке

questionGenerate();

//Прерывание текущей функции

yield break;

}

}

//ПРоверка условия, если неправильный ответ

else

{

//ПРибавка к количеству неправильнх ответов,то есть количество ошибок

Score.countM++;

//Туманная преграда

FoggedWay[countF] .SetActive(false);

FoggedWay[countF + 1].SetActive(false);

//Отключение текущего объекта отвечающего за вопрос

PathTrue[Score.countQ].SetActive(false);

//Отключение окна с вопросом

qWindow.SetActive(false);

//Вывод текста о том, что ответ неправильный

Wanswer.SetActive(true);

//Откючение режима ожидания для персонажа

MoveCharacter.idle = false;

//Назначение следующего пункта для отображения анимации неправильного ответа _navMeshAgent.SetDestination(PathFalse[Score.countQ].transform.position); //Задержка в 3 секунды, для отображения текста с неправильным ответом yield return new WaitForSeconds(3);

//Отключение отображения текста о том, что ответ неправильный Wanswer.SetActive(false);

//Организация цикла до того момента пока анимация ловушки не проиграется до конца

while (!Traps.act) {

//Задержка в 1 секунду

yield return new WaitForSeconds(l);

//Проаерка условия, что ловушка активна

if (Traps.act) {

//Запись счета о том, на вопрос ответили Score.countQ++;

//Влючение режима ожидания для персонажа MoveCharacter.idle = true;

//Задержка в 4 секунды для отображения полно анимации ловушки yield return new WaitForSeconds(4); //Откючение режима ожидания для персонажа MoveCharacter.idle = false;

//Назначение следующего пункта для отображения вопроса

_navMeshAgent.SetDestination(PathTrue[Score.countQ].transform.position);

//Удаление вопроса из спика, для предотвращения повтора

qList.RemoveAt(randQ);

//Генерация следующего вопроса в списке

questionGenerate();

//Прерывание текущей функции

}

}

//Подсчет туманной преграды для дальнейшего отключения countF += 2;

//Прерывание текущей функции yield break;

}

}

Часть кода из скрипта «Score.cs», где происходит подсчет попыток: //Обновление каждый кадр

private void Update() {

//Запись количества вопросов в текстовое поле stats.text = "Вопросы: " + countQ + "/10"; //Запись количества попыток в текстовое поле tries.text = "Попыток: " + countT; //Запись количества ошибок в текстовое поле mistake.text = "Кол-во ошибок: " + countM + "/3"; //Проверка условия, если нажата клавиша "R"

if (Input. GetKeyDown(KeyCode.R)) {

//Увелиение количества попыток countT++;

//Перезапуск текущей сцены

SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);

}

//Проверка условия, если количество ошибок меньше 3

if (countM != 3)

{

//Запись количества ошибок в текстовое поле mistake.text = "Кол-во ошибок: " + countM + "/3";

}

//Проверка условия, если количество ошибок равно 3

if (countM == 3) {

//GameObject.Find("LoseWnd").gameObject.SetActive(true); //yield return new WaitForSeconds(5); //GameObject.Find("LoseWnd").gameObject.SetActive(false); //Отключение активных ловушек Traps.act = false;

//Увеличение количества попыток

Score.countT++;

//Перезапуск текущей сцены

SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);

}

}

В итоге имеется готовая сцена с приятным интерфейсом, позволяющая провести тестирование для пользователей по современному методу.

Заключение. При сравнении традиционного метода обучения и современного метода обучения можно выделить ряд преимуществ, которые предоставлены в табл. 2.

Таблица 2

Сравнение традиционного и современного методов обучения_

Параметры Традиционные Современные

Цель Формирование знаний, умений, навыков Развитие способности самостоятельно ставить и отыскивать решения новых нестандартных проблем

Формы организации Фронтальные, индивидуальные Групповые, коллективные

Метода обучения Иллюстративно-объяснительные, информационные. Проблемные, проблемного изложения, частично-поисковый, исследовательский.

Ведущий тип деятельности Репродуктивный, воспроизводящий. Продуктивный, творческий, проблемный

Способы усвоения Заучивание, деятельность по алгоритму Поисковая деятельность, рефлексия

Функции учителя Носитель информации, хранитель норм и традиций Организатор сотрудничества, консультант

Позиция ученика Пассивность, отсутствие интереса, отсутствие мотива к личностному росту Активность, наличие мотива к самосовершенствованию, наличие интереса к деятельности.

Вместе с этим разработка обучающей компьютерной игры располагает больше к современному методу обучения из-за её подхода. Также проект располагает дальнейшее развитие, такое как:

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

- добавление сетки рейтинга пользователей, как было указано в задачах пункта 4;

- добавление новых уровней с различными механиками и дизайнами.

Список литературы

1. Официальный сайт Unity3D. [Электронный ресурс] URL: https://unity.com/ru (дата обращения: 10.05.2022).

2. Сравнение методов. [Электронный ресурс] URL: https://urok. 1sept.ru/articles/652086 (дата обращения: 10.05.2022).

3. Основные плюсы и минусы традиционного обучения. [Электронный ресурс] URL: https://plusiminusi.ru/osnovnye-plyusy-i-minusy-tradicionnogo-obucheniya (дата обращения: 10.05.2022).

4. Сравнение игровых движков. [Электронный ресурс] URL: https://xsolla.com/blog/which-game-engine-is-best-for-you (дата обращения: 10.05.2022).

5. Unity в действии. Мультиплатформенная разработка на C#. [Электронный ресурс] URL: https://www.manning.com/books/unity-in-action (дата обращения: 10.05.2022).

6. Шаблоны игрового программирования - Robert Nystrom. [Электронный ресурс] URL: https://live13.liveiournal.com/462582.html (дата обращения: 10.05.2022).

7. Кудрина Е.В. Основы алгоритмизации и программирования на языке c#: учеб. пособие для СПО / Е.В. Кудрина, М.В. Огнева. М.: Издательство Юрайт, 2019. 322 с.

8. Кудрявцев К.Я. Методы оптимизации: учеб. пособие для вузов / К.Я. Кудрявцев, А.М. Прудников. 2-е изд. М.: Издательство Юрайт, 2019. 140 с.

9. Малявко А.А. Формальные языки и компиляторы: учеб. пособие для вузов. М.: Издательство Юрайт, 2018. 429 с.

10. Стасышин В.М. Базы данных: технологии доступа: учеб. пособие для СПО / В.М. Стасыш-ин, Т.Л. Стасышина. 2-е изд., испр. и доп. М.: Издательство Юрайт, 2018. 164 с.

Сидоренко Дмитрий Витальевич, студент, dmitri997@mail.ru, Россия, Стерлитамак, Казанский национальный исследовательский технический университет им. А.Н.Туполева-КАИ,

Научный руководитель - Бикмуллина Ильсияр Ильдаровна, канд. техн. наук, доцент, elsiyar-b@yandex.ru, Россия, Казань, Казанский национальный исследовательский технический университет им. А.Н.Туполева-КАИ

RESEARCH OF MODERN TEACHING METHODS BASED ON THE DEVELOPMENT OF AN EDUCATIONAL COMPUTER GAME IN PROGRAMMING LANGUAGES

D.V. Sidorenko

This article will consider modern methods of teaching the C+ + programming language for students and students based on the development of an educational computer game. Comparing them with traditional teaching methods of the XXI century. The author analyzes the disadvantages and advantages of the modern method of teaching. An analysis is carried out, advantages and disadvantages, as well as the reasons for its use. Game engines are compared, their availability, multiplatformity and the level of use for creating projects. They are also analyzed, advantages and disadvantages, as well as the reasons for using the game engine. The creation

of the project itself is being considered. It explains why the Unity 3D game engine was chosen. What functions the project includes. The study of the design of levels and mechanics is considered. The analysis of the connected scripts and character animations is performed for certain actions. Activation of punishments for an incorrect answer. Counting statistics of incorrect answers, the number of attempts and answered questions. How is the transition between levels and the output of a certain text when choosing a particular answer. Screenshots from the project are provided for a detailed study of Unity3D functions and comparative tables for game engines and training methods.

Key words: modern, traditional, C++, C#, approach to learning.

Sidorenko Dmitry Vitalievich, student, dmitri997@mail.ru, Russia, Sterlitamak, Kazan National Research Technical University named after A.N.Tupolev-KAI,

Scientific supervisor - Bikmullina Ilsiyar Ildarovna, candidate of technical sciences, docent, elsiyar-b@yandex.ru , Russia, Kazan National Research Technical University named after A.N.Tupolev-KAI

УДК 629.78

DOI: 10.24412/2071-6168-2022-10-182-188

МЕТОДИКА ПЛАНИРОВАНИЯ ФУНКЦИОНИРОВАНИЯ МНОГОСПУТНИКОВОЙ КОСМИЧЕСКОЙ СИСТЕМЫ НАБЛЮДЕНИЯ НА ОСНОВЕ МОДИФИЦИРОВАННОГО

ГЕНЕТИЧЕСКОГО АЛГОРИТМА

В.Я. Пророк, А.В. Тимофеев

В статье предложена методика планирования функционирования многоспутниковой космической системы наблюдения, реализованная посредством математического аппарата теории эволюционных вычислений (модифицированного генетического алгоритма). Данная методика позволяет осуществлять формирование планов наблюдения заданных районов на поверхности Земли космическими аппаратами и задействования наземных средств управления с учетом динамично изменяющихся условий функционирования системы, а именно: технических, технологических и пространственно-временных ограничений, накладываемых на этот процесс. Приведены результаты сравнения эффективности использования методики с существующими подходами, основанными на реализации эвристических процедур.

Ключевые слова: выборка, генетический алгоритм, космический аппарат наблюдения, многоспутниковая система, операция обслуживания, планирование.

Введение. В настоящее время наблюдается неуклонная тенденция увеличения размера группировки космических аппаратов наблюдения (КАН), равно как и количество заказчиков, заинтересованных в получении данных, формируемых в результате её функционирования. Космические аппараты наблюдения являются одним из важнейших источников информации и предназначены для решения вопросов в экономической, экологической и военных областях, в первую очередь для предупреждения о нарастании напряженности в геополитической сфере, стихийных бедствиях и обеспечения разрешения этих ситуаций. Исходя из этого, в качестве основной целевой задачи космической системы наблюдения (КСН) можно назвать своевременное обеспечение заказчика (потребителя) необходимым объемом информации, которая обладает заданным уровнем достоверности и удовлетворяет требованиям полноты и оперативности. При этом необходимо создать условия для равномерной загрузки всех элементов системы [1]. Таким образом, задача поиска подходов, позволяющих повысить оперативность планирования работ, обеспечивающих эффективное функционирование КСН с учетом динамически изменяющихся условий обстановки, является актуальной.

Постановка задачи. В общем виде процесс функционирования КСН в рамках решения целевой задачи, осуществляемой по запросу заказчика, происходит следующим образом: центр обработки специальной информации вырабатывает решение на применение орбитальной группировки (ОГ), обеспечиваемой средствами наземного комплекса управления, а именно - с использованием автоматизированных средств формируются программы работы целевой аппаратуры для каждого космического аппарата из состава ОГ и, далее, сформированная программа закладывается на борт космического аппарата, и, после осуществления цикла наблюдения, производится передача информации на пункты приема, где она обрабатывается и отправляется заказчику (рис.1).

182

i Надоели баннеры? Вы всегда можете отключить рекламу.