Data Mining. Нейронечёткие модули

Оглавление:

 

Часть I

 

Data Fusion………………………………………………….….…..3

 

Часть II

 

Нейронечёткие модули……………………………….…………17

 

Часть III

 

 

Эксперимент………………………….………………………….28

 

Заключение………………………………….………………………….37

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Введение.

 

Сегодня консультанты имеют в распоряжении много различных инструментов, каждый из которых создаёт представление, присущее отдельному кандидату. Эти представления включают резюме, данныйоб опытеработы, и, соответственно, ряд от статики до динамики и от одномерных до трёхмерных наборов данных. Пока одиночные представления иногда достаточны для проверки кандидата (например, использование тестов достаточно для определения минимальных знаний), много условий требуют множественных видов, чтобы позволить рекрутеру уверенно сказать подходит кандидат клиенту или не (например, западный стиль ведения бизнеса отличается от Российского, и иногда кандидатам тяжело адаптироваться, а компания не будет рада такому сотруднику).

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

 

Часть I.

 

Рекрутинг

Подбор персонала или  рекрутинг — это бизнес-процесс, являющийся одной из основных обязанностей HR-менеджеров или рекрутеров. Также подбор персонала — основная услуга, предлагаемая кадровыми агентствами и специализированными интернет-сайтами по поиску персонала.

Правильный выбор кандидата  может помочь в увеличении производительности, прибыли и повышении лояльности сотрудников. Неправильный выбор обычно сказывается на большой текучке персонала или недостаточной компетенции сотрудников.

Подбор персонала начинается с описания вакансии и анализа  её на адекватность сложившейся ситуации на кадровом рынке и в компании-работодателе. При необходимости описание вакансии корректируется. Далее начинается этап поиска кандидатов. Желательно иметь начальную базу кандидатов, а в процессе работы постоянно её пополнять.

Выделяют следующие  методы поиска нового сотрудника[1]:

поиск среди родственников и знакомых или по рекомендациям близких людей;

привлечение сотрудников  из других организаций, «переманивание»  персонала;

поиск через печатные средства массовой информации и Интернет-сайты;

привлечение выпускников  вузов или студентов старших  курсов;

обращение в рекрутинговые организации (кадровые или консалтинговые агентства).

Затем кандидаты выбранного пула обзваниваются, уточняются некоторые  детали резюме и назначается собеседование. Далее технологии различны. Многие ограничиваются собеседованием и по его результатам отбирают кандидата. Иногда необходима более серьёзная методология оценки: тесты, деловые игры, ассессмент-центр и другие.

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

Практически каждое кадровое агентство ставит во главу угла клиентоориентированность как одну из своих главных задач. «Обеспечить своих клиентов максимально  возможным количеством квалифицированных  сотрудников» — такой лозунг декларируется практически всеми КА. Для достижения данной цели происходит уже специализация по уровню подбора сотрудников, специализация на конкретных направлениях бизнеса и форме работы. В зависимости от этих факторов и формируется модель ведения бизнеса в данной сфере. Если очень схематично представить себе основные варианты построение рекрутингового бизнеса, то выделяются следующие направления:

Массовый рекрутинг. Применяется  для подбора большого количества сотрудников. В основном это специалисты линейного уровня, с достаточно чётко очерченными профессиональными навыками и опытом. Оплата за подбор такого рода специалистов низка по отношению к остальным видам рекрутинга. Упор делается именно на количественный показатель трудоустроенных людей. Себестоимость успешного подбора каждого сотрудника может быть высокой. Средняя оплата агентству составляет 1,2-1,5 оклада специалиста. Основной минус для агентства в опасности большого количества замен.

