diff --git a/docs/doc_agent_check_student_answer.md b/docs/doc_agent_check_student_answer.md
new file mode 100644
index 0000000..c69393b
--- /dev/null
+++ b/docs/doc_agent_check_student_answer.md
@@ -0,0 +1,46 @@
+
Агент проверки ответа студента
+Агент проверки ответа студента - один из агентов предметной области теории графов, реализованный на графовом языке программирования SCP. Агент является составной частью системы тестирования знаний студента, сверяя данный студентом ответ на задачу с ожидаемым, и, в случае неверного ответа, генерирующий структуру с элементами, которых не хватало в ответе студента.
+
+**Класс действий:** action_check_student_answer
+
+**Условие инициирования:** агент принимает на вход две структуры: первая, связанная отношением **rrel_1** - ответ, данный студентом на задачу. Вторая, связанная отношением **nrel_exprected_answer** - ожидаемый ответ.
+
+ **Результат выполнения:** результатом выполнения агента является ссылка с текстовым содержимым **"Student gave right answer"**, если студент дал правильный ответ на задачу. В противном случае, результатом будет структура с теми элементами, которые есть в ожидаемом ответе, но нет в ответе студента.
+
+ ## Процесс выполнения агента:
+1. Агент берёт 2 входных параметра из узла действия - они представляют собой структуры.
+2. Агент вызывает агента сравнения структур - тот, в свою очередь создаёт связку с двумя структурами: первая - то, что есть в ответе студента и нет в ожидаемом ответе, вторая - то, что есть в
+ожидаемом ответе, но нет в ответе студента.
+3. Агент берёт вторую структуру(в которой содержатся те элементы, которые отсутствуют в ответе студента).
+4. Агент проверяет, пустая ли структура.
+5. Если структура пустая, то агент создаёт ссылку с содержанием **"Student gave right answer"** и привязывает её к узлу действия.
+6. Если структура не пустая, то агент создаёт структуру с теми элементами, которые отсутствуют в ответе студента и привязывает её к узлу действия отношением **nrel_answer**.
+
+ ## Порядок действий при работе с агентом:
+ 1. Создать тестовый пример в формате .gwf или в формате .scs. Далее будет показан алгоритм для тестового примера .gwf:
+
+
+ 2. Поместить тестовый пример в директорию tests, лежащюю по пути **gt-knowledge-processing-machine/solver_gt/graph_agents/agent_check_student_answer/tests**
+
+ 3. Пересобрать базу знаний, запустить sc-машину и открыть sc-web.
+ 4. Найти узел действия, который соответствует разработанному в пункте 1 тестовому примеру:
+
+
+
+ 5. Инициировать действие(создать узел **action_initiated** и провести из него в узел действия дугу принадлежности) и нажать на панели слева 'Синхронизировать с базой':
+
+
+
+ 6. Перейти по узлу действия. Появилась структура, связанная с узлом действия отношением **результат***:
+ 
+
+
+ 7. Если перейти по указанной структуре с помощью выбора опции **Какие элементы принадлежат указываемому множеству?**, то можно увидеть результат выполнения агента:
+
+
+
+
+
+
+
+
diff --git a/docs/doc_agent_gen_random_graph.md b/docs/doc_agent_gen_random_graph.md
new file mode 100644
index 0000000..3702016
--- /dev/null
+++ b/docs/doc_agent_gen_random_graph.md
@@ -0,0 +1,58 @@
+Агент генерации случайного графа
+Агент генерации случайного графа - один из агентов предметной области теории графов, реализованный на графовом языке программирования SCP. Агент является составной частью системы тестирования знаний студента, генерируя случайный шаблон, по которому впоследствии агентом генерации задания для студента будет сгенерировано задание для решения его студентом.
+
+**Класс действий:** action_generate_random_graph
+
+**Условие инициирования:** агент принимает на вход 2 ссылки с числовым содержимым: первая связывается с узлом действия отношением **rrel_1**, содержит произвольное число и представляет собой количество вершин в случайном графе; вторая - связана с узлом действия отношением **rrel_2**, содержит произвольное число в диапазоне от 0 до 100 и представляет собой вероятность связи между вершинами графа.
+
+ **Результат выполнения:** результатом выполнения агента является структура, содержащая количество вершин равное числу, хранящемуся в первой ссылке. Так как результат выполнения агента - это шаблон, то вершины в нём являются константами, а дуги - переменными.
+
+ ## Процесс выполнения агента:
+ 1. Агент берёт 2 входных параметра из узла действия. Параметры представляют собой ссылки с числовым содержимым.
+ 2. Программа генерирует структуру, в которую записывает такое количество вершин, которое равно содержимому первой ссылки.
+ 3. Создаётся множество из сгенерированных вершин.
+ 4. Выбирается вершина из созданного множества и сразу же из него удаляется.
+ 5. Для выбранной вершины создаётся ещё одно множество всех вершин сгенерированной в пункте 2 структуры.
+ 6. Из второго множества выбирается вершина и сразу же из него удаляется.
+ 7. Для текущей пары вершин генерируется случайное число. Если оно меньше, чем содержимое второго параметра, то в результат добавляется переменная дуга между соответствующей парой вершин. В противном случае, дуга не добавляется.
+ 8. Если текущая вершина из второго множества - последняя, то агент берёт следующую вершину из первого множества, в противном случае - берётся следующая вершина второго множества. Если в обоих множествах не осталось вершин, агент завершает свою работу.
+
+ ## Порядок действий при работе с агентом:
+ 1. Создать тестовый пример в формате .gwf или в формате .scs. Далее будет показан алгоритм для тестового примера .gwf:
+ 
+
+ 2. Поместить тестовый пример в директорию tests, лежащюю по пути **gt-knowledge-processing-machine/solver_gt/graph_agents/agents_gen_random_graph/tests**
+
+ 3. Пересобрать базу знаний, запустить sc-машину и открыть sc-web.
+ 4. Найти узел действия, который соответствует разработанному в пункте 1 тестовому примеру:
+ 
+
+ 5. Инициировать действие(создать узел **action_initiated** и провести из него в узел действия дугу принадлежности) и нажать на панели слева 'Синхронизировать с базой':
+ 
+
+ 6. Перейти по узлу действия. Появилась структура, связанная с узлом действия отношением **результат***:
+ 
+
+ 7. Если перейти по указанной структуре с помощью выбора опции **Какие элементы принадлежат указываемому множеству?**, то можно увидеть результат выполнения агента:
+ 
+ 
+
+## Примеры результатов работы агента для других наборов входных данных:
+**Тестовый набор:**
+
+
+
+
+**Результат:**
+
+
+
+
+**Тестовый набор:**
+
+
+
+
+**Результат:**
+
+
diff --git a/menu/ui_menu_na_graph_theory.scs b/menu/ui_menu_na_graph_theory.scs
index 95bfd67..6124d02 100755
--- a/menu/ui_menu_na_graph_theory.scs
+++ b/menu/ui_menu_na_graph_theory.scs
@@ -5,5 +5,6 @@ ui_menu_na_graph_theory => nrel_main_idtf: [Graph theory] (* <- lang_en;; *);;
ui_menu_na_graph_theory <= nrel_ui_commands_decomposition:
{
- ui_menu_task_generation
+ ui_menu_task_generation;
+ ui_menu_gen_random_graph
};;
diff --git a/solver_gt/graph_agents/agent_check_student_answer/agent_check_student_answer.scs b/solver_gt/graph_agents/agent_check_student_answer/agent_check_student_answer.scs
new file mode 100644
index 0000000..6605904
--- /dev/null
+++ b/solver_gt/graph_agents/agent_check_student_answer/agent_check_student_answer.scs
@@ -0,0 +1,217 @@
+agent_check_student_answer
+=> nrel_main_idtf:
+ [агентная scp-программа проверки ответа студента] (* <- lang_ru;; *);
+ [agent scp-program for checking student answer] (* <- lang_en;; *);
+<- scp_program;
+<- agent_scp_program;
+-> rrel_key_sc_element: .._process1;;
+
+agent_check_student_answer = [*
+.._process1
+_<- scp_process;
+
+_-> rrel_1:: rrel_in:: _event;
+_-> rrel_2:: rrel_in:: _input_arc;
+_<= nrel_decomposition_of_action:: .._actions (*
+
+ _-> rrel_1:: .._agent_check_student_answer_operator_start (*
+ _<- searchElStr3;;
+ _-> rrel_1:: rrel_assign:: rrel_scp_var:: _temp;;
+ _-> rrel_2:: rrel_fixed:: rrel_scp_const:: _input_arc;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: _quest;;
+
+ _=> nrel_goto:: .._agent_check_student_answer_operator1;;
+ *);;
+
+ _-> .._agent_check_student_answer_operator1 (*
+ _<- searchElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: action_check_student_answer;;
+ _-> rrel_2:: rrel_assign:: rrel_pos_const_perm:: rrel_scp_var:: _arc;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _quest;;
+
+ _=> nrel_then:: .._agent_check_student_answer_operator_message;;
+ _=> nrel_else:: .._agent_check_student_answer_operator_return;;
+ *);;
+
+ _-> .._agent_check_student_answer_operator_return (*
+ _<- return;;
+
+ *);;
+
+ _-> .._agent_check_student_answer_operator_message (*
+ _<- printNl;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: [Start work agent_check_student_answer];;
+
+ _=> nrel_goto:: .._agent_check_student_answer_get_arg1;;
+ *);;
+
+ _-> .._agent_check_student_answer_get_arg1 (*
+ _<- searchElStr5;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _quest;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc1;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: rrel_struct:: _param1;;
+ _-> rrel_4:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc2;;
+ _-> rrel_5:: rrel_fixed:: rrel_scp_const:: rrel_1;;
+
+ _=> nrel_then:: .._agent_check_student_answer_get_arg2;;
+ _=> nrel_else:: .._agent_check_student_answer_unsuccess;;
+ *);;
+
+ _-> .._agent_check_student_answer_unsuccess (*
+ _<- genElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: action_finished_unsuccessfully;;
+ _-> rrel_2:: rrel_assign:: rrel_pos_const_perm:: rrel_scp_var:: _arc1;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _quest;;
+
+ _=> nrel_goto:: .._agent_check_student_answer_operator_return;;
+ *);;
+
+ _-> .._agent_check_student_answer_get_arg2 (*
+ _<- searchElStr5;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _quest;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_common:: _arc1;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: rrel_struct:: _param2;;
+ _-> rrel_4:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc2;;
+ _-> rrel_5:: rrel_fixed:: rrel_scp_const:: nrel_expected_answer;;
+
+ _=> nrel_then:: .._agent_check_student_answer_operator2;;
+ _=> nrel_else:: .._agent_check_student_answer_unsuccess;;
+ *);;
+
+ _-> .._agent_check_student_answer_operator2 (*
+ _<- genElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: action_compare_structures;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_action;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: _new_action;;
+
+ _=> nrel_goto:: .._agent_check_student_answer_operator3;;
+ *);;
+
+ _-> .._agent_check_student_answer_operator3 (*
+ _<- genElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: action;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_action_new;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _new_action;;
+
+ _=> nrel_goto:: .._agent_check_student_answer_operator4;;
+ *);;
+
+ _-> .._agent_check_student_answer_operator4 (*
+ _<- genElStr5;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _new_action;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_p1;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _param1;;
+ _-> rrel_4:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_arc1;;
+ _-> rrel_5:: rrel_fixed:: rrel_scp_const:: rrel_1;;
+
+ _=> nrel_goto:: .._agent_check_student_answer_operator5;;
+ *);;
+
+ _-> .._agent_check_student_answer_operator5 (*
+ _<- genElStr5;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _new_action;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_p2;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _param2;;
+ _-> rrel_4:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_arc2;;
+ _-> rrel_5:: rrel_fixed:: rrel_scp_const:: rrel_2;;
+
+ _=> nrel_goto:: .._agent_check_student_answer_gen;;
+ *);;
+
+ _-> .._agent_check_student_answer_gen (*
+ _<- genElStr5;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _new_action;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_common:: rrel_const:: _arc_to_time;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_const:: [99999];;
+ _-> rrel_4:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_time_arc;;
+ _-> rrel_5:: rrel_fixed:: rrel_scp_const:: nrel_max_customer_waiting_time_for_action_to_finish;;
+
+ _=> nrel_goto:: .._agent_check_student_answer_operator6;;
+ *);;
+
+ _-> .._agent_check_student_answer_operator6 (*
+ _<- genElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: action_initiated;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_action2;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _new_action;;
+
+ _=> nrel_goto:: .._agent_check_student_answer_operator_wait;;
+ *);;
+
+ _-> .._agent_check_student_answer_operator_wait (*
+ _<- sys_wait;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: sc_event_after_generate_outgoing_arc;;
+ _-> rrel_2:: rrel_fixed:: rrel_scp_var:: _new_action;;
+
+ _=> nrel_goto:: .._agent_check_student_answer_operator_check_state;;
+ *);;
+
+ _-> .._agent_check_student_answer_operator_check_state (*
+ _<- searchElStr5;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _new_action;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_common:: _arc_to_result;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: rrel_struct:: _result_structure;;
+ _-> rrel_4:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_arc3;;
+ _-> rrel_5:: rrel_fixed:: rrel_scp_const:: nrel_result;;
+
+ _=> nrel_then:: .._agent_check_student_answer_call;;
+ _=> nrel_else:: .._agent_check_student_answer_operator_print;;
+ *);;
+
+ _-> .._agent_check_student_answer_operator_print (*
+ _<- printNl;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: [Can not find result node];;
+
+ _=> nrel_goto:: .._agent_check_student_answer_unsuccess;;
+ *);;
+
+ _-> .._agent_check_student_answer_call (*
+ _<- call;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: proc_check_student_answer;;
+ _-> rrel_2:: rrel_fixed:: rrel_scp_const:: .._agent_check_student_answer_params (*
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _result_structure;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_struct:: _result;;
+ *);;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: _descr;;
+
+ _=> nrel_goto:: .._agent_check_student_answer_wait;;
+ *);;
+
+ _-> .._agent_check_student_answer_wait (*
+ _<- waitReturn;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _descr;;
+
+ _=> nrel_goto:: .._agent_check_student_answer_check_result;;
+ *);;
+
+ _-> .._agent_check_student_answer_check_result (*
+ _<- ifVarAssign;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _result;;
+
+ _=> nrel_then:: .._agent_check_student_answer_get_result;;
+ _=> nrel_else:: .._agent_check_student_answer_unsuccess;;
+ *);;
+
+ _-> .._agent_check_student_answer_get_result (*
+ _<- genElStr5;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _quest;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_common:: rrel_const:: _arc_to_result;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _result;;
+ _-> rrel_4:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_arc;;
+ _-> rrel_5:: rrel_fixed:: rrel_scp_const:: nrel_result;;
+
+ _=> nrel_goto:: .._agent_check_student_answer_success;;
+ *);;
+
+ _-> .._agent_check_student_answer_success (*
+ _<- genElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: action_finished_successfully;;
+ _-> rrel_2:: rrel_assign:: rrel_pos_const_perm:: rrel_scp_var:: _arc1;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _quest;;
+
+ _=> nrel_goto:: .._agent_check_student_answer_operator_return;;
+ *);;
+
+*);;
+
+*];;
\ No newline at end of file
diff --git a/solver_gt/graph_agents/agent_check_student_answer/proc/proc_check_student_answer.scs b/solver_gt/graph_agents/agent_check_student_answer/proc/proc_check_student_answer.scs
new file mode 100644
index 0000000..b4531b8
--- /dev/null
+++ b/solver_gt/graph_agents/agent_check_student_answer/proc/proc_check_student_answer.scs
@@ -0,0 +1,126 @@
+proc_check_student_answer
+=> nrel_main_idtf:
+ [Программа проверки ответа студента](* <- lang_ru;; *);
+ [Program for checking student answer](* <- lang_en;; *);
+<- scp_program;
+-> rrel_key_sc_element: .._process1;;
+
+proc_check_student_answer = [*
+.._process1
+_<- scp_process;
+
+_-> rrel_1:: rrel_in:: _structure;
+_-> rrel_2:: rrel_out:: _result;
+_<= nrel_decomposition_of_action:: .._actions (*
+
+ _-> rrel_1:: .._create_result (*
+ _<- genEl;;
+ _-> rrel_1:: rrel_assign:: rrel_scp_var:: rrel_const:: rrel_node:: rrel_struct:: _result;;
+
+ _=> nrel_goto:: .._find_forward_difference;;
+ *);;
+
+ _-> .._find_forward_difference (*
+ _<- searchElStr5;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: concept_forward_difference;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_diff;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: rrel_struct:: _difference;;
+ _-> rrel_4:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_arc4;;
+ _-> rrel_5:: rrel_fixed:: rrel_scp_const:: _structure;;
+
+ _=> nrel_goto:: .._check_forward_difference;;
+ *);;
+
+ _-> .._check_forward_difference (*
+ _<- ifVarAssign;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _difference;;
+
+ _=> nrel_then:: .._find_forward_structure;;
+ _=> nrel_else:: .._if_no_values;;
+ *);;
+
+ _-> .._if_no_values (*
+ _<- genElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _result;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_correct;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_const:: [Student gave right answer!];;
+
+ _=> nrel_goto:: .._return_operator;;
+ *);;
+
+ _-> .._find_forward_structure (*
+ _<- searchElStr5;;
+ _-> rrel_1:: rrel_assign:: rrel_scp_var:: _structure_concept;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_diff_structure;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: rrel_struct:: _graph_structure;;
+ _-> rrel_4:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_arc;;
+ _-> rrel_5:: rrel_fixed:: rrel_scp_var:: _difference;;
+
+ _=> nrel_goto:: .._add_concept;;
+ *);;
+
+ _-> .._add_concept (*
+ _<- genElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _result;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_concept;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_const:: concept_structure_with_elements_not_in_answer;;
+
+ _=> nrel_goto:: .._add_new_structure;;
+ *);;
+
+ _-> .._add_new_structure (*
+ _<- genElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _result;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_new_structure;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: rrel_struct:: _new_result;;
+
+ _=> nrel_goto:: .._add_concept_structure;;
+ *);;
+
+ _-> .._add_concept_structure (*
+ _<- genElStr5;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: concept_structure_with_elements_not_in_answer;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_from_concept;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _new_result;;
+ _-> rrel_4:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_concept;;
+ _-> rrel_5:: rrel_fixed:: rrel_scp_var:: _result;;
+
+ _=> nrel_goto:: .._add_concept_to_new_result;;
+ *);;
+
+ _-> .._add_concept_to_new_result (*
+ _<- genElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _new_result;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _new_arc;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _structure_concept;;
+
+ _=> nrel_goto:: .._add_structure_to_new_result;;
+ *);;
+
+ _-> .._add_structure_to_new_result (*
+ _<- genElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _new_result;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _new_arc2;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _graph_structure;;
+
+ _=> nrel_goto:: .._add_arc_to_new_result;;
+ *);;
+
+ _-> .._add_arc_to_new_result (*
+ _<- genElStr5;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _structure_concept;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _new_arc3;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _graph_structure;;
+ _-> rrel_4:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _new_arc4;;
+ _-> rrel_5:: rrel_fixed:: rrel_scp_var:: _new_result;;
+
+ _=> nrel_goto:: .._return_operator;;
+ *);;
+
+ _-> .._return_operator (*
+ _<- return;;
+ *);;
+
+*);;
+
+*];;
diff --git a/solver_gt/graph_agents/agent_check_student_answer/sc_agent_check_student_answer.scs b/solver_gt/graph_agents/agent_check_student_answer/sc_agent_check_student_answer.scs
new file mode 100644
index 0000000..6ceab36
--- /dev/null
+++ b/solver_gt/graph_agents/agent_check_student_answer/sc_agent_check_student_answer.scs
@@ -0,0 +1,47 @@
+sc_agent_check_student_answer
+=> nrel_main_idtf:
+ [sc-агент проверки ответа студента](* <- lang_ru;; *);
+ [sc-agent for checking student answer](* <- lang_en;; *);
+<- abstract_sc_agent;
+=> nrel_primary_initiation_condition:
+ (sc_event_after_generate_outgoing_arc => action_initiated);
+=> nrel_initiation_condition_and_result:
+ (..sc_agent_check_student_answer_initiation_condition
+ => ..sc_agent_check_student_answer_result_condition);
+=> nrel_sc_agent_action_class:
+ action_check_student_answer
+ (*
+ <- sc_node_class;;
+ <= nrel_inclusion:
+ information_action;;
+ *);
+<= nrel_sc_agent_key_sc_elements:
+{
+ action_initiated;
+ action_check_student_answer
+};
+=> nrel_inclusion:
+ sc_agent_check_student_answer_implementation
+ (*
+ <- platform_independent_abstract_sc_agent;;
+ <= nrel_sc_agent_program:
+ {
+ agent_check_student_answer;
+ proc_check_student_answer
+ };;
+ -> sc_agent_check_student_answer_scp (* <- active_sc_agent;; *);;
+ *);;
+
+..sc_agent_check_student_answer_initiation_condition
+= [*
+ action_check_student_answer _-> .._action;;
+ action_initiated _-> .._action;;
+ action _-> .._action;;
+ .._action _-> rrel_1:: .._parameter1;;
+ .._action _=> nrel_expected_answer:: .._parameter2;;
+*];;
+
+..sc_agent_check_student_answer_result_condition
+= [*
+ .._action _=> nrel_result:: .._result;;
+*];;
\ No newline at end of file
diff --git a/solver_gt/graph_agents/agent_check_student_answer/tests/check_student_answer_test1.gwf b/solver_gt/graph_agents/agent_check_student_answer/tests/check_student_answer_test1.gwf
new file mode 100644
index 0000000..348951c
--- /dev/null
+++ b/solver_gt/graph_agents/agent_check_student_answer/tests/check_student_answer_test1.gwf
@@ -0,0 +1,130 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/solver_gt/graph_agents/agent_compare_structures/agent_compare_structures.scs b/solver_gt/graph_agents/agent_compare_structures/agent_compare_structures.scs
new file mode 100644
index 0000000..7fea89f
--- /dev/null
+++ b/solver_gt/graph_agents/agent_compare_structures/agent_compare_structures.scs
@@ -0,0 +1,131 @@
+agent_compare_structures
+=> nrel_main_idtf:
+ [агентная scp-программа сравнения структур] (* <- lang_ru;; *);
+ [agent scp-program for comparing structures] (* <- lang_en;; *);
+<- scp_program;
+<- agent_scp_program;
+-> rrel_key_sc_element: .._process1;;
+
+agent_compare_structures = [*
+.._process1
+_<- scp_process;
+
+_-> rrel_1:: rrel_in:: _event;
+_-> rrel_2:: rrel_in:: _input_arc;
+_<= nrel_decomposition_of_action:: .._actions (*
+
+ _-> rrel_1:: .._agent_compare_structures_operator_start (*
+ _<- searchElStr3;;
+ _-> rrel_1:: rrel_assign:: rrel_scp_var:: _temp;;
+ _-> rrel_2:: rrel_fixed:: rrel_scp_const:: _input_arc;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: _quest;;
+
+ _=> nrel_goto:: .._agent_compare_structures_operator1;;
+ *);;
+
+ _-> .._agent_compare_structures_operator1 (*
+ _<- searchElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: action_compare_structures;;
+ _-> rrel_2:: rrel_assign:: rrel_pos_const_perm:: rrel_scp_var:: _arc;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _quest;;
+
+ _=> nrel_then:: .._agent_compare_structures_operator_message;;
+ _=> nrel_else:: .._agent_compare_structures_operator_return;;
+ *);;
+
+ _-> .._agent_compare_structures_operator_return (*
+ _<- return;;
+
+ *);;
+
+ _-> .._agent_compare_structures_operator_message (*
+ _<- printNl;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: [Start work agent for comparing structures];;
+
+ _=> nrel_goto:: .._agent_compare_structures_get_arg1;;
+ *);;
+
+ _-> .._agent_compare_structures_get_arg1 (*
+ _<- searchElStr5;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _quest;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _new_arc;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: rrel_struct:: _param1;;
+ _-> rrel_4:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _new_arc_to_arc;;
+ _-> rrel_5:: rrel_fixed:: rrel_scp_const:: rrel_1;;
+
+ _=> nrel_then:: .._agent_compare_structures_get_arg2;;
+ _=> nrel_else:: .._agent_compare_structures_operator_unsuccess;;
+ *);;
+
+ _-> .._agent_compare_structures_operator_unsuccess (*
+ _<- genElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: action_finished_unsuccessfully;;
+ _-> rrel_2:: rrel_assign:: rrel_pos_const_perm:: rrel_scp_var:: _arc1;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _quest;;
+
+ _=> nrel_then:: .._agent_compare_structures_operator_return;;
+ *);;
+
+ _-> .._agent_compare_structures_get_arg2 (*
+ _<- searchElStr5;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _quest;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _new_arc2;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: rrel_struct:: _param2;;
+ _-> rrel_4:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _new_arc_to_arc2;;
+ _-> rrel_5:: rrel_fixed:: rrel_scp_const:: rrel_2;;
+
+ _=> nrel_then:: .._agent_compare_structures_operator_call;;
+ _=> nrel_else:: .._agent_compare_structures_operator_unsuccess;;
+ *);;
+
+ _-> .._agent_compare_structures_operator_call (*
+ _<- call;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: proc_compare_structures;;
+ _-> rrel_2:: rrel_fixed:: rrel_scp_const:: .._agent_compare_structures_params (*
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _param1;;
+ _-> rrel_2:: rrel_fixed:: rrel_scp_var:: _param2;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: rrel_struct:: _result;;
+ *);;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: _descr;;
+
+ _=> nrel_goto:: .._agent_compare_structures_wait_operator;;
+ *);;
+
+ _-> .._agent_compare_structures_wait_operator (*
+ _<- waitReturn;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _descr;;
+
+ _=> nrel_goto:: .._agent_compare_structures_check_result_value;;
+ *);;
+
+ _-> .._agent_compare_structures_check_result_value (*
+ _<- ifVarAssign;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _result;;
+
+ _=> nrel_then:: .._agent_compare_structures_take_result;;
+ _=> nrel_else:: .._agent_compare_structures_operator_unsuccess;;
+ *);;
+
+ _-> .._agent_compare_structures_take_result (*
+ _<- genElStr5;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _quest;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_common:: _arc_to_result;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _result;;
+ _-> rrel_4:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_arc;;
+ _-> rrel_5:: rrel_fixed:: rrel_scp_const:: nrel_result;;
+
+ _=> nrel_goto:: .._agent_compare_structures_operator_success;;
+ *);;
+
+ _-> .._agent_compare_structures_operator_success (*
+ _<- genElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: action_finished_successfully;;
+ _-> rrel_2:: rrel_assign:: rrel_pos_const_perm:: rrel_scp_var:: _arc1;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _quest;;
+
+ _=> nrel_then:: .._agent_compare_structures_operator_return;;
+ *);;
+
+*);;
+
+*];;
\ No newline at end of file
diff --git a/solver_gt/graph_agents/agent_compare_structures/proc/proc_compare_structures.scs b/solver_gt/graph_agents/agent_compare_structures/proc/proc_compare_structures.scs
new file mode 100644
index 0000000..1010354
--- /dev/null
+++ b/solver_gt/graph_agents/agent_compare_structures/proc/proc_compare_structures.scs
@@ -0,0 +1,611 @@
+proc_compare_structures
+=> nrel_main_idtf:
+ [Программа сравнения структур](* <- lang_ru;; *);
+ [Program for comparing structures](* <- lang_en;; *);
+<- scp_program;
+-> rrel_key_sc_element: .._process1;;
+
+proc_compare_structures = [*
+.._process1
+_<- scp_process;
+
+_-> rrel_1:: rrel_in:: _structure1;
+_-> rrel_2:: rrel_in:: _structure2;
+_-> rrel_3:: rrel_out:: _result;
+_<= nrel_decomposition_of_action:: .._actions (*
+
+ _-> rrel_1:: .._create_result (*
+ _<- genEl;;
+ _-> rrel_1:: rrel_assign:: rrel_scp_var:: rrel_const:: rrel_node:: rrel_struct:: _result;;
+
+ _=> nrel_goto:: .._add_concept1;;
+ *);;
+
+ _-> .._add_concept1 (*
+ _<- genElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _result;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _new_arc;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_const:: concept_difference;;
+
+ _=> nrel_goto:: .._add_concept_node;;
+ *);;
+
+ _-> .._add_concept_node (*
+ _<- genElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _result;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _new_arc;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: rrel_const:: _diff;;
+
+ _=> nrel_goto:: .._add_concept_arc;;
+ *);;
+
+ _-> .._add_concept_arc (*
+ _<- genElStr5;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: concept_difference;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _new_arc;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _diff;;
+ _-> rrel_4:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _new_arc_to_arc;;
+ _-> rrel_5:: rrel_fixed:: rrel_scp_var:: _result;;
+
+ _=> nrel_goto:: .._add_concept2;;
+ *);;
+
+ _-> .._add_concept2 (*
+ _<- genElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _result;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _new_arc;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_const:: concept_reverse_difference;;
+
+ _=> nrel_goto:: .._add_concept3;;
+ *);;
+
+ _-> .._add_concept3 (*
+ _<- genElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _result;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _new_arc;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_const:: concept_forward_difference;;
+
+ _=> nrel_goto:: .._add_reverse_structure;;
+ *);;
+
+ _-> .._add_reverse_structure (*
+ _<- genElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _result;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _new_arc;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: rrel_struct:: rrel_const:: rrel_node:: _reverse_struct;;
+
+ _=> nrel_goto:: .._add_arc_to_reverse_structure;;
+ *);;
+
+ _-> .._add_arc_to_reverse_structure (*
+ _<- genElStr5;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: concept_reverse_difference;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _new_arc_to_reverse;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _reverse_struct;;
+ _-> rrel_4:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _new_arc_to_arc;;
+ _-> rrel_5:: rrel_fixed:: rrel_scp_var:: _result;;
+
+ _=> nrel_goto:: .._add_forward_structure;;
+ *);;
+
+ _-> .._add_forward_structure (*
+ _<- genElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _result;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _new_arc;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: rrel_struct:: rrel_const:: rrel_node:: _forward_struct;;
+
+ _=> nrel_goto:: .._add_arc_to_forward_structure;;
+ *);;
+
+ _-> .._add_arc_to_forward_structure (*
+ _<- genElStr5;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: concept_forward_difference;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _new_arc_to_forward;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _forward_struct;;
+ _-> rrel_4:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _new_arc_to_arc;;
+ _-> rrel_5:: rrel_fixed:: rrel_scp_var:: _result;;
+
+ _=> nrel_goto:: .._add_arc_to_reverse;;
+ *);;
+
+ _-> .._add_arc_to_reverse (*
+ _<- genElStr5;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _diff;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_revers;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _reverse_struct;;
+ _-> rrel_4:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_revers_arc;;
+ _-> rrel_5:: rrel_fixed:: rrel_scp_var:: _result;;
+
+ _=> nrel_goto:: .._add_arc_to_forward_struct;;
+ *);;
+
+ _-> .._add_arc_to_forward_struct (*
+ _<- genElStr5;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _diff;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_diff;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _forward_struct;;
+ _-> rrel_4:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_diff_arc;;
+ _-> rrel_5:: rrel_fixed:: rrel_scp_var:: _result;;
+
+ _=> nrel_goto:: .._create_set1;;
+ *);;
+
+ _-> .._create_set1 (*
+ _<- searchSetStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: _structure1;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _new_arc;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: rrel_node:: _el_in_set1;;
+ _-> rrel_set_3:: rrel_assign:: rrel_scp_var:: _set_with_el1;;
+
+ _=> nrel_goto:: .._create_set2;;
+ *);;
+
+ _-> .._create_set2 (*
+ _<- searchSetStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: _structure2;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _new_arc2;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: _el_in_set2;;
+ _-> rrel_set_3:: rrel_assign:: rrel_scp_var:: rrel_node:: _set_with_el2;;
+
+ _=> nrel_goto:: .._take_el_from_set2;;
+ *);;
+
+ _-> .._take_el_from_set2 (*
+ _<- searchElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _set_with_el2;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_in_set2;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: _el_in_set2;;
+
+ _=> nrel_then:: .._delete_el_from_set2;;
+ _=> nrel_else:: .._create_new_set2;;
+ *);;
+
+ _-> .._delete_el_from_set2 (*
+ _<- eraseEl;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _arc_in_set2;;
+
+ _=> nrel_goto:: .._check_el_for_forward;;
+ *);;
+
+ _-> .._check_el_for_forward (*
+ _<- searchElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _set_with_el1;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_set_el1;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _el_in_set2;;
+
+ _=> nrel_then:: .._take_el_from_set2;;
+ _=> nrel_else:: .._add_to_forward;;
+ *);;
+
+ _-> .._add_to_forward (*
+ _<- genElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _forward_struct;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_el;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _el_in_set2;;
+
+ _=> nrel_goto:: .._take_el_from_set2;;
+ *);;
+
+ _-> .._create_new_set2 (*
+ _<- searchSetStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: _structure2;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _new_arc2;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: rrel_node:: _el_in_set2;;
+ _-> rrel_set_3:: rrel_assign:: rrel_scp_var:: _new_set_with_el2;;
+
+ _=> nrel_goto:: .._create_new_set1;;
+ *);;
+
+ _-> .._create_new_set1 (*
+ _<- searchSetStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: _structure1;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _new_arc;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: _el_in_set1;;
+ _-> rrel_set_3:: rrel_assign:: rrel_scp_var:: rrel_node:: _new_set_with_el1;;
+
+ _=> nrel_goto:: .._take_el_from_new_set1;;
+ *);;
+
+ _-> .._take_el_from_new_set1 (*
+ _<- searchElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _new_set_with_el1;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_in_new_set1;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: _new_el_in_set1;;
+
+ _=> nrel_then:: .._delete_el_from_new_set1;;
+ _=> nrel_else:: .._create_arc_set1;;
+ *);;
+
+ _-> .._delete_el_from_new_set1 (*
+ _<- eraseEl;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _arc_in_new_set1;;
+
+ _=> nrel_goto:: .._check_el_for_reverse;;
+ *);;
+
+ _-> .._check_el_for_reverse (*
+ _<- searchElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _new_set_with_el2;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_new_set_el1;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _new_el_in_set1;;
+
+ _=> nrel_then:: .._take_el_from_new_set1;;
+ _=> nrel_else:: .._add_to_reverse;;
+ *);;
+
+ _-> .._add_to_reverse (*
+ _<- genElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _reverse_struct;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_new_el;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _new_el_in_set1;;
+
+ _=> nrel_goto:: .._take_el_from_new_set1;;
+ *);;
+
+ _-> .._create_arc_set1 (*
+ _<- searchSetStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: _structure1;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _new_arc;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: rrel_arc:: _arc_in_set1;;
+ _-> rrel_set_3:: rrel_assign:: rrel_scp_var:: _set_with_arc1;;
+
+ _=> nrel_goto:: .._create_arc_set2;;
+ *);;
+
+ _-> .._create_arc_set2 (*
+ _<- searchSetStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: _structure2;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _new_arc2;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: _arc_in_set2;;
+ _-> rrel_set_3:: rrel_assign:: rrel_scp_var:: rrel_node:: _set_with_arc2;;
+
+ _=> nrel_goto:: .._take_arc_from_set2;;
+ *);;
+
+ _-> .._take_arc_from_set2 (*
+ _<- searchElStr5;;
+ _-> rrel_1:: rrel_assign:: rrel_scp_var:: _el1_arc_in_arc_set2;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_in_arc_set2;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: _el2_arc_in_arc_set2;;
+ _-> rrel_4:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _con_arc_to_arc_set2;;
+ _-> rrel_5:: rrel_fixed:: rrel_scp_var:: _set_with_arc2;;
+
+ _=> nrel_then:: .._delete_arc_from_arc_set2;;
+ _=> nrel_else:: .._return_operator;;
+ *);;
+
+ _-> .._delete_arc_from_arc_set2 (*
+ _<- eraseEl;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _con_arc_to_arc_set2;;
+
+ _=> nrel_goto:: .._check_el1_in_arc_set2;;
+ *);;
+
+ _-> .._check_el1_in_arc_set2 (*
+ _<- ifType;;
+ _-> rrel_1:: rrel_arc::rrel_fixed::rrel_scp_var:: _el1_arc_in_arc_set2;;
+
+ _=> nrel_then:: .._check_el1_arc_as_arc_set2;;
+ _=> nrel_else:: .._check_el1_arc_as_node_set2;;
+ *);;
+
+ _-> .._check_el1_arc_as_arc_set2 (*
+ _<- searchElStr5;;
+ _-> rrel_1::rrel_assign:: rrel_scp_var:: _buf_el1;;
+ _-> rrel_2::rrel_fixed:: _el1_arc_in_arc_set2;;
+ _-> rrel_3::rrel_assign:: rrel_scp_var:: _buf_el2;;
+ _-> rrel_4::rrel_assign:: rrel_scp_var:: _buf_arc;;
+ _-> rrel_5::rrel_fixed:: _structure2;;
+
+ _=> nrel_goto:: .._check_el1_for_forward;;
+ *);;
+
+ _-> .._check_el1_for_forward_1 (*
+ _<- searchElStr5;;
+ _-> rrel_1::rrel_fixed:: rrel_scp_var:: _buf_el1;;
+ _-> rrel_2::rrel_assign:: _el1_arc_in_arc_set1;;
+ _-> rrel_3::rrel_fixed:: rrel_scp_var:: _buf_el2;;
+ _-> rrel_4::rrel_assign:: rrel_scp_var:: _buf_arc;;
+ _-> rrel_5::rrel_fixed:: _structure1;;
+
+ _=> nrel_then:: .._check_el1_for_forward_1_1;;
+ _=> nrel_else:: .._add_arc_to_forward;;
+ *);;
+
+ _-> .._check_el1_for_forward_1_1 (*
+ _<- ifTypeCoin;;
+ _-> rrel_1::rrel_fixed:: _el1_arc_in_arc_set2;;
+ _-> rrel_2::rrel_fixed:: _el1_arc_in_arc_set1;;
+
+ _=> nrel_then:: .._check_el2_in_arc_set2;;
+ _=> nrel_else:: .._add_arc_to_forward;;
+ *);;
+
+ _-> .._check_el1_arc_as_node_set2(*
+ _<- searchElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _el1_arc_in_arc_set2;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_set_el1;;
+ _-> rrel_3:: rrel_fixed:: _structure1;;
+
+ _=> nrel_then:: .._buf_operation_set2_el1;;
+ _=> nrel_else:: .._add_to_forward;;
+ *);;
+
+ _-> .._buf_operation_set2_el1(*
+ _<- searchElStr3;;
+ _-> rrel_1:: rrel_assign:: rrel_scp_var:: rrel_node:: _el1_arc_in_arc_set1;;
+ _-> rrel_2:: rrel_fixed:: rrel_scp_var:: _arc_to_set_el1;;
+ _-> rrel_3:: rrel_fixed:: _structure1;;
+
+ _=> nrel_goto:: .._check_el2_in_arc_set2;;
+ *);;
+
+ _-> .._check_el2_in_arc_set2 (*
+ _<- ifType;;
+ _-> rrel_1:: rrel_arc::rrel_fixed::rrel_scp_var:: _el2_arc_in_arc_set2;;
+
+ _=> nrel_then:: .._check_el2_for_forward_1_1;;
+ _=> nrel_else:: .._check_el2_arc_as_node_set2;;
+ *);;
+
+ _-> .._check_el2_for_forward_1_1 (*
+ _<- ifTypeCoin;;
+ _-> rrel_1::rrel_fixed:: _el2_arc_in_arc_set2;;
+ _-> rrel_2::rrel_fixed:: _el2_arc_in_arc_set1;;
+
+ _=> nrel_then:: .._check_arc_for_forward;;
+ _=> nrel_else:: .._add_arc_to_forward;;
+ *);;
+
+
+ _-> .._check_el2_arc_as_arc_set2 (*
+ _<- searchElStr5;;
+ _-> rrel_1::rrel_assign:: rrel_scp_var:: _buf_el1;;
+ _-> rrel_2::rrel_fixed:: _el2_arc_in_arc_set2;;
+ _-> rrel_3::rrel_assign:: rrel_scp_var:: _buf_el2;;
+ _-> rrel_4::rrel_assign:: rrel_scp_var:: _buf_arc;;
+ _-> rrel_5::rrel_fixed:: _structure2;;
+
+ _=> nrel_goto:: .._check_el2_for_forward_1;;
+ *);;
+
+ _-> .._check_el2_for_forward_1 (*
+ _<- searchElStr5;;
+ _-> rrel_1::rrel_fixed:: rrel_scp_var:: _buf_el1;;
+ _-> rrel_2::rrel_assign:: _el2_arc_in_arc_set1;;
+ _-> rrel_3::rrel_fixed:: rrel_scp_var:: _buf_el2;;
+ _-> rrel_4::rrel_assign:: rrel_scp_var:: _buf_arc;;
+ _-> rrel_5::rrel_fixed:: _structure1;;
+
+ _=> nrel_then:: .._check_el2_for_forward_1_1;;
+ _=> nrel_else:: .._add_arc_to_forward;;
+ *);;
+
+ _-> .._check_el2_arc_as_node_set2(*
+ _<- searchElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _el2_arc_in_arc_set2;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_set_el2;;
+ _-> rrel_3:: rrel_fixed:: _structure1;;
+
+ _=> nrel_then:: .._check_arc_for_forward;;
+ _=> nrel_else:: .._add_to_forward;;
+ *);;
+
+ _-> .._buf_operation_set2_el2(*
+ _<- searchElStr3;;
+ _-> rrel_1:: rrel_assign:: rrel_scp_var:: rrel_node:: _el2_arc_in_arc_set1;;
+ _-> rrel_2:: rrel_fixed:: rrel_scp_var:: _arc_to_set_el2;;
+ _-> rrel_3:: rrel_fixed::_structure1;;
+
+ _=> nrel_goto:: .._check_el1_in_arc_set2;;
+ *);;
+
+ _-> .._check_arc_for_forward (*
+ _<- searchElStr5;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _el1_arc_in_arc_set1;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _buf;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _el2_arc_in_arc_set1;;
+ _-> rrel_4:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _buf1;;
+ _-> rrel_5:: rrel_fixed::_structure1;;
+
+ _=> nrel_then:: .._check_arc_for_forward1;;
+ _=> nrel_else:: .._add_arc_to_forward;;
+ *);;
+
+
+ _-> .._check_arc_for_forward1(*
+ _<- ifTypeCoin;;
+ _-> rrel_1::rrel_fixed:: _arc_in_arc_set2;;
+ _-> rrel_2::rrel_fixed:: _buf;;
+
+ _=> nrel_then:: .._take_arc_from_set2;;
+ _=> nrel_else:: .._add_arc_to_forward;;
+ *);;
+
+
+ _-> .._add_arc_to_forward (*
+ _<- genElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _forward_struct;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_el;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _arc_in_arc_set2;;
+
+ _=> nrel_goto:: .._take_arc_from_set2;;
+ *);;
+
+ _-> .._take_arc_from_set1 (*
+ _<- searchElStr5;;
+ _-> rrel_1:: rrel_assign:: rrel_scp_var:: _el1_arc_in_arc_set1;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_in_arc_set1;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: _el2_arc_in_arc_set1;;
+ _-> rrel_4:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _con_arc_to_arc_set1;;
+ _-> rrel_5:: rrel_fixed:: rrel_scp_var:: _set_with_arc1;;
+
+ _=> nrel_then:: .._delete_arc_from_arc_set1;;
+ _=> nrel_else:: .._return_operator;;
+ *);;
+
+ _-> .._delete_arc_from_arc_set1 (*
+ _<- eraseEl;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _con_arc_to_arc_set1;;
+
+ _=> nrel_goto:: .._check_el1_in_arc_set1;;
+ *);;
+
+ _-> .._check_el1_in_arc_set1 (*
+ _<- ifType;;
+ _-> rrel_1:: rrel_arc::rrel_fixed::rrel_scp_var:: _el1_arc_in_arc_set1;;
+
+ _=> nrel_then:: .._check_el1_arc_as_arc_set1;;
+ _=> nrel_else:: .._check_el1_arc_as_node_set1;;
+ *);;
+
+ _-> .._check_el1_arc_as_arc_set1 (*
+ _<- searchElStr5;;
+ _-> rrel_1::rrel_assign:: rrel_scp_var:: _buf_el1;;
+ _-> rrel_2::rrel_fixed:: _el1_arc_in_arc_set1;;
+ _-> rrel_3::rrel_assign:: rrel_scp_var:: _buf_el2;;
+ _-> rrel_4::rrel_assign:: rrel_scp_var:: _buf_arc;;
+ _-> rrel_5::rrel_fixed:: _structure1;;
+
+ _=> nrel_goto:: .._check_el1_for_reverce_2;;
+ *);;
+
+ _-> .._check_el1_for_reverce_2 (*
+ _<- searchElStr5;;
+ _-> rrel_1::rrel_fixed:: rrel_scp_var:: _buf_el1;;
+ _-> rrel_2::rrel_assign:: _el1_arc_in_arc_set2;;
+ _-> rrel_3::rrel_fixed:: rrel_scp_var:: _buf_el2;;
+ _-> rrel_4::rrel_assign:: rrel_scp_var:: _buf_arc;;
+ _-> rrel_5::rrel_fixed:: _structure2;;
+
+ _=> nrel_then:: .._check_el1_for_reverce_2_1;;
+ _=> nrel_else:: .._add_arc_to_reverce;;
+ *);;
+
+ _-> .._check_el1_for_forward_2_1 (*
+ _<- ifTypeCoin;;
+ _-> rrel_1::rrel_fixed:: _el1_arc_in_arc_set2;;
+ _-> rrel_2::rrel_fixed:: _el1_arc_in_arc_set1;;
+
+ _=> nrel_then:: .._check_el2_in_arc_set1;;
+ _=> nrel_else:: .._add_arc_to_reverce;;
+ *);;
+
+ _-> .._check_el1_arc_as_node_set1(*
+ _<- searchElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _el1_arc_in_arc_set1;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_set_el1;;
+ _-> rrel_3:: rrel_fixed:: _structure2;;
+
+ _=> nrel_then:: .._buf_operation_set1_el1;;
+ _=> nrel_else:: .._add_to_reverce;;
+ *);;
+
+ _-> .._buf_operation_set1_el1(*
+ _<- searchElStr3;;
+ _-> rrel_1:: rrel_assign:: rrel_scp_var:: rrel_node:: _el1_arc_in_arc_set2;;
+ _-> rrel_2:: rrel_fixed:: rrel_scp_var:: _arc_to_set_el1;;
+ _-> rrel_3:: rrel_fixed:: _structure2;;
+
+ _=> nrel_goto:: .._check_el2_in_arc_set1;;
+ *);;
+
+ _-> .._check_el2_in_arc_set1 (*
+ _<- ifType;;
+ _-> rrel_1:: rrel_arc::rrel_fixed::rrel_scp_var:: _el2_arc_in_arc_set1;;
+
+ _=> nrel_then:: .._check_el2_arc_as_arc_set1;;
+ _=> nrel_else:: .._check_el2_arc_as_node_set2;;
+ *);;
+
+ _-> .._check_el2_for_forward_1_2 (*
+ _<- ifTypeCoin;;
+ _-> rrel_1::rrel_fixed:: _el2_arc_in_arc_set2;;
+ _-> rrel_2::rrel_fixed:: _el2_arc_in_arc_set1;;
+
+ _=> nrel_then:: .._check_el2_in_arc_set2;;
+ _=> nrel_else:: .._add_arc_to_reverce;;
+ *);;
+
+
+ _-> .._check_el2_arc_as_arc_set1 (*
+ _<- searchElStr5;;
+ _-> rrel_1::rrel_assign:: rrel_scp_var:: _buf_el1;;
+ _-> rrel_2::rrel_fixed:: _el2_arc_in_arc_set1;;
+ _-> rrel_3::rrel_assign:: rrel_scp_var:: _buf_el2;;
+ _-> rrel_4::rrel_assign:: rrel_scp_var:: _buf_arc;;
+ _-> rrel_5::rrel_fixed:: _structure1;;
+
+ _=> nrel_goto:: .._check_el2_for_forward_1;;
+ *);;
+
+ _-> .._check_el2_for_forward_1 (*
+ _<- searchElStr5;;
+ _-> rrel_1::rrel_fixed:: rrel_scp_var:: _buf_el1;;
+ _-> rrel_2::rrel_assign:: _el2_arc_in_arc_set2;;
+ _-> rrel_3::rrel_fixed:: rrel_scp_var:: _buf_el2;;
+ _-> rrel_4::rrel_assign:: rrel_scp_var:: _buf_arc;;
+ _-> rrel_5::rrel_fixed:: _structure2;;
+
+ _=> nrel_then:: .._check_el2_for_forward_1_2 ;;
+ _=> nrel_else:: .._add_arc_to_reverce;;
+ *);;
+
+ _-> .._check_el2_arc_as_node_set1(*
+ _<- searchElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _el2_arc_in_arc_set1;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_set_el2;;
+ _-> rrel_3:: rrel_fixed:: _structure2;;
+
+ _=> nrel_then:: .._buf_operation_set1_el2;;
+ _=> nrel_else:: .._add_to_reverce;;
+ *);;
+
+ _-> .._buf_operation_set1_el2(*
+ _<- searchElStr3;;
+ _-> rrel_1:: rrel_assign:: rrel_scp_var:: rrel_node:: _el2_arc_in_arc_set2;;
+ _-> rrel_2:: rrel_fixed:: rrel_scp_var:: _arc_to_set_el2;;
+ _-> rrel_3:: rrel_fixed::_structure2;;
+
+ _=> nrel_goto:: .._check_arc_for_reverce;;
+ *);;
+
+ _-> .._check_arc_for_reverce (*
+ _<- searchElStr5;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _el1_arc_in_arc_set1;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _buf;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _el2_arc_in_arc_set1;;
+ _-> rrel_4:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _buf1;;
+ _-> rrel_5:: rrel_fixed::_structure2;;
+
+ _=> nrel_then:: .._check_arc_for_reverce1;;
+ _=> nrel_else:: .._add_arc_to_forward;;
+ *);;
+
+
+ _-> .._check_arc_for_reverce1(*
+ _<- ifTypeCoin;;
+ _-> rrel_1::rrel_fixed:: _arc_in_arc_set1;;
+ _-> rrel_2::rrel_fixed:: _buf;;
+
+ _=> nrel_then:: .._take_arc_from_set1;;
+ _=> nrel_else:: .._add_arc_to_reverce;;
+ *);;
+
+
+ _-> .._add_arc_to_reverce (*
+ _<- genElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _reverse_struct;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_el;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _arc_in_arc_set1;;
+
+ _=> nrel_goto:: .._take_arc_from_set2;;
+ *);;
+
+ _-> .._return_operator (*
+ _<- return;;
+ *);;
+
+*);;
+
+*];;
diff --git a/solver_gt/graph_agents/agent_compare_structures/sc_agent_compare_structures.scs b/solver_gt/graph_agents/agent_compare_structures/sc_agent_compare_structures.scs
new file mode 100644
index 0000000..fe4f9ed
--- /dev/null
+++ b/solver_gt/graph_agents/agent_compare_structures/sc_agent_compare_structures.scs
@@ -0,0 +1,47 @@
+sc_agent_compare_structures
+=> nrel_main_idtf:
+ [sc-агент сравнения структур](* <- lang_ru;; *);
+ [sc-agent for comparing structures](* <- lang_en;; *);
+<- abstract_sc_agent;
+=> nrel_primary_initiation_condition:
+ (sc_event_after_generate_outgoing_arc => action_initiated);
+=> nrel_initiation_condition_and_result:
+ (..sc_agent_compare_structures_initiation_condition
+ => ..sc_agent_compare_structures_result_condition);
+=> nrel_sc_agent_action_class:
+ action_compare_structures
+ (*
+ <- sc_node_class;;
+ <= nrel_inclusion:
+ information_action;;
+ *);
+<= nrel_sc_agent_key_sc_elements:
+{
+ action_initiated;
+ action_compare_structures
+};
+=> nrel_inclusion:
+ sc_agent_compare_structures_answer_implementation
+ (*
+ <- platform_independent_abstract_sc_agent;;
+ <= nrel_sc_agent_program:
+ {
+ agent_compare_structures;
+ proc_compare_structures
+ };;
+ -> sc_agent_compare_structures_scp (* <- active_sc_agent;; *);;
+ *);;
+
+..sc_agent_compare_structures_initiation_condition
+= [*
+ action_compare_structures _-> .._action;;
+ action_initiated _-> .._action;;
+ action _-> .._action;;
+ .._action _-> rrel_1:: .._parameter1;;
+ .._action _-> rrel_2:: .._parameter2;;
+*];;
+
+..sc_agent_compare_structures_result_condition
+= [*
+ .._action _=> nrel_result:: .._result;;
+*];;
diff --git a/solver_gt/graph_agents/agent_compare_structures/tests/compare_structures_test1.gwf b/solver_gt/graph_agents/agent_compare_structures/tests/compare_structures_test1.gwf
new file mode 100644
index 0000000..2ec3cfe
--- /dev/null
+++ b/solver_gt/graph_agents/agent_compare_structures/tests/compare_structures_test1.gwf
@@ -0,0 +1,173 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/solver_gt/graph_agents/agent_compare_structures/tests/readme.md b/solver_gt/graph_agents/agent_compare_structures/tests/readme.md
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/solver_gt/graph_agents/agent_compare_structures/tests/readme.md
@@ -0,0 +1 @@
+
diff --git a/solver_gt/graph_agents/agent_determine_number_of_graphs_for_task/agent_determine_number_of_graphs_for_task.scs b/solver_gt/graph_agents/agent_determine_number_of_graphs_for_task/agent_determine_number_of_graphs_for_task.scs
new file mode 100644
index 0000000..ef32dee
--- /dev/null
+++ b/solver_gt/graph_agents/agent_determine_number_of_graphs_for_task/agent_determine_number_of_graphs_for_task.scs
@@ -0,0 +1,110 @@
+agent_determine_number_of_graphs_for_task
+=> nrel_main_idtf:
+ [Агентная программа определения количества графов для задания] (* <- lang_ru;; *);
+ [Agent program for determining the number of graphs for a task] (* <- lang_en;; *);
+<- scp_program;
+<- agent_scp_program;
+-> rrel_key_sc_element: .._process1;;
+
+agent_determine_number_of_graphs_for_task = [*
+.._process1
+_<- scp_process;
+
+_-> rrel_1:: rrel_in:: _event;
+_-> rrel_2:: rrel_in:: _input_arc;
+_<= nrel_decomposition_of_action:: .._actions (*
+
+ _-> rrel_1:: .._agent_determine_number_of_graphs_for_task_operator_start (*
+ _<- searchElStr3;;
+ _-> rrel_1:: rrel_assign:: rrel_scp_var:: _temp;;
+ _-> rrel_2:: rrel_fixed:: rrel_scp_const:: _input_arc;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: _quest;;
+
+ _=> nrel_goto:: .._agent_determine_number_of_graphs_for_task_operator1;;
+ *);;
+
+ _-> .._agent_determine_number_of_graphs_for_task_operator1 (*
+ _<- searchElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: action_determine_number_of_graphs_for_task;;
+ _-> rrel_2:: rrel_assign:: rrel_pos_const_perm:: rrel_scp_var:: _arc;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _quest;;
+
+ _=> nrel_then:: .._agent_determine_number_of_graphs_for_task_operator_message;;
+ _=> nrel_else:: .._agent_determine_number_of_graphs_for_task_operator_return;;
+ *);;
+
+ _-> .._agent_determine_number_of_graphs_for_task_operator_return (*
+ _<- return;;
+ *);;
+
+ _-> .._agent_determine_number_of_graphs_for_task_operator_message (*
+ _<- printNl;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: [Start work agent_determine_number_of_graphs_for_task];;
+
+ _=> nrel_goto:: .._agent_determine_number_of_graphs_for_task_get_args;;
+ *);;
+
+ _-> .._agent_determine_number_of_graphs_for_task_get_args (*
+ _<- searchElStr5;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _quest;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc1;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: _param;;
+ _-> rrel_4:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc2;;
+ _-> rrel_5:: rrel_fixed:: rrel_scp_const:: rrel_1;;
+
+ _=> nrel_then:: .._agent_determine_number_of_graphs_for_task_call_operator;;
+ _=> nrel_else:: .._agent_determine_number_of_graphs_for_task_unsuccess;;
+ *);;
+
+ _-> .._agent_determine_number_of_graphs_for_task_unsuccess (*
+ _<- genElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: action_finished_unsuccessfully;;
+ _-> rrel_2:: rrel_assign::rrel_pos_const_perm:: rrel_scp_var:: _arc1;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _quest;;
+
+ _=> nrel_goto:: .._agent_determine_number_of_graphs_for_task_operator_return;;
+ *);;
+
+ _-> .._agent_determine_number_of_graphs_for_task_call_operator (*
+ _<- call;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: proc_determine_number_of_graphs_for_task;;
+ _-> rrel_2:: rrel_fixed:: rrel_scp_const:: .._agent_determine_number_of_graphs_for_task_params (*
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _param;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: _result_link;;
+ *);;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: _descr;;
+
+ _=> nrel_goto:: .._agent_determine_number_of_graphs_for_task_wait_operator;;
+ *);;
+
+ _-> .._agent_determine_number_of_graphs_for_task_wait_operator (*
+ _<- waitReturn;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _descr;;
+
+ _=> nrel_goto:: .._agent_determine_number_of_graphs_for_task_take_result;;
+ *);;
+
+ _-> .._agent_determine_number_of_graphs_for_task_take_result (*
+ _<- genElStr5;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _quest;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_common:: rrel_const:: _arc_to_result;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _result_link;;
+ _-> rrel_4:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_arc;;
+ _-> rrel_5:: rrel_fixed:: rrel_scp_const:: nrel_result;;
+
+ _=> nrel_goto:: .._agent_determine_number_of_graphs_for_task_success;;
+ *);;
+
+
+ _-> .._agent_determine_number_of_graphs_for_task_success (*
+ _<- genElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: action_finished_successfully;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc1;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _quest;;
+
+ _=> nrel_goto:: .._agent_determine_number_of_graphs_for_task_operator_return;;
+ *);;
+
+*);;
+
+*];;
diff --git a/solver_gt/graph_agents/agent_determine_number_of_graphs_for_task/proc/proc_determine_number_of_graphs_for_task.scs b/solver_gt/graph_agents/agent_determine_number_of_graphs_for_task/proc/proc_determine_number_of_graphs_for_task.scs
new file mode 100644
index 0000000..d2a7f5a
--- /dev/null
+++ b/solver_gt/graph_agents/agent_determine_number_of_graphs_for_task/proc/proc_determine_number_of_graphs_for_task.scs
@@ -0,0 +1,109 @@
+proc_determine_number_of_graphs_for_task
+=> nrel_main_idtf:
+ [Программа для определения количества графов для задания] (* <- lang_ru;; *);
+ [Program for determining the number of graphs for a task] (* <- lang_en;; *);
+<- scp_program;
+-> rrel_key_sc_element: .._process1;;
+
+
+proc_determine_number_of_graphs_for_task = [*
+.._process1
+_<- scp_process;
+
+_-> rrel_1:: rrel_in:: _task_element;
+_-> rrel_2:: rrel_out:: _result;
+_<= nrel_decomposition_of_action:: .._actions (*
+
+ _-> rrel_1:: .._operator_is_parameter_class (*
+ _<- searchElStr5;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: concept_graph;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_common:: _arc_to_concept_graph;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_const:: _task_element;;
+ _-> rrel_4:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_arc_to_concept_graph;;
+ _-> rrel_5:: rrel_fixed:: rrel_scp_const:: nrel_inclusion;;
+
+ _=> nrel_then:: .._operator_create_result_for_class;;
+ _=> nrel_else:: .._operator_find_arity_of_relation;;
+ *);;
+
+
+ _-> .._operator_find_arity_of_relation (*
+ _<- searchElStr5;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: _task_element;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_common:: _arc_to_arity;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: _arity;;
+ _-> rrel_4:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_arc_to_arity;;
+ _-> rrel_5:: rrel_fixed:: rrel_scp_const:: nrel_arity_of_relations;;
+
+ _=> nrel_then:: .._operator_get_arity_of_relation_link;;
+ _=> nrel_else:: .._operator_create_result_with_message_arity_not_found;;
+ *);;
+
+
+ _-> .._operator_create_result_with_message_arity_not_found (*
+ _<- varAssign;;
+ _-> rrel_1:: rrel_assign:: rrel_scp_var:: _result;;
+ _-> rrel_2:: rrel_fixed:: rrel_scp_const:: [arity not found];;
+
+ _=> nrel_goto:: .._operator_return;;
+ *);;
+
+
+ _-> .._operator_get_arity_of_relation_link (*
+ _<- searchElStr5;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _arity;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_common:: _arc_to_arity_link;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: _arity_link;;
+ _-> rrel_4:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_arc_to_arity_link;;
+ _-> rrel_5:: rrel_fixed:: rrel_scp_const:: nrel_system_identifier;;
+
+ _=> nrel_then:: .._operator_calculate_result_for_relation;;
+ _=> nrel_else:: .._operator_create_result_with_message_arity_link_not_found;;
+ *);;
+
+
+ _-> .._operator_create_result_with_message_arity_link_not_found (*
+ _<- varAssign;;
+ _-> rrel_1:: rrel_assign:: rrel_scp_var:: _result;;
+ _-> rrel_2:: rrel_fixed:: rrel_scp_const:: [arity link not found];;
+
+ _=> nrel_goto:: .._operator_return;;
+ *);;
+
+
+ _-> .._operator_calculate_result_for_relation (*
+ _<- contSub;;
+ _-> rrel_1:: rrel_assign:: rrel_scp_var:: _result_for_relation;;
+ _-> rrel_2:: rrel_fixed:: rrel_scp_var:: _arity_link;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_const:: [1];;
+
+ _=> nrel_goto:: .._operator_create_result_for_relation;;
+ *);;
+
+
+ _-> .._operator_create_result_for_class (*
+ _<- varAssign;;
+ _-> rrel_1:: rrel_assign:: rrel_scp_var:: _result;;
+ _-> rrel_2:: rrel_fixed:: rrel_scp_const:: [1];;
+
+ _=> nrel_goto:: .._operator_return;;
+ *);;
+
+
+ _-> .._operator_create_result_for_relation (*
+ _<- varAssign;;
+ _-> rrel_1:: rrel_assign:: rrel_scp_var:: _result;;
+ _-> rrel_2:: rrel_fixed:: rrel_scp_const:: _result_for_relation;;
+
+ _=> nrel_goto:: .._operator_return;;
+ *);;
+
+
+ _-> .._operator_return (*
+ _<- return;;
+ *);;
+
+
+*);;
+
+*];;
diff --git a/solver_gt/graph_agents/agent_determine_number_of_graphs_for_task/sc_agent_determine_number_of_graphs_for_task.scs b/solver_gt/graph_agents/agent_determine_number_of_graphs_for_task/sc_agent_determine_number_of_graphs_for_task.scs
new file mode 100644
index 0000000..4571024
--- /dev/null
+++ b/solver_gt/graph_agents/agent_determine_number_of_graphs_for_task/sc_agent_determine_number_of_graphs_for_task.scs
@@ -0,0 +1,46 @@
+sc_agent_determine_number_of_graphs_for_task
+=> nrel_main_idtf:
+ [sc-агент определения количества графов для задания](* <- lang_ru;; *);
+ [sc-agent of determining number of graphs for task](* <- lang_en;; *);
+<- abstract_sc_agent;
+=> nrel_primary_initiation_condition:
+ (sc_event_after_generate_outgoing_arc => action_initiated);
+=> nrel_initiation_condition_and_result:
+ (..sc_agent_determine_number_of_graphs_for_task_initiation_condition
+ => ..sc_agent_determine_number_of_graphs_for_task_result_condition);
+=> nrel_sc_agent_action_class:
+ action_determine_number_of_graphs_for_task
+ (*
+ <- sc_node_class;;
+ <= nrel_inclusion:
+ information_action;;
+ *);
+<= nrel_sc_agent_key_sc_elements:
+{
+ action_initiated;
+ action_determine_number_of_graphs_for_task
+};
+=> nrel_inclusion:
+ sc_agent_determine_number_of_graphs_for_task_implementation
+ (*
+ <- platform_independent_abstract_sc_agent;;
+ <= nrel_sc_agent_program:
+ {
+ agent_determine_number_of_graphs_for_task;
+ proc_determine_number_of_graphs_for_task
+ };;
+ -> sc_agent_determine_number_of_graphs_for_task_scp (* <- active_sc_agent;; *);;
+ *);;
+
+..sc_agent_determine_number_of_graphs_for_task_initiation_condition
+= [*
+ action_determine_number_of_graphs_for_task _-> .._action;;
+ action_initiated _-> .._action;;
+ action _-> .._action;;
+ .._action _-> rrel_1:: .._parameter;;
+*];;
+
+..sc_agent_determine_number_of_graphs_for_task_result_condition
+= [*
+ .._action _=> nrel_result:: .._result;;
+*];;
diff --git a/solver_gt/graph_agents/agent_generate_task_for_student/agent_generate_task_for_student.scs b/solver_gt/graph_agents/agent_generate_task_for_student/agent_generate_task_for_student.scs
new file mode 100644
index 0000000..9391aca
--- /dev/null
+++ b/solver_gt/graph_agents/agent_generate_task_for_student/agent_generate_task_for_student.scs
@@ -0,0 +1,383 @@
+agent_generate_task_for_student
+=> nrel_main_idtf:
+ [Агентная программа для генерации задания для студента] (* <- lang_ru;; *);
+ [Agent program for student task generation] (* <- lang_en;; *);
+<- scp_program;
+<- agent_scp_program;
+-> rrel_key_sc_element: .._process1;;
+
+agent_generate_task_for_student = [*
+.._process1
+_<- scp_process;
+
+_-> rrel_1:: rrel_in:: _event;
+_-> rrel_2:: rrel_in:: _input_arc;
+_<= nrel_decomposition_of_action:: .._actions (*
+
+ _-> rrel_1:: .._start_agent (*
+ _<- searchElStr3;;
+ _-> rrel_1:: rrel_assign:: rrel_scp_var:: _temp;;
+ _-> rrel_2:: rrel_fixed:: rrel_scp_const:: _input_arc;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: _quest;;
+
+ _=> nrel_goto:: .._operator1;;
+ *);;
+
+ _-> .._operator1 (*
+ _<- searchElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: action_generate_task_for_student;;
+ _-> rrel_2:: rrel_assign:: rrel_pos_const_perm:: rrel_scp_var:: _arc;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _quest;;
+
+ _=> nrel_then:: .._message_start_agent;;
+ _=> nrel_else:: .._return;;
+ *);;
+
+ _-> .._return (*
+ _<- return;;
+ *);;
+
+ _-> .._message_start_agent (*
+ _<- printNl;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: [Start work agent_generate_task_for_student];;
+
+ _=> nrel_goto:: .._get_arg;;
+ *);;
+
+ _-> .._get_arg (*
+ _<- searchElStr5;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _quest;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc1;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: _param;;
+ _-> rrel_4:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc2;;
+ _-> rrel_5:: rrel_fixed:: rrel_scp_const:: rrel_1;;
+
+ _=> nrel_then:: .._gen_result_structure;;
+ _=> nrel_else:: .._unsuccess;;
+ *);;
+
+ _-> .._unsuccess (*
+ _<- genElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: action_finished_unsuccessfully;;
+ _-> rrel_2:: rrel_assign:: rrel_pos_const_perm:: rrel_scp_var:: _arc1;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _quest;;
+
+ _=> nrel_goto:: .._return;;
+ *);;
+
+ _-> .._gen_result_structure (*
+ _<- genElStr5;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _quest;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_common:: _arc_to_agent_result;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: rrel_struct:: _agent_result;;
+ _-> rrel_4:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_arc;;
+ _-> rrel_5:: rrel_fixed:: rrel_scp_const:: nrel_result;;
+
+ _=> nrel_goto:: .._operator2;;
+ *);;
+
+ _-> .._operator2 (*
+ _<- genElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: action_determine_number_of_graphs_for_task;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_action;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: _new_action_determine_number_of_graphs_for_task;;
+
+ _=> nrel_goto:: .._operator3;;
+ *);;
+
+ _-> .._operator3 (*
+ _<- genElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: action;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_action_new;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _new_action_determine_number_of_graphs_for_task;;
+
+ _=> nrel_goto:: .._operator4;;
+ *);;
+
+ _-> .._operator4 (*
+ _<- genElStr5;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _new_action_determine_number_of_graphs_for_task;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_param;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _param;;
+ _-> rrel_4:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_arc_to_param;;
+ _-> rrel_5:: rrel_fixed:: rrel_scp_const:: rrel_1;;
+
+ _=> nrel_goto:: .._check_answer_gen;;
+ *);;
+
+ _-> .._check_answer_gen (*
+ _<- genElStr5;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _new_action_determine_number_of_graphs_for_task;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_common:: rrel_const:: _arc_to_time;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_const:: [99999];;
+ _-> rrel_4:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_time_arc;;
+ _-> rrel_5:: rrel_fixed:: rrel_scp_const:: nrel_max_customer_waiting_time_for_action_to_finish;;
+
+ _=> nrel_goto:: .._operator5;;
+ *);;
+
+ _-> .._operator5 (*
+ _<- genElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: action_initiated;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_action2;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _new_action_determine_number_of_graphs_for_task;;
+
+ _=> nrel_goto:: .._wait_for_agent_determine_number_of_graphs_for_task_result;;
+ *);;
+
+ _-> .._wait_for_agent_determine_number_of_graphs_for_task_result (*
+ _<- sys_wait;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: sc_event_after_generate_outgoing_arc;;
+ _-> rrel_2:: rrel_fixed:: rrel_scp_var:: _new_action_determine_number_of_graphs_for_task;;
+
+ _=> nrel_goto:: .._find_agent_determine_number_of_graphs_for_task_result;;
+ *);;
+
+ _-> .._find_agent_determine_number_of_graphs_for_task_result (*
+ _<- searchElStr5;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _new_action_determine_number_of_graphs_for_task;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_common:: _arc_to_new_action;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: _result_determine_number_of_graphs_for_task;;
+ _-> rrel_4:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_result;;
+ _-> rrel_5:: rrel_fixed:: rrel_scp_const:: nrel_result;;
+
+ _=> nrel_then:: .._cycle;;
+ _=> nrel_else:: .._unsuccess;;
+ *);;
+
+ _-> .._cycle (*
+ _<- ifGr;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _result_determine_number_of_graphs_for_task;;
+ _-> rrel_2:: rrel_fixed:: rrel_scp_const:: [0];;
+
+ _=> nrel_then:: .._minus1;;
+ _=> nrel_else:: .._add_concept_to_result;;
+ *);;
+
+ _-> .._minus1 (*
+ _<- contSub;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _result_determine_number_of_graphs_for_task;;
+ _-> rrel_2:: rrel_fixed:: rrel_scp_const:: [1];;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _result_determine_number_of_graphs_for_task;;
+
+ _=> nrel_goto:: .._random1;;
+ *);;
+
+ _-> .._random1 (*
+ _<- contRandom;;
+ _-> rrel_1:: rrel_assign:: rrel_scp_var:: _random_number1;;
+ _-> rrel_2:: rrel_fixed:: rrel_scp_const:: [3];;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_const:: [10];;
+
+
+ _=> nrel_goto:: .._random2;;
+ *);;
+
+ _-> .._random2 (*
+ _<- contRandom;;
+ _-> rrel_1:: rrel_assign:: rrel_scp_var:: _random_number2;;
+ _-> rrel_2:: rrel_fixed:: rrel_scp_const:: [0];;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_const:: [100];;
+
+ _=> nrel_goto:: .._operator6;;
+ *);;
+
+ _-> .._operator6 (*
+ _<- genElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: action_generate_random_graph;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_action;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: _new_action_generate_random_graph;;
+
+ _=> nrel_goto:: .._operator7;;
+ *);;
+
+ _-> .._operator7 (*
+ _<- genElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: action;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_action_new;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _new_action_generate_random_graph;;
+
+ _=> nrel_goto:: .._operator8;;
+ *);;
+
+ _-> .._operator8 (*
+ _<- genElStr5;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _new_action_generate_random_graph;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_param1;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _random_number1;;
+ _-> rrel_4:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_arc1;;
+ _-> rrel_5:: rrel_fixed:: rrel_scp_const:: rrel_1;;
+
+ _=> nrel_goto:: .._operator9;;
+ *);;
+
+ _-> .._operator9 (*
+ _<- genElStr5;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _new_action_generate_random_graph;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_param2;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _random_number2;;
+ _-> rrel_4:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_arc2;;
+ _-> rrel_5:: rrel_fixed:: rrel_scp_const:: rrel_2;;
+
+ _=> nrel_goto:: .._operator_wait_for_gen;;
+ *);;
+
+ _-> .._operator_wait_for_gen (*
+ _<- genElStr5;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _new_action_generate_random_graph;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_common:: rrel_const:: _arc_to_time;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_const:: [99999];;
+ _-> rrel_4:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_time_arc;;
+ _-> rrel_5:: rrel_fixed:: rrel_scp_const:: nrel_max_customer_waiting_time_for_action_to_finish;;
+
+ _=> nrel_goto:: .._action_init_generate_random_graph_answer;;
+ *);;
+
+ _-> .._action_init_generate_random_graph_answer (*
+ _<- genElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: action_initiated;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _new_action_generate_random_graph;;
+
+ _=> nrel_goto:: .._wait_generate_random_graph_answer_result;;
+ *);;
+
+ _-> .._wait_generate_random_graph_answer_result (*
+ _<- sys_wait;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: sc_event_after_generate_outgoing_arc;;
+ _-> rrel_2:: rrel_fixed:: rrel_scp_var:: _new_action_generate_random_graph;;
+
+ _=> nrel_goto:: .._find_generate_random_graph_answer;;
+ *);;
+
+ _-> .._find_generate_random_graph_answer (*
+ _<- searchElStr5;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _new_action_generate_random_graph;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_common:: rrel_const:: _arc;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: _result_generate_random_graph;;
+ _-> rrel_4:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_arc;;
+ _-> rrel_5:: rrel_fixed:: rrel_scp_const:: nrel_result;;
+
+ _=> nrel_then:: .._generate_by_template_op1;;
+ _=> nrel_else:: .._unsuccess;;
+ *);;
+
+ _-> .._generate_by_template_op1 (*
+ _<- genElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: action_generate_graph_by_template;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_template_action;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: _template_action;;
+
+ _=> nrel_goto:: .._generate_by_template_op3;;
+ *);;
+
+ _-> .._generate_by_template_op3 (*
+ _<- genElStr5;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _template_action;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_param;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _result_generate_random_graph;;
+ _-> rrel_4:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_arc;;
+ _-> rrel_5:: rrel_fixed:: rrel_scp_const:: rrel_1;;
+
+ _=> nrel_goto:: .._generate_by_template_op4;;
+ *);;
+
+ _-> .._generate_by_template_op4 (*
+ _<- genElStr5;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _template_action;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_common:: rrel_const:: _arc_to_time;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_const:: [99999];;
+ _-> rrel_4:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_time_arc;;
+ _-> rrel_5:: rrel_fixed:: rrel_scp_const:: nrel_max_customer_waiting_time_for_action_to_finish;;
+
+ _=> nrel_goto:: .._generate_by_template_op5;;
+ *);;
+
+ _-> .._generate_by_template_op5 (*
+ _<- genElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: action_initiated;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_template_action;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _template_action;;
+
+ _=> nrel_goto:: .._generate_by_template_op6;;
+ *);;
+
+ _-> .._generate_by_template_op6 (*
+ _<- sys_wait;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: sc_event_after_generate_outgoing_arc;;
+ _-> rrel_2:: rrel_fixed:: rrel_scp_var:: _template_action;;
+
+ _=> nrel_goto:: .._generate_by_template_op7;;
+ *);;
+
+ _-> .._generate_by_template_op7 (*
+ _<- searchElStr5;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _template_action;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_common:: _arc_to_template_result;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: _template_result;;
+ _-> rrel_4:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_arc_template_result;;
+ _-> rrel_5:: rrel_fixed:: rrel_scp_const:: nrel_result;;
+
+ _=> nrel_then:: .._add_result_to_answer;;
+ _=> nrel_else:: .._unsuccess;;
+ *);;
+
+ _-> .._add_result_to_answer (*
+ _<- genElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _agent_result;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_res_el;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _template_result;;
+
+ _=> nrel_goto:: .._cycle;;
+ *);;
+
+ _-> .._add_concept_to_result (*
+ _<- genElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _agent_result;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _new_arc;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _param;;
+
+ _=> nrel_goto:: .._add_aaction_check_student_answer_to_result;;
+ *);;
+
+ _-> .._add_aaction_check_student_answer_to_result (*
+ _<- genElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _agent_result;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_action_check_student_answer;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_const:: action_check_student_answer;;
+
+ _=> nrel_goto:: .._add_node_to_result;;
+ *);;
+
+ _-> .._add_node_to_result (*
+ _<- genElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _agent_result;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_node;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: _node;;
+
+ _=> nrel_goto:: .._add_arc_to_result;;
+ *);;
+
+ _-> .._add_arc_to_result (*
+ _<- genElStr5;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: action_check_student_answer;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_conc;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _node;;
+ _-> rrel_4:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_arc;;
+ _-> rrel_5:: rrel_fixed:: rrel_scp_var:: _agent_result;;
+
+ _=> nrel_goto:: .._success;;
+ *);;
+
+ _-> .._success (*
+ _<- genElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: action_finished_successfully;;
+ _-> rrel_2:: rrel_assign::rrel_pos_const_perm:: rrel_scp_var:: _arc1;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _quest;;
+
+ _=> nrel_goto:: .._return;;
+ *);;
+
+*);;
+
+*];;
diff --git a/solver_gt/graph_agents/agent_generate_task_for_student/sc_agent_generate_task_for_student.scs b/solver_gt/graph_agents/agent_generate_task_for_student/sc_agent_generate_task_for_student.scs
new file mode 100644
index 0000000..5cef4fe
--- /dev/null
+++ b/solver_gt/graph_agents/agent_generate_task_for_student/sc_agent_generate_task_for_student.scs
@@ -0,0 +1,49 @@
+sc_agent_generate_task_for_student
+=> nrel_main_idtf:
+ [sc-агент для генерации задания для студента] (* <- lang_ru;; *);
+ [sc-agent for student task generation] (* <- lang_en;; *);
+<- abstract_sc_agent;
+
+=> nrel_primary_initiation_condition:
+ (sc_event_after_generate_outgoing_arc => action_initiated);
+=> nrel_initiation_condition_and_result:
+ (..sc_agent_generate_task_for_student_initiation_condition =>
+ ..sc_agent_generate_task_for_student_result_condition);
+
+=> nrel_sc_agent_action_class:
+ action_generate_task_for_student
+ (*
+ <- sc_node_class;;
+ <= nrel_inclusion:
+ information_action;;
+ *);
+
+<= nrel_sc_agent_key_sc_elements:
+{
+ action_initiated;
+ action_generate_task_for_student
+};
+
+=> nrel_inclusion:
+ sc_agent_generate_task_for_student_implementation
+ (*
+ <- platform_independent_abstract_sc_agent;;
+ <= nrel_sc_agent_program:
+ {
+ agent_generate_task_for_student
+ };;
+ -> sc_agent_generate_task_for_student_scp (* <- active_sc_agent;; *);;
+ *);;
+
+..sc_agent_generate_task_for_student_initiation_condition
+= [*
+ action_generate_task_for_student _-> .._action;;
+ action_initiated _-> .._action;;
+ action _-> .._action;;
+ .._action _-> rrel_1:: .._parameter1;;
+*];;
+
+..sc_agent_generate_task_for_student_result_condition
+= [*
+ .._action _=> nrel_result:: .._result;;
+*];;
diff --git a/solver_gt/graph_agents/agents_gen_random_graph/agent_gen_random_graph.scs b/solver_gt/graph_agents/agents_gen_random_graph/agent_gen_random_graph.scs
new file mode 100644
index 0000000..8f3ecde
--- /dev/null
+++ b/solver_gt/graph_agents/agents_gen_random_graph/agent_gen_random_graph.scs
@@ -0,0 +1,163 @@
+agent_gen_random_graph
+=> nrel_main_idtf:
+ [агентная scp-программа генерации случайного графа] (* <- lang_ru;; *);
+ [agent scp-program of generating a random graph] (* <- lang_en;; *);
+<- scp_program;
+<- agent_scp_program;
+-> rrel_key_sc_element: .._process1;;
+
+agent_gen_random_graph = [*
+.._process1
+_<- scp_process;
+
+_-> rrel_1:: rrel_in:: _event;
+_-> rrel_2:: rrel_in:: _input_arc;
+_<= nrel_decomposition_of_action:: .._actions (*
+
+ _-> rrel_1:: .._agent_gen_random_graph_operator_start (*
+ _<- searchElStr3;;
+ _-> rrel_1:: rrel_assign:: rrel_scp_var:: _temp;;
+ _-> rrel_2:: rrel_fixed:: rrel_scp_const:: _input_arc;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: _quest;;
+
+ _=> nrel_goto:: .._agent_gen_random_graph_operator1;;
+ *);;
+
+ _-> .._agent_gen_random_graph_operator1 (*
+ _<- searchElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: action_generate_random_graph;;
+ _-> rrel_2:: rrel_assign:: rrel_pos_const_perm:: rrel_scp_var:: _arc;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _quest;;
+
+ _=> nrel_then:: .._agent_gen_random_graph_operator_message;;
+ _=> nrel_else:: .._agent_gen_random_graph_operator_return;;
+ *);;
+
+ _-> .._agent_gen_random_graph_operator_return (*
+ _<- return;;
+
+ *);;
+
+ _-> .._agent_gen_random_graph_operator_message (*
+ _<- printNl;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: [Start work agent_gen_random_graph];;
+
+ _=> nrel_goto:: .._agent_gen_random_graph_operator_get_arg1;;
+ *);;
+
+ _-> .._agent_gen_random_graph_operator_get_arg1 (*
+ _<- searchElStr5;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _quest;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_const_pos_perm:: _arc1;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: rrel_link:: _param1;;
+ _-> rrel_4:: rrel_assign:: rrel_scp_var:: rrel_const_pos_perm:: _arc2;;
+ _-> rrel_5:: rrel_fixed:: rrel_scp_const:: rrel_1;;
+
+ _=> nrel_then:: .._agent_gen_random_graph_operator_get_arg2;;
+ _=> nrel_else:: .._agent_gen_random_graph_operator_unsuccess;;
+ *);;
+
+ _-> .._agent_gen_random_graph_operator_unsuccess (*
+ _<- genElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: action_finished_unsuccessfully;;
+ _-> rrel_2:: rrel_assign:: rrel_pos_const_perm:: rrel_scp_var:: _arc1;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _quest;;
+
+ _=> nrel_goto:: .._agent_gen_random_graph_operator_return;;
+ *);;
+
+ _-> .._agent_gen_random_graph_operator_get_arg2 (*
+ _<- searchElStr5;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _quest;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_const_pos_perm:: _arc1;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: rrel_link:: _param2;;
+ _-> rrel_4:: rrel_assign:: rrel_scp_var:: rrel_const_pos_perm:: _arc2;;
+ _-> rrel_5:: rrel_fixed:: rrel_scp_const:: rrel_2;;
+
+ _=> nrel_then:: .._agent_gen_random_graph_operator_check1_par2;;
+ _=> nrel_else:: .._agent_gen_random_graph_operator_unsuccess;;
+ *);;
+
+ _-> .._agent_gen_random_graph_operator_check1_par2 (*
+ _<- ifGr;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _param2;;
+ _-> rrel_2:: rrel_fixed:: rrel_scp_const:: [-1];;
+
+ _=> nrel_then:: .._agent_gen_random_graph_operator_check2_par2;;
+ _=> nrel_else:: .._agent_gen_random_graph_operator_print_error1;;
+ *);;
+
+ _-> .._agent_gen_random_graph_operator_print_error1 (*
+ _<- printNl;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: [Error: second argument value must be greater than or equal to 0];;
+
+ _=> nrel_goto:: .._agent_gen_random_graph_operator_unsuccess;;
+ *);;
+
+ _-> .._agent_gen_random_graph_operator_check2_par2 (*
+ _<- ifGr;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _param2;;
+ _-> rrel_2:: rrel_fixed:: rrel_scp_const:: [100];;
+
+ _=> nrel_then:: .._agent_gen_random_graph_operator_print_error2;;
+ _=> nrel_else:: .._agent_gen_random_graph_call_operator;;
+ *);;
+
+ _-> .._agent_gen_random_graph_operator_print_error2 (*
+ _<- printNl;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: [Error: second argument value must be 100 or lower];;
+
+ _=> nrel_goto:: .._agent_gen_random_graph_operator_unsuccess;;
+ *);;
+
+ _-> .._agent_gen_random_graph_call_operator (*
+ _<- call;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: proc_gen_random_graph;;
+ _-> rrel_2:: rrel_fixed:: rrel_scp_const:: .._agent_gen_random_graph_params (*
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _param1;;
+ _-> rrel_2:: rrel_fixed:: rrel_scp_var:: _param2;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: rrel_struct:: _result;;
+ *);;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: _descr;;
+
+ _=> nrel_goto:: .._agent_gen_random_graph_wait_operator;;
+ *);;
+
+ _-> .._agent_gen_random_graph_wait_operator (*
+ _<- waitReturn;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _descr;;
+
+ _=> nrel_goto:: .._agent_check_result_value;;
+ *);;
+
+ _-> .._agent_check_result_value (*
+ _<- ifVarAssign;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _result;;
+
+ _=> nrel_then:: .._agent_gen_random_graph_operator_take_result;;
+ _=> nrel_else:: .._agent_gen_random_graph_operator_unsuccess;;
+ *);;
+
+ _-> .._agent_gen_random_graph_operator_take_result (*
+ _<- genElStr5;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _quest;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_common:: rrel_const:: _arc_to_result;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _result;;
+ _-> rrel_4:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_arc;;
+ _-> rrel_5:: rrel_fixed:: rrel_scp_const:: nrel_result;;
+
+ _=> nrel_goto:: .._agent_gen_random_graph_operator_success;;
+ *);;
+
+ _-> .._agent_gen_random_graph_operator_success (*
+ _<- genElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: action_finished_successfully;;
+ _-> rrel_2:: rrel_assign:: rrel_pos_const_perm:: rrel_scp_var:: _arc1;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _quest;;
+
+ _=> nrel_goto:: .._agent_gen_random_graph_operator_return;;
+ *);;
+
+*);;
+
+*];;
\ No newline at end of file
diff --git a/solver_gt/graph_agents/agents_gen_random_graph/proc/proc_gen_random_graph.scs b/solver_gt/graph_agents/agents_gen_random_graph/proc/proc_gen_random_graph.scs
new file mode 100644
index 0000000..4119411
--- /dev/null
+++ b/solver_gt/graph_agents/agents_gen_random_graph/proc/proc_gen_random_graph.scs
@@ -0,0 +1,148 @@
+proc_gen_random_graph
+=> nrel_main_idtf:
+ [Программа генерации случайного графа](* <- lang_ru;; *);
+ [Program for generating random graph](* <- lang_en;; *);
+<- scp_program;
+-> rrel_key_sc_element: .._process1;;
+
+proc_gen_random_graph = [*
+.._process1
+_<- scp_process;
+
+_-> rrel_1:: rrel_in:: _number_of_vert;
+_-> rrel_2:: rrel_in:: _chance_of_connection;
+_-> rrel_3:: rrel_out:: _result;
+_<= nrel_decomposition_of_action:: .._actions (*
+
+ _-> rrel_1:: .._create_result (*
+ _<- genEl;;
+ _-> rrel_1:: rrel_assign:: rrel_scp_var:: rrel_const:: rrel_node:: rrel_struct:: _result;;
+
+ _=> nrel_goto:: .._copy_link_content;;
+ *);;
+
+ _-> .._copy_link_content (*
+ _<- varAssign;;
+ _-> rrel_1:: rrel_assign:: rrel_scp_var:: _el1;;
+ _-> rrel_2:: rrel_fixed:: rrel_scp_const:: _number_of_vert;;
+
+ _=> nrel_goto:: .._check_condition;;
+ *);;
+
+ _-> .._check_condition (*
+ _<- ifGr;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _el1;;
+ _-> rrel_2:: rrel_fixed:: rrel_scp_const:: [0];;
+
+ _=> nrel_then:: .._sub_from_number;;
+ _=> nrel_else:: .._create_set_with_vertexes;;
+ *);;
+
+ _-> .._sub_from_number (*
+ _<- contSub;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _el1;;
+ _-> rrel_2:: rrel_fixed:: rrel_scp_var:: _el1;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_const:: [1];;
+
+ _=> nrel_goto:: .._gen_vertex;;
+ *);;
+
+ _-> .._gen_vertex (*
+ _<- genElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _result;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc1;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: rrel_node:: rrel_const:: _node_in_graph;;
+
+ _=> nrel_goto:: .._check_condition;;
+ *);;
+
+ _-> .._create_set_with_vertexes (*
+ _<- searchSetStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: rrel_struct:: _result;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_node;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: rrel_node:: rrel_const:: _node_in_set1;;
+ _-> rrel_set_3:: rrel_assign:: rrel_scp_var:: _graph_vertexes1;;
+
+ _=> nrel_goto:: .._operator_take_vertex_from_set1;;
+ *);;
+
+ _-> .._operator_take_vertex_from_set1 (*
+ _<- searchElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _graph_vertexes1;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: _arc_to_new_node;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: _node_in_set1;;
+
+ _=> nrel_then:: .._delete_el_from_set1;;
+ _=> nrel_else:: .._return_operator;;
+ *);;
+
+ _-> .._delete_el_from_set1 (*
+ _<- eraseEl;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _arc_to_new_node;;
+
+ _=> nrel_goto:: .._create_new_set_with_vertexes;;
+ *);;
+
+ _-> .._create_new_set_with_vertexes (*
+ _<- searchSetStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: rrel_struct:: _result;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_to_node2;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: rrel_node:: rrel_const:: _node_in_set2;;
+ _-> rrel_set_3:: rrel_assign:: rrel_scp_var:: _graph_vertexes2;;
+
+ _=> nrel_goto:: .._operator_take_vertex_from_set2;;
+ *);;
+
+ _-> .._operator_take_vertex_from_set2 (*
+ _<- searchElStr3;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _graph_vertexes2;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: _arc_to_new_node2;;
+ _-> rrel_3:: rrel_assign:: rrel_scp_var:: _node_in_set2;;
+
+ _=> nrel_then:: .._delete_el_from_set2;;
+ _=> nrel_else:: .._operator_take_vertex_from_set1;;
+ *);;
+
+ _-> .._delete_el_from_set2 (*
+ _<- eraseEl;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _arc_to_new_node2;;
+
+ _=> nrel_goto:: .._gen_random_number;;
+ *);;
+
+ _-> .._gen_random_number (*
+ _<- contRandom;;
+ _-> rrel_1:: rrel_assign:: rrel_scp_var:: _random;;
+ _-> rrel_2:: rrel_fixed:: rrel_scp_const:: [0];;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_const:: [100];;
+
+ _=> nrel_goto:: .._check_random_number;;
+ *);;
+
+ _-> .._check_random_number (*
+ _<- ifGr;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_const:: _chance_of_connection;;
+ _-> rrel_2:: rrel_fixed:: rrel_scp_var:: _random;;
+
+ _=> nrel_then:: .._add_arc_to_result;;
+ _=> nrel_else:: .._operator_take_vertex_from_set2;;
+ *);;
+
+ _-> .._add_arc_to_result (*
+ _<- genElStr5;;
+ _-> rrel_1:: rrel_fixed:: rrel_scp_var:: _node_in_set1;;
+ _-> rrel_2:: rrel_assign:: rrel_scp_var:: rrel_var:: rrel_common:: _arc_between_nodes;;
+ _-> rrel_3:: rrel_fixed:: rrel_scp_var:: _node_in_set2;;
+ _-> rrel_4:: rrel_assign:: rrel_scp_var:: rrel_pos_const_perm:: _arc_from_graph;;
+ _-> rrel_5:: rrel_fixed:: rrel_scp_var:: rrel_struct:: _result;;
+
+ _=> nrel_goto:: .._operator_take_vertex_from_set2;;
+ *);;
+
+ _-> .._return_operator (*
+ _<- return;;
+ *);;
+
+*);;
+
+*];;
\ No newline at end of file
diff --git a/solver_gt/graph_agents/agents_gen_random_graph/sc_agent_gen_random_graph.scs b/solver_gt/graph_agents/agents_gen_random_graph/sc_agent_gen_random_graph.scs
new file mode 100644
index 0000000..f64b104
--- /dev/null
+++ b/solver_gt/graph_agents/agents_gen_random_graph/sc_agent_gen_random_graph.scs
@@ -0,0 +1,47 @@
+sc_agent_gen_random_graph
+=> nrel_main_idtf:
+ [sc-агент генерации случайного графа](* <- lang_ru;; *);
+ [sc-agent of generating a random graph](* <- lang_en;; *);
+<- abstract_sc_agent;
+=> nrel_primary_initiation_condition:
+ (sc_event_after_generate_outgoing_arc => action_initiated);
+=> nrel_initiation_condition_and_result:
+ (..sc_agent_gen_random_graph_initiation_condition
+ => ..sc_agent_gen_random_graph_result_condition);
+=> nrel_sc_agent_action_class:
+ action_generate_random_graph
+ (*
+ <- sc_node_class;;
+ <= nrel_inclusion:
+ information_action;;
+ *);
+<= nrel_sc_agent_key_sc_elements:
+{
+ action_initiated;
+ action_generate_random_graph
+};
+=> nrel_inclusion:
+ sc_agent_gen_random_graph_implementation
+ (*
+ <- platform_independent_abstract_sc_agent;;
+ <= nrel_sc_agent_program:
+ {
+ agent_gen_random_graph;
+ proc_gen_random_graph
+ };;
+ -> sc_agent_gen_random_graph_scp (* <- active_sc_agent;; *);;
+ *);;
+
+..sc_agent_gen_random_graph_initiation_condition
+= [*
+ action_generate_random_graph _-> .._action;;
+ action_initiated _-> .._action;;
+ action _-> .._action;;
+ .._action _-> rrel_1:: .._parameter1;;
+ .._action _-> rrel_2:: .._parameter2;;
+*];;
+
+..sc_agent_gen_random_graph_result_condition
+= [*
+ .._action _=> nrel_result:: .._result;;
+*];;
diff --git a/solver_gt/graph_agents/agents_gen_random_graph/tests/gen_random_graph_test1.gwf b/solver_gt/graph_agents/agents_gen_random_graph/tests/gen_random_graph_test1.gwf
new file mode 100644
index 0000000..23f0141
--- /dev/null
+++ b/solver_gt/graph_agents/agents_gen_random_graph/tests/gen_random_graph_test1.gwf
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/solver_gt/graph_agents/agents_gen_random_graph/tests/gen_random_graph_test2.gwf b/solver_gt/graph_agents/agents_gen_random_graph/tests/gen_random_graph_test2.gwf
new file mode 100644
index 0000000..dedbdce
--- /dev/null
+++ b/solver_gt/graph_agents/agents_gen_random_graph/tests/gen_random_graph_test2.gwf
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/solver_gt/graph_agents/agents_gen_random_graph/tests/gen_random_graph_test3.gwf b/solver_gt/graph_agents/agents_gen_random_graph/tests/gen_random_graph_test3.gwf
new file mode 100644
index 0000000..31b0316
--- /dev/null
+++ b/solver_gt/graph_agents/agents_gen_random_graph/tests/gen_random_graph_test3.gwf
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/solver_gt/graph_agents/agents_gen_random_graph/ui_menu_gen_random_graph.scs b/solver_gt/graph_agents/agents_gen_random_graph/ui_menu_gen_random_graph.scs
new file mode 100644
index 0000000..f9201aa
--- /dev/null
+++ b/solver_gt/graph_agents/agents_gen_random_graph/ui_menu_gen_random_graph.scs
@@ -0,0 +1,19 @@
+ui_menu_gen_random_graph <- ui_user_command_class_atom; ui_user_command_class_view_kb;;
+ui_menu_gen_random_graph =>nrel_main_idtf: [Каков сгенерированный граф?] (* <- lang_ru;; *);;
+ui_menu_gen_random_graph =>nrel_main_idtf: [What is generated graph looks like?] (* <- lang_en;; *);;
+ui_menu_gen_random_graph => ui_nrel_command_template:
+[*
+ action_generate_random_graph _-> ._action_generate_random_graph_instance
+ (*
+ _-> rrel_1:: ui_arg_1;;
+ _-> rrel_2:: ui_arg_2;;
+ *);;
+ ._action_generate_random_graph_instance _<- action;;
+ ._action_generate_random_graph_instance _=> nrel_max_customer_waiting_time_for_action_to_finish:: [30000];;
+*];;
+ui_menu_gen_random_graph =>ui_nrel_command_lang_template: [Решение задачи]
+(*
+ <- lang_ru;;
+*);;
+ui_menu_gen_random_graph =>ui_nrel_command_lang_template: [Task solution]
+(* <- lang_en;; *);;
\ No newline at end of file