Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Луценко Е.В. - Интеллектуальные информационные системы. Учебное пособие - Краснодар, КубГАУ. 2004. - 633 с..doc
Скачиваний:
8
Добавлен:
01.07.2025
Размер:
34 Мб
Скачать
☆

Пример решения

1. Формализовать задачу.

Для этой цели используем 5-ю функцию 5-го режима 1-й подсистемы системы "Эйдос" (реальный исходный текст программы приводится ниже).

***************************************************************

*** Формирование модели для исследования свойств чисел ********

*** Луценко Е.В., 02/26/04 11:34am ****************************

***************************************************************

FUNCTION Div_chis()

scr_start=SAVESCREEN(0,0,24,79)

SHOWTIME(0,58,.T.,"rb/n")

Titul(.T.)

Mess = "=== ГЕНЕРАЦИЯ ИСХОДНЫХ ДАННЫХ ДЛЯ МОДЕЛИ ИССЛЕДОВАНИЯ СВОЙСТВ ЧИСЕЛ ==="

@5,40-LEN(Mess)/2 SAY Mess COLOR "rg+/rb"

* 0123456789012345678901234567890123456789012345678901234567890123456789012345678

* 0 10 20 30 40 50 60 70

@10,24 SAY "Задайте максимальное число: #####" COLOR "w+/rb"

N_Obj = 99

@10,52 GET N_Obj PICTURE "#####" COLOR "rg+/r"

SET CURSOR ON;READ;SET CURSOR OFF

IF LASTKEY()=27

RESTSCREEN(0,0,24,79,scr23)

RETURN

ENDIF

*** Формирование справочника первичных признаков

A_Pr := {}

FOR j=1 TO N_Obj

AADD(A_Pr, "Делится на "+ALLTRIM(STR(j,4)))

NEXT

FOR j=1 TO N_Obj

AADD(A_Pr, "Не делится на "+ALLTRIM(STR(j,4)))

NEXT

FOR j=1 TO N_Obj

AADD(A_Pr, "Делителей: "+ALLTRIM(STR(j,4)))

NEXT

USE Priz_per EXCLUSIVE NEW

ZAP

FOR j=1 TO LEN(A_Pr)

APPEND BLANK

REPLACE Kod WITH j

REPLACE Name WITH A_Pr[j]

NEXT

GenNtxPrp(.F.)

CLOSE ALL

*** Формирование справочника классов распознавания

USE Object EXCLUSIVE NEW

ZAP

FOR j=1 TO N_Obj

APPEND BLANK

REPLACE Kod WITH j

REPLACE Name WITH ALLTRIM(STR(j,3))

NEXT

GenNtxObj(.F.)

CLOSE ALL

*** Формирование обучающей выборки

USE ObInfZag EXCLUSIVE NEW;ZAP

USE ObInfKpr EXCLUSIVE NEW;ZAP

FOR s=1 TO N_Obj

SELECT ObInfZag

APPEND BLANK

REPLACE Kod_ist WITH s

REPLACE Name_ist WITH ALLTRIM(STR(s,4))

REPLACE Obj_1 WITH s

SELECT ObInfKpr

APPEND BLANK

REPLACE Kod_ist WITH s

p=0 && Позиция для записи в БД

N_Del=0 && Кол-во делителей

*** Проверка делимости

FOR j=1 TO N_Obj

IF s-j*int(s/j) = 0

Kod = j

++N_Del

IF p+1 <= 11

FIELDPUT(++p+1, Kod)

ELSE

APPEND BLANK

REPLACE Kod_ist WITH s

p=0

FIELDPUT(++p+1, Kod)

ENDIF

ENDIF

NEXT

************ Занесение количества делителей

IF p+1 <= 11

FIELDPUT(++p+1, N_Del+2*N_Obj)

ELSE

APPEND BLANK

REPLACE Kod_ist WITH s

p=0

FIELDPUT(++p+1, N_Del+2*N_Obj)

ENDIF

*** Проверка не делимости

FOR j=1 TO N_Obj

IF s-j*int(s/j) <> 0

Kod = j+N_Obj

IF p+1 <= 11

FIELDPUT(++p+1, Kod)

ELSE

APPEND BLANK

REPLACE Kod_ist WITH s

p=0

FIELDPUT(++p+1, Kod)

ENDIF

ENDIF

NEXT

NEXT

GenNtxOin(.F.)

@24,0 SAY REPLICATE("-",80) COLOR "rb/n"

Mess = " ПРОЦЕСС ГЕНЕРАЦИИ ШКАЛ И ОБУЧАЮЩЕЙ ВЫБОРКИ ЗАВЕРШЕН УСПЕШНО !!! "

@24,40-LEN(Mess)/2 SAY Mess COLOR "rg+/rb"

INKEY(0)

RESTSCREEN(0,0,24,79,scr_start)

SHOWTIME()

RETURN