Executive search (поиск редких  специалистов и/или управленцев среднего звена) — это самая дорогая и самая эффективная технология применяемая агентствами. При работе по такой технологии предоплата в размере 30 % от суммы контракта обязательна. При работе в этом направлении упор делается в большей степени на специализацию по определённому сегменту рынка или бизнеса. КА с чёткой отраслевой специализацией имеют достаточно обширные связи в «профильных кругах» специалистов, могут в любое время дать аналитическую справку по различным профессиям и условиям работы. Средняя оплата агентств составляет 1,8—2,5 оклада специалиста. Основной минус таких агентств в том, что они полностью зависят от состояния отрасли, на которой они специализируются.

HeadHunting — это переманивание  конкретного специалиста (руководителя) из одной компании в другую компанию по заданию компании Заказчика. Услуга HeadHunting — одна из самых недорогих услуг специализированных агентств. Стоимость обычно не более 10 % от годового дохода кандидата. Низкая стоимость этой услуги связана прежде всего с тем, что ПОИСК специалиста проводить не надо, Заказчик сделал уже свой выбор, поэтому гарантийный срок в случае увольнения этого сотрудника не предусмотрен.

Данная классификация  имеет схематический характер и  необходима в большей степени  для рассмотрения работы рекрутера в её разрезе, чем для качественной оценки тех или иных направлений бизнеса КА. Также необходимо добавить, что компаний, исповедующих только одно из приведённых направлений либо нет вообще, либо очень мало. Как правило, в рамках одного КА совмещены несколько направлений.

Рекрутинг по рекомендациям (англ. referral recruitment) —- процесс поиска персонала, в котором вакансии закрываются  по рекомендациям. Сторонники рекрутинга по рекомендациям утверждают, что  при рекрутинге по рекомендациям  удобно навести справки о кандидате у рекомендателя, а также рекомендованные кандидаты лучше вписываются в компанию.

Обычно в качестве мотивации компании предлагают рекомендателям вознаграждение за успешное закрытие вакансии (денежные выплаты, подарки  и т. д.).

Основная привлекательность  рекрутинга по рекомендациям в том, что данная технология позволяет  «достучаться» до пассивных кандидатов, которые не находятся в активном поиске работы, но чаще всего являются самыми ценными кадрами для компаний.

Также у компаний появляется возможность более личностного поиска кандидатов, так как помимо официального, сухого резюме, они получают «живую» рекомендацию от знакомого потенциального кандидата.

Рекрутинг по рекомендациям  внутри компании. В последнее время  в России стала появляться практика рекрутинга по рекомендациям внутри компании. Сотрудники компании получают список вакансий компании, и в случае если кто-то из сотрудников «закрывает» позицию своим кандидатом, рекомендатель получает вознаграждение или поощрение в какой-либо другой форме (оплачиваемый отдых, ценный подарок и т. п.)

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

Рекрутеры взимают плату  за свои услуги в виде доли от годового дохода предлагаемого специалиста. В различных сферах, эта доля может  составлять от 7 до 20 % и оплата производится в течение 3-30 дней со дня выхода специалиста на новое место работы.

Некоторые агентства  предпочитают работать с клиентами  на основе предоплаты в размере от 30 до 50 % стоимости услуги, при этом рекрутинговое агентство обязуется  найти бесплатно замену специалисту-соискателю, который не подошел работодателю по каким-либо причинам или сам отказался от трудоустройства. Рекрутинговое агентство, также, может предложить клиенту вернуть предоплаченную сумму в размере от 40 до 60 %

 

Слияние данных – это  процесс, имеющий дело с объединениями, взаимосвязями (корреляциями) и комбинациями данных и информации от одиночных и составных источников, чтобы достигнуть:

  • улучшенного состояния и точность предположения для наблюдаемых объектов;
  • полной и своевременной оценки ситуации,  опасностей и их значение.

 

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

Постановка задач и целей

Data fusion – это процесс  объединения данных и знаний  из разных источников с целью  максимизации полезности содержащейся  информации. Это улучшает надёжность  или дискриминантную возможность  распознавания наряду с предложением  возможности минимизации хранения данных.

 

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

 

Цель данного исследования – разработка инструмента прогнозирования подбора персонала и оптимизации самого подбора в целом.

 

