Интеллектуальные информационные системы

          

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


Для этой цели используем 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


Содержание раздела