Научная статья на тему 'Программный генератор символов на основе трехмерного массива'

Программный генератор символов на основе трехмерного массива Текст научной статьи по специальности «Компьютерные и информационные науки»

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

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Джагаров Ю. А.

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

Текст научной работы на тему «Программный генератор символов на основе трехмерного массива»

тернатив используем метод анализа иерархии.

Для упрощения задачи ограничимся одним уровнем факторов, который определен издержками: в проектировании, исследовании, изготовлении и в эксплуатации рассматриваемых альтернатив, в частности, упругих элементов (Л]], Ли,..., Л14}.

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

Результирующий вектор приоритетов альтернатив, определяющий издержки от реализации упругих элементов, имеет следующие значения: с Wцл =(0.55;0.30;0.0];0.15}.

Отношение значений векторов приоритетов альтернатив, характеризующих выгоды и издержки, приведены в таблице 2, из анализа которй можно заключить, что наиболее предпочтительной по критерию в1т/и1т является альтернатива Л]] (значение 1,164 в векторе приоритетов), а наименее предпочтительной - альтернатива Л]4 (значение 0,667). Аналогичным образом осуществляется оценка альтернатив, относящихся ко всем оставшимся функциональным подсистемам, то есть ФПС2 и ФПС3. После определения значения вт/ит для всех альтернатив морфологической таблицы осуществляется генерация целостных вариантов и

поиск подмножества рациональных с учетом целевой функции (1).

Компьютерная система синтеза рациональных технических решений по критерию выгоды-издержки реализована для ПЭВМ. На практике система используется в ряде конструкторских бюро для синтеза и анализа на начальных стадиях проектирования новой техники.

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

1. Андрейчиков А.В., Андрейчикова О.Н. Компьютерная поддержка изобретательства. - М.: Машиностроение, 1998. -476 с.

2. Андрейчиков А.В. Компьютерное моделирование творческих процедур синтеза принципиально новых виброзащитных систем // Проблемы машиностроения и надежности машин. - 1995. - № 5. - С. 89-96.

3. Andreichikov A.V., Andreichikova O.N. Computer support of invention process // The International Conference of Engineering Design. Tampere, Finland, 19-24 August, 1997, p. 215-219.

4. Саати Т., Кернс К. Аналитическое планирование. Организация систем /Пер. с англ. - М.: Радио и связь, 1991. -224 с.

5. Заде Л. Понятие лингвистической переменной и его применение к принятию приближенных решений / Пер. с англ. - М.: Мир, 1976. - 165 с.

6. Борисов А.Н., Кумберг О.А., Федоров И.П. Принятие решений на основе нечетких моделей. - Рига: Зинатне, 1990. -184 с.

7. Saaty T.L. The Analytic Hierarchy Process. New York: McGrow - Hill, 1980, 287 p.

8. Андрейчикова О.Н. Оценка последствий в компьютерных системах принятия решений // Информационные технологии. - 1998. - № 3. - С. 21-29.

ПРОГРАММНЫЙ ГЕНЕРАТОР СИМВОЛОВ НА ОСНОВЕ ТРЕХМЕРНОГО МАССИВА

Ю.А. ДЖАГАРОВ

Для оцифровки горизонтальных осей графика многозначными числами удобно вертикальное расположение цифровой строки. Однако штатные графические средства языковых сред типа QuckBASIC не позволяют изменять как ориентацию цифровой строки, так и размеры цифр, что создает трудности при чтении машинного графика. Использование для этой цели операторов типа DRAW с командами поворота и масштабирования значительно усложняют структуру модуля поворота, делая ее сравнимой по сложности с основным блоком программы построения графика. Кроме этого, размер каждого символа жестко детерминирован и требует для своей реализации отдельной программной позиции.

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

ции и устанавливать произвольный размер знаков. Символы синтезируются на основе прямоугольной матрицы пикселей из т строк и т-1 столбца при т > 5. При т < 5 указанная матрица не обеспечивает различимость всех символов. Для реализации возможности изменения размера символа формируется опорный трехмерный целочисленный массив $%(Х,т,т-]). Интерпретируя такой массив, как совокупность, из X двухмерных массивов т ■ (т-1) с параметром X связывается конкретный знак, а с величиной т его размер. Элементам опорных массивов т ■ (т-1) одноименным с точками матрицы пикселей, участвующим в образовании контура знака, присваивается значение единицы, а остальным элементам - нуль. Для синтеза арабских цифр, знака минус и десятичной запятой значение параметра X изменяется от 0 до 11.

'БЛОК ФОРМИРОВАНИЯ ОПОРНОГО МАССИВА