Описание исследования.

1. Прогнозирование типа кандидатов для оптимальной нагрузки на каждый бизнес юнит

 

2. Оптимизация подбора персонала при помощи нейронечеткой логики

 

3. База данных кандидатов и выбранная система оптимизации и прогнозирования как составная часть предложенного усовершенствования.

 

Задачи.

 

 

Часть II.

 

Нейронечёткие модули.

 

 

Нечётким множеством A в некотором (непустом) пространстве X, что обозначается как , называется множество пар

 

,

 

где    -  функция принадлежности нечёткого множества A. Эта функция приписывает каждому элементу степень его принадлежности к нечёткому множеству A, при этом можно выделить 3 случая:

1.    означает полную принадлежность элемента x к нечёткому множеству A, т.е. ;

2.    означает отсутствие принадлежности элемента x к нечёткому множеству A, т.е. ;

3.     означает частичную принадлежность элемента x к нечёткому множеству A.

 

Модули нейро-нечёткого  управления.

 

Важнейшим достоинством нейронных сетей считается возможность их обучения и адаптации. Нам не требуются полезные знания об объекте управления (например, его математическая модель). На основе входных и заданных (эталонных) сигналов нейронная сеть может научиться управлять объектом. Нейронные сети состоят из огромного количества взаимосвязанных простых обрабатывающих элементов (нейронов), что в результате даёт громадную вычислительную мощность при использовании параллельной обработки информации. К сожалению, способ проектирования таких систем основывается скорее на интуиции, чем на существующих закономерностях. До настоящего времени неизвестен алгоритм расчёта количества слоёв сети и количества нейронов в каждом слое для конкретных приложений. Тем не менее, по завершении обучения нейронные сети становятся незаменимыми средствами решения задач распознавания образов, аппроксимации, оптимизации, векторного квантования либо классификации. С другой стороны, накопленные нейронной сетью знания, оказываются распределёнными между всеми её элементами, что делает их практически недоступными для наблюдателя.

Этого недостатка лишены системы управления с нечёткой логикой. Однако в данном случае знания о способе управления необходимы уже на стадии проектирования управляющих модулей, причём они должны исходить от экспертов и, следовательно, возможность обучения отсутствует. Однако и в такой ситуации полные знания (описывающие в математическом виде функциональную зависимость между входами и выходами системы) не требуются. В отличие от обычных модулей управления, используются не количественные («сколько?»), а качественные («как?») знания. Система принимает решение на основе правил, записанных в форме импликации IF-THEN. Простейший подход к проектированию таких систем заключается в формулировании правил управления и функции принадлежности по результатам наблюдения за процессом управления, осуществляемым человеком либо уже существующим регулятором, с последующим оцениванием корректности функционирования такой системы. Если проект оказывается неудачным, то функцию принадлежности и/или правила управления можно легко модифицировать. Как уже отмечалось, основной недостаток подобных систем – это невозможность адаптации и обучения.

Объединение обоих подходов позволяет, с одной стороны, привнести способность  к обучению и вычислительную мощность нейронных сетей в системы  с нечёткой логикой, а с другой стороны – усилить интеллектуальные возможности нейронных сетей свойственными «человеческому» способу мышления нечёткими правилами выработки решений.

Попытки такого объединения  стали в последние годы предметом  весьма интенсивных исследований. Их результатом можно считать системы выработки решений, в разной степени реализующих идею нечёткого мышления в комплексе с заимствованной от нейронных сетей способностью к обучению.

 

Модуль нечёткого  управления со структурой, определённой в процессе дефуззификации.

 

Введение.

При некоторых допущениях можно представить систему нечёткого  управления в форме многослойной сети с прямым распространением сигнала (feedforward). Этим термином также обозначается определённый класс нейронных сетей. Поскольку для их обучения до настоящего времени вполне успешно использовался алгоритм обратного распространения ошибки, то нет никаких препятствий к тому, чтобы применить его для любой сети этого класса. Следовательно, можно сделать вывод: если систему нечёткого управления можно представить в виде такой сети, то её можно  будет обучать по методу обратного распространения ошибки.

 

