Приведем несколько программных модулей низшего уровня из ПО АРМ, записанных на алгоритмическом языке, встроенном в MathCAD 2001 /12/.
Программный модуль RV(k) выполняет расчет возможных сочетаний многопарных звеньев ФЦ по заданному числу контуров k. Результаты расчета по программе RV( ) для k = 1 ¸ 3 представлены в табл. 5.2. Каждая ее строка содержит набор многопарных звеньев, из которого можно создать форму цепи с заданным числом контуров. В последнем ее столбце указано В – число многопарных звеньев такого набора.
Таблица 5.2.
Возможные сочетания многопарных звеньев ФЦ
k |
2×mф |
SP3 |
SP4 |
SP5 |
SP6 |
B |
2 |
4 |
0 |
1 |
0 |
0 |
1 |
2 |
6 |
2 |
0 |
0 |
0 |
2 |
3 |
6 |
0 |
0 |
0 |
1 |
1 |
3 |
8 |
1 |
0 |
1 |
0 |
2 |
3 |
8 |
0 |
2 |
0 |
0 |
2 |
3 |
10 |
2 |
1 |
0 |
0 |
3 |
3 |
12 |
4 |
0 |
0 |
0 |
4 |
Программный модуль RV(k) представлен на рис. 5.11.
Рис. 5.11. Программный модуль RV(k).
Синтез ФЦ на основе теории графов выполняется в несколько этапов:
- сначала осуществляется преобразование входного формата D(2k,i) в выходной формат Pre(D,i) с помощью модуля Pre( ), показанного на рис. 5.12. Модуль имеет два последовательных цикла: в первом создается одномерный массив masp, где 0 £ p £ 2×m, содержащий полный перечень вершин графа, во втором masp преобразуется в матрицу из двух строк, которая далее рассматривается как исходная форма цепи, из которой путем перестановок можно создавать множество изоморфных форм цепей;
- затем осуществляется создание множества изоморфных графов с помощью модуля FS1(A), представленного на рис. 5.13. Входными параметрами является матрица А, созданная модулем Pre(D,i). Алгоритм его работы следующий:
Рис. 5.12. Программный модуль Pre(D,i)
Рис.5.13. Программный модуль FS1(A)
- сначала организуется внешний цикл 0 £ k £ n — 1, где n – число столбцов матрицы А, затем создаются два вложенных внутренних цикла по 0 £ i £ 1 и 0 £ j £ n — 1 для выборки всех элементов матрицы А. В теле внутреннего цикла матрица А копируется в рабочую В, где осуществляются следующие перестановки:
- в элемент B0,k записывается элемент Bi,j
- в элемент Bi,j записывается элемент A0,k.
Полученное новое соединение элементов матрицы В запоминается в строке матрицы С. Таким образом создается множество графов Г. Приведен пример расчета и один фрагмент из этого множества.
Созданное множество Г будет содержать как изоморфные (структурно-одинаковые), так и неизоморфные (структурно-различные) графы. Выделим из множества Г подмножество неизоморфных графов (Н), где НÎГ. Для этой цели воспользуемся модулями FS2( ) и FS3( ).
Модуль FS2( ) создает критерий оценки каждого созданного графа Гi. Он заключается в создании списка соединений многопарных звеньев между собой, например для графа
список соединений будет иметь вид
SH = {1-2, 1-3, 1-3, 2-3, 2-3},
то есть из записи убираются номера вершин:
Рис.5.14. Программный модуль FS2(A) (начало)
Рис.5.14. Программный модуль FS2(A) (окончание)
На рис 5.15 показан фрагмент графа Г и его критерия после обработки модулем FS2(A). Производится сортировка записей с целью отыскания дублирующих записей.
Рис. 5.15. Фрагмент графа Г (матрица с) и его критерия (матрица y)
На рис. 5.16 приведен модуль FS3(с,y). Он удаляет из матрицы с дублируемые строки и уплотняет ее:
Рис. 5.16. Программный модуль FS3().
Аналогично можно выполнить разработку других компонентов проектируемого АРМ.