1 DEFINTA-Z 2 INPUT "Размер символа m"; m: IF m < 5 THEN m = 5 Sz: REDIM S%(11, m, m - 1)

St = FIX(m / 2): Sr = m - St '.....Столбец, строка

FOR Z = 0 TO 11: SELECT CASE Z CASE 0 '.. Цифра 0 GOSUB e: GOSUB h: b1 = m - 1: GOSUB b CASE 1 '.. Цифра 1 k1 = 1: k2 = m: b1 = m - 1: GOSUB b: c1 = Sr: GOSUB C CASE 2 '.. Цифра 2 GOSUB e: a1 = m: GOSUB a: c1 = m - 1: GOSUB C CASE 3 '.. Цифра 3 GOSUB e: a1 = Sr: R = St: GOSUB a c1 = Sr: GOSUB C: GOSUB f CASE 4 '.. Цифра 4 k1 = 1: k2 = m: b1 = m - 1: GOSUB b k2 = Sr: b1 = 1: GOSUB b R = 1: a1 = Sr: GOSUB a CASE 5 '.. Цифра 5 GOSUB e: a1 = Sr: GOSUB a: GOSUB p: GOSUB f CASE 6 '.. Цифра 6 GOSUB d: k1 = 1: k2 = m: b1 = 1: GOSUB b k1 = Sr: b1 = m - 1: GOSUB b CASE 7 '.. Цифра 7 R = 1: a1 = 1: GOSUB a: c1 = m - 1 GOSUB C: S%(Z, m, 1) = 1 CASE 8 '.. Цифра 8 R = 1: a1 = 1: GOSUB a: a1 = Sr: GOSUB a a1 = m: GOSUB a k1 = 1: k2 = m: b1 = 1: GOSUB b b1 = m - 1: GOSUB b CASE 9 '.. Цифра 9 R = 1: a1 = 1: GOSUB a: a1 = Sr: GOSUB a a1 = m: GOSUB a k1 = 1: k2 = Sr: b1 = 1: GOSUB b k2 = m: b1 = m - 1: GOSUB b CASE 10 '...знак.минус

R = 1: a1 = Sr: GOSUB a CASE 11 '....знак точка K = CINT((m + 1.4) / 3): S%(Z, m - 1, K) = 1 S%(Z, m - 1, K + 1) = 1: S%(Z, m, K + 1) = 1 END SELECT: NEXT Z

Фигура 1

Использование трехмерного массива значительно упрощает адресацию к составляющим его двухмерным массивам, позволяя использовать для этой цели общий принцип обращения к элементу массива. Например, массив S%(Z,m,m-1) при m <7 может быть выведен на экран полностью следующим образом:

CLS : K=0 FOR R = 0 TO 8 STEP 4 b = R + 3 FOR I = 1 TO m FOR Z = R TO b FOR J = 1 TO m -1 PRINT S%(Z, I, J); NEXT J

IF Z = b THEN PRINT ELSE PRINT " ";

NEXT Z, I: LOCATE R + m + 2 + 2 * K, 1 K = K + 2 NEXT R

Программный генератор символов состоит из трех блоков: блока формирования опорного массива (фигура 1), блока синтеза контура знака и блока подпрограмм (фигура 2), обслуживающего

оба первых блока. Описываемый генератор предназначен для использования в качестве подпрограммы в программе построения графического объекта, рассматриваемой в качестве основной. В связи с этим операторы строк 1 и 2 на фигуре 1 и фигуре 2 показаны с иллюстративной целью, поскольку задаваемые ими операции, как правило, включаются в основной блок. Блоки фигур 1 и 2 могут располагаться как в составе одной подпрограммы, так и отдельно. Блок формирования опорного массива (фигура 1) выполняется один раз при изменении значения переменной m, после чего синтез цифровой строки выполняется только блоком фигуры 2. Загрузка опорного массива вы-

БЛОК СИНТЕЗА КОНТУРА ЗНАКА

1 SCREEN 1: COLOR 11, О 2 INPUT "Число,Х,У.Ориентация"; С#, X, У, Dr Gen: N$ = STR$(C#): N$ = LTRIM$(N$): К = LEN(N$) FOR I1=1 TO К T$=MID$(N$,I1,1) IF T$ = "-" THEN Z = 10: GOTO ab IF T$ = "." THEN Z = 11: GOTO ab Z=VAL(T$) ab: SELECT CASE Dr CASE 0

3 IF Z=l THEN X=X+m-l ELSE X=X+m:GOSUB G

CASE 1

4 IF Z=l THEN Y=Y+m-l ELSE Y=Y+m::GOSUB V

END SELECT