Конструкция модуля.

 

Рассмотрим классический модуль нечёткого управления.

Он состоит из следующих  компонентов: базы правил, блока фуззификации, блока выработки решения, блока дефуззификации.

База правил.

Знания, составляющие основу корректного функционирования модуля нечёткого управления, записываются в виде нечёткого правила:

 

 

Можно также представить  эти знания в виде нечётких множеств с функцией принадлежности. Если в качестве нечёткой импликации будет использоваться операция умножения, то получим формулу

 

 

Декартово произведение множеств можно представить в  виде

 

 

Блок вывода.

Формула, определяющая функцию принадлежности нечёткого множества 

 

 

T-норму можно представить произведением вида

 

 

В результате объединения приведённых  выражений можно выполнить следующее преобразование

    (5)

 

Блок фуззификации.

Применим операцию типа синглетон, т.е. пусть

 

       (6)

 

Заметим, что супремум в формуле (5) достигается только в случае, когда  , т.е. для . При этом выражение (5) принимает вид

 

     (7)

 

Блок дефуззификации.

Применим метод дефуззификации, в соответствии с которым

 

      (8)

 

В приведённой формуле  - это центр нечёткого множества , т.е. точкой, в которой достигает максимального значения

 

 

При подстановке выражения (7) в формулу (8) получим равенство

 

    (9)

 

Если учесть, что максимальное значение, которое  может получить в точке , равно 1, т.е.

 

,           (10)

 

То формула (9) принимает  вид

 

.            (11)

 

 

 

 

 

Структура модуля.

 

Завершающий этап в процессе проектирования модуля нечёткого управления – это определение формы представления  нечётких множеств , . Например, это может быть функция Гаусса

 

                 (12)

 

где параметры  и имеют физическую интерпретацию: - это центр, а - ширина гауссовской кривой.

Эти параметры могут  модифицироваться в процессе обучения, что позволяет  изменять положение и структуру нечётких множеств.

Объединим теперь все  представленные элементы. Воспользуемся  методом дефуззификации (8), выводом  согласно выражению (5), блоком фуззификации с операцией типа синглетон (6), а также гауссовской функцией принадлежности (12) и тогда модуль нечёткого управления приобретает окончательный вид

.       (13)

 

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

Для упрощения на схеме  показан модуль управления с двумя  входами (n=2). Слои обозначены символами от L1 до L4 и выделены серым фоном. Элементы, обозначенные символом  П (мультипликаторы), перемножают все входные сигналы, элементы, обозначенные символом (сумматоры) – суммируют их, а элемент делит один сигнал на другой. Чёрные поименованные точки, размещённые на связях, обозначают веса этих связей. Элементы слоя L1 реализуют функцию Гаусса с параметрами и . Выражения и стрелки, размещённые над схемой, определяют направление распространения сигнала и его интерпретацию. Отдельные элементы схемы будем также называть узлами. В представленной структуре выделены четыре слоя.

 

Слой 1 (L1). Каждый его элемент реализует функцию принадлежности нечёткого множества , . В этот слой поступают входные сигналы , а на его выходе формируются значения функции принадлежности для этих сигналов, т.е. . Фактически, в этом слое оценивается степень принадлежности входных данных к соответствующим нечётким множествам . Функциональная зависимость между входом и выходом в узлах этой сети определяется формулой (12), т.е. функцией Гаусса. Её параметры и интерпретируются соответственно как центр и ширина этой функции. Они будут модифицироваться в процессе обучения, что позволит улучшать подбор нечётких множеств. Факт физической интерпретации этих параметров позволяет получить хорошее начальное размещение функции принадлежности нечётких множеств, а также анализировать её в процессе обучения. Количество элементов слоя L1 равно количеству всех множеств с принадлежностью . В случае N нечётких правил  ( ) и n входных переменных ( ) с учётом того, что в каждом правиле любая входная переменная связана с другим нечётким множеством, количество узлов (элементов слоя L1) будет равно произведению количества входных переменных n и количества нечётких правил N.

 

Слой 2 (L2). Конфигурация связей этого слоя соответствует базе правил, а мультипликаторы – блоку вывода (см. формулы (7) и (10)). На выходе слоя L2 формируется результат вывода в виде значения функции принадлежности . Количество элементов этого слоя равно количеству правил N. Каждый узел связан с предыдущим слоем таким образом, что узел слоя L2, соответствующий k-му правилу, соединён со всеми узлами слоя L1, соответствующими нечётким множествам суждений этого правила. Применение мультипликаторов в качестве узлов слоя L2 обусловлено тем фактом, что для T-нормы, декартова произведения множеств и нечёткой импликации используется операция умножения.

 

Слои 3 (L3) и 4 (L4). Оба слоя представляют собой реализацию блока дефуззификации, реализующего зависимость (8). Веса связей, доходящих до верхнего узла слоя L3 и обозначенные , интерпретируются как центры функций принадлежности нечётких множеств . Эти веса, также как и значения параметров  и в слое L1, будут модифицироваться в процессе обучения. На выходе слоя L4 формируется «чёткое» (дефуззифицированное) выходное значение модуля управления . Представленная на рисунке структура имеет много общего с нейронными сетями – она представляет собой многослойную сеть, основанную на идее нечёткого вывода. В отличие от «чистых» нейронных сетей, каждый слой в целом и отдельные составляющие его элементы, также как и конфигурация связей, все параметры и веса имеют физическую интерпретацию. Это свойство оказывается необычайно важным, поскольку знания не распределяются по сети и могут быть легко локализованы и при необходимости откорректированы экспертом-наблюдателем.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Алгоритм обучения модуля нечёткого управления, заданного  выражением (13).

 

Часть III.

 

Эксперимент.

 

Для решения задачи выработки  плана лечения строится нейронечёткий  контроллер путём обучения нейросети.

 

Adaptive Fuzzy Modeller (AFM) – это программный продукт для автоматического нечёткого моделировнаия системы, начинающейся с входной/выходной выборки.

 

Модель AFM состоит из следующих основных шагов:

Настройка проекта. Определение объектного процессора, числа входных/выходных переменных и число связанных нечётких множеств.

Обучение. Построение правил и регулировка позиций функций принадлежности и вида, связанного с нечёткими множествами.

Симуляция. Вычисление итогов, связанных с данными входными переменными  в порядке проверки валидности проекта.

Экспорт. Перевод проекта в системы W.A.R.P.1.1 и W.A.R.P.2.0, MATLAB и код языка С, в порядке использования связанных сред как поддержку симуляции и и контроль смоделированного процесса.

Обучение.

Фаза обучения состоит  из двух различных шагов: создание правил и создание функций принадлежности.

 

Создание правил. Автоматическое определение нечётких правил выполняется благодаря безнадзорному обучению на Winner-Take-All Fuzzy Associatives Memory (WTA_FAM) нейронной сети. Более того, этот шаг инициализирует позицию функции принадлежности и будет оптимизирован на следующем шаге. Иначе, если вы специалист в вашей системе, вы можете уменьшать цикл обучения с помощью инициализации вручную нечётких множеств и параметров правил. В результате вы получите файл, содержащий правила, выраженные лингвистически.

 

Создание функций  принадлежности.

Настройки функций принадлежности выполняются при помощи контролируемого  обучения многослойной multilayerBackward-propagation

Fuzzy Associative Memory (BACK_FAM) нейронной сети, которая идентифицирует позицию и вид каждой функции принадлежности.

В конце этой фазы можно увидеть графическую интерпретацию полного нечёткого множества, объединённого с каждой переменной проекта.

 

 

 

 