NEXT I1 END 'RETURN

'........БЛОК ПОДПРОГРАММ

G: FOR I=l TO m FOR J=l TO m-l IF S%(Z,I,J)=1 THEN PSET(X+J-1,Y+I-1) NEXT J, I: RETURN V:FOR J=l TO m-l FOR I=m TO 1 STEP-1 IF S%(Z,I,J)=1 THEN PSET (X+m-I, Y+J-1) NEXT I,J: RETURN a: FOR J=R TO m-1 '....Горизонтальные элементы знака S%(Z,a1,J)=l:NEXT J RETURN

b: FOR I = kl TO k2 '.....Вертикальные элементы знака

S%(Z,I,b1)=1: NEXT I RETURN

С: FOR I=2 TO cl '...Диагональные элементы знака S%(Z,I,m-I)=l: NEXT I

RETURN d:R=l: al=Sr: GOSUB a e:R=l: al= l: GOSUB a al = m: GOSUB a RETURN f: k1 = Sr: k2 = m: b1 =m-1: GOSUB b RETURN p: kl = 1: k2 = Sr: bl = 1: GOSUB b RETURN h: kl = 1:k2 =m: bl = 1: GOSUB b RETURN

Фигура 2

полняется с помощью подпрограмм а, Ь и с (фигура 2) блока подпрограмм, формирующих соответственно горизонтальные, вертикальные и диагональные элементы контура символа (при горизонтальном чтении цифровой строки). Здесь индекс I управляет строками, а ] столбцами опорных массивов, входящих в состав массива Положение элементов контура, связанное с размерами знака, рассчитывается с помощью параметров &=¥1Х{ш12) и Sr=m-St (фигура 1), определяющих соответственно столбец и строку опорного массива, участвующих в синтезе данного элемента. Формирование опорного массива выполняется в цикле по параметру X, значение которого соответствует синтезируемой цифре. Значения Х=10 и Х=11 соответствуют знакам минус и десятичная запятая соответственно. Положение последней в строке зависит от используемого размера символа (число ш) и рассчитывается с помощью параметра к=стг(ш+1.4)/з).

Входными параметрами для программного генератора символов, помимо числа ш, являются:

- отображаемое число, переменная С# (фигура 2);

- экранные абсцисса и ордината левого нижнего угла цифровой строки (при горизонтальном чтении), переменные X и У;

- параметр ориентации, переменная Вг. Вг=0 соответствует горизонтальному, а Вг=1 вертикальному расположению цифровой строки.

Способ ввода названных параметров определяется логикой основной программы, формирующей графический объект. Формирование горизонтальной строки выполняется с помощью подпрограммы О, а вертикальной - подпрограммы V, об-

Фигура. 3

служивающих блок синтеза знака. Горизонтальное расположение строки выполняется путем чтения опорного массива по строкам и столбцам от значений индексов I и J, соответствующих единице до значений I=m и J=m-1. Формирование строки и межзнакового интервала выполняется оператором PSET(X+J-1,Y+I-1). Для символа «1» межзнаковый интервал корректируется в строках 3 и 4 (фигура 2). Вертикальная строка формируется путем чтения опорного массива по столбцам от значения индекса J=1 до значения J=m-1 и по строкам от значения I=m до значения 1=1. Строка и межзнаковый интервал формируются с помощью оператора PSET(X+m-I, Y+J-1).

На фигуре 3 изображен пример графика, оси которого оцифрованы описанным программным генератором. Размер знаков оцифровки для горизонтальной оси соответствует m=5, вертикальной m=6. Размер знаков цифровой строки в левом верхнем углу соответствует m=9. Символы "X", "Y" и "Фиг.3" получены штатными средствами с помощью оператора PRINT.

ПРОГРАММНЫЙ КОМПЛЕКС НЕЙРОСЕТЕВОЙ ДИАГНОСТИКИ

В.И. Дубровин, С.А. Субботин

В последнее время отечественная промышленность понимает необходимость внедрения систем качества, соответствующих стандартам ISO 9000. Однако эти стандарты являются завершающим этапом развития, и чтобы построить такие современные системы качества, необходимо избавиться от такого серьезного недостатка, как высокий уровень дефектности. Эффективным средством против этого недостатка является диагностика процессов и изделий [1].

В большинстве диагностических программ используются статистические методы [2-7], которые требуют, чтобы объем обучающей выборки был достаточно велик. Если же размер обучающей вы-

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

Программный комплекс 'NeuroDiag" осуществляет диагностику на основе альтернативной и сравнительно новой методики нейронных сетей (НС). Одним из важнейших свойств НС является способность к аппроксимации многомерных

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