Данная система не справляется с разнотипными данными. Аппроксимация не достигается. Следовательно, нужно разбить выборку на части.

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

Для данной задачи разбития обучающей выборки на части была написана программа на Delphi 7.0.

 

Листинг главного модуля программы.

unit MainUnit;

 

interface

 

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls, Menus, StrUtils, ExtCtrls;

 

type

  TMainForm = class(TForm)

    eSourceFile: TEdit;

    Label1: TLabel;

    btnSourceFile: TButton;

    OpenDialog: TOpenDialog;

    SortButton: TButton;

    MainMenu: TMainMenu;

    Label2: TLabel;

    eResultDir: TEdit;

    btnExit: TButton;

    Bevel1: TBevel;

    miFile: TMenuItem;

    miHelp: TMenuItem;

    miFileAbout: TMenuItem;

    miFileExit: TMenuItem;

    procedure btnSourceFileClick(Sender: TObject);

    procedure SortButtonClick(Sender: TObject);

    procedure FormCreate(Sender: TObject);

    procedure eSourceFileChange(Sender: TObject);

    procedure miFileExitClick(Sender: TObject);

    procedure miFileAboutClick(Sender: TObject);

    procedure btnExitClick(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 

var

  MainForm: TMainForm;

 

implementation

 

uses UnitAbout;

 

{$R *.dfm}

 

procedure TMainForm.btnSourceFileClick(Sender: TObject);

begin

    OpenDialog.Execute;

    eSourceFile.Text := OpenDialog.FileName;

 

end;

procedure TMainForm.SortButtonClick(Sender: TObject);

const

    N = 2000;

var

    tmin, tmed, tmax : TextFile;

    cmin, cmed, cmax, cmis, cerr, ctotal: Integer;

    i : integer;

    fn : string; 

    sl : TStringList;

    s : string;

    p : integer;

    t : extended;

begin

    fn := eSourceFile.Text;

    if not FileExists(fn) then begin

        Application.MessageBox(PChar(' ' + fn + ''), '', MB_OK + MB_ICONERROR);

        Exit;

    end;

 

 

    sl := TStringList.Create;

    try

        sl.LoadFromFile(fn);

    except

        Application.MessageBox(PChar("' + fn + '.'#13#10 + Exception(ExceptObject).Message), 'Ñîðòèðîâêà', MB_OK + MB_ICONERROR);

        sl.Free;

        Exit;

    end;

 

    try

        AssignFile(tmin, eResultDir.Text + 'tmin.pat');

        Rewrite(tmin);

    except

        Application.MessageBox(PChar("' + eResultDir.Text + 'tmin.pat".'#13#10 + Exception(ExceptObject).Message), '', MB_OK + MB_ICONERROR);

        Exit;

    end;

 

    try

        AssignFile(tmed, eResultDir.Text + 'tmed.pat');

        Rewrite(tmed);

    except

        Application.MessageBox(PChar("' + eResultDir.Text + 'tmed.pat".'#13#10 + Exception(ExceptObject).Message), '', MB_OK + MB_ICONERROR);

        CloseFile(tmin);

        Exit;

    end;

 

    try

        AssignFile(tmax, eResultDir.Text + 'tmax.pat');

        Rewrite(tmax);

    except

        Application.MessageBox(PChar("' + eResultDir.Text + 'tmax.pat".'#13#10 + Exception(ExceptObject).Message), 'Ñîðòèðîâêà', MB_OK + MB_ICONERROR);

        CloseFile(tmin);

        CloseFile(tmed);

        Exit;

    end;

 

 

    cmin := 0;

    cmed := 0;

    cmax := 0;

    cmis := 0;

    cerr := 0;

    ctotal := 0;

 

    try

        try

            for i := 0 to sl.Count - 1 do begin

                s := sl[i];

                if Trim(s) = '' then Continue;

                Inc(ctotal);

                p := Pos(' ', s);

Data Mining. Нейронечёткие модули