<?php // Полная загрузка сервисных книжек, создан 2024-01-05 12:44:55
global $wpdb2;
global $failure;
global $file_hist;
///// echo '<H2><b>Старт загрузки</b></H2><br>';
$failure=FALSE;
//подключаемся к базе
$wpdb2 = include_once 'connection.php'; ; // подключаемся к MySQL
// если не удалось подключиться, и нужно оборвать PHP с сообщением об этой ошибке
if (!empty($wpdb2->error))
{
///// echo '<H2><b>Ошибка подключения к БД, завершение.</b></H2><br>';
$failure=TRUE;
wp_die( $wpdb2->error );
}
$m_size_file=0;
$m_mtime_file=0;
$m_comment='';
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.'/_1c_alfa_exchange/AA_hist.csv';
if (!file_exists($file_hist))
{
///// echo '<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>';
$m_comment='Файл обмена с сервисными книжками не существует';
$failure=TRUE;
}
/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure){
///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET['foo']
///// echo '<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>$m_comment));
wp_die();
///// echo '<H2><b>Возврат в начало.</b></H2><br>';
return $failure;
}
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist); ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7]; ////получаем размер файла
$m_mtime_file=$masiv_data_file[9]; ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file
///// echo '<H2><b>Размер файла: '.$m_size_file.'</b></H2><br>';
///// echo '<H2><b>Штамп времени файла: '.$m_mtime_file.'</b></H2><br>';
///// echo '<H2><b>Формирование запроса на выборку из лога</b></H2><br>';
////препарируем запрос
$text_zaprosa=$wpdb2->prepare("SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s", $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);
if ($results)
{ foreach ( $results as $r)
{
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
{////echo '<H2><b>Возврат в начало, т.к. найдена запись в логе.</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>'Загрузка отменена, новых данных нет, т.к. найдена запись в логе.'));
wp_die();
return $failure;
}
}
}
////если данные новые, пишем в лог запись о начале загрузки
/////echo '<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>0, 'last_size_upload'=>$m_size_file, 'comment'=>'Начало загрузки'));
////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare("TRUNCATE TABLE %s", 'vin_history');
$clear_tbl_zap_repl=str_replace("'","`",$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
///// echo '<H2><b>Очистка таблицы сервисных книжек</b></H2><br>';
if (empty($results))
{
///// echo '<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>';
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
}
////загружаем данные
$table='vin_history'; // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация // (путь от корня web-сервера)
$delim=';'; // Разделитель полей в CSV файле
$enclosed='"'; // Кавычки для содержимого полей
$escaped='\
Нужно больше хайповых слов… Блокчейн забыли добавить.
А где собственно Искуственный интеллект, Нейронные сети? Вижу только слова.
От вынесения правил в отдельный файлик xml это не стало ИИ.
Почти нечего не понял, лениво вникать после обеда.
На всякий случай будут всем говорить, что я теперь спец по 1С: ИИ,
вдруг это сейчас модно.
По картинкам вспомнил журнал «Мурзилка» — прослезился.
Еще порадовало, что автор не жаден — перспективные наработки отдает за копейки.
(1)
1. Коллега, давайте не будем мериться «глубиной» скрытых слоев.
2. Читайте внимательнее. Про применение нейронных сети мы расскажем в следующей части.
3. Файл xml достаточно удобно использовать для хранения и переноса.
4. Нечеткие множества относятся к интеллектуальным системам.
5. Наша предлагаемая система работает и выполняет возложенные задачи по мониторингу и анализу.
6. Что по вашему ИИ?
(2)
1.Проект open source, можете все бесплатно скачать и установить с github. (если же лениво, тогда за стартмани).
2. Тема действительно сложная, я предварительно показывал коллегам. Общее мнение, за день можно вникнуть и повторить.
(0) сколько и какие парметры используется на входе ?
на выходе как я понял всего несколько классов — рабочий режим, высокая нагрузка, критический ..
как это помогает локализовать проблему ?
(0) больше напоминает дерево решений , на первый взгляд
(6) Похоже, но в основе нечеткая логика (fuzzy logic).
(5)
1. В демо примере мы используем на входе два параметра: «Нагрузку на процессор%» и «Очередь к процессору».
2. У вас для системы существуют рабочие режимы — такие области в пространстве множества состояний, когда считается, что с ней все в порядке. Для нее существуют определенные состояния: нагрузка рабочая, очередь низкая.
Далее, есть аномалии или аварийные состояния, когда система работает в нештатной ситуации, к примеру, нагрузка очень высокая и очередь к процессору большая. Соответственно, когда система перейдет в данную область в пространстве состояний, то вы можете сообщить ответственному о проблемах.
3. Вы можете увеличить количество входных параметров и увеличить точность оценки, к примеру, можно добавить, размер на диске и т.д.
(8) вы классифицируете данные высокий , средний, низкий для чего ?
для удобства разметки ? ну т.е вы тренируете ларису на предварительно размеченных данных?
(9)
1. Мы не классифицируем, а преобразуем сигналы. Эти параметры мы используем в качестве обозначения уровня сигнала (практически для всех сигналов мы можем свести суждение в эту область).
По нагрузке: низкий — от 0% до 20%, средний от 20% до 60%, высокий от 60% до 100%. (синонимы и значения можно менять, а вот картинка пока не подстраивается)
2. (Перевод от цифр к «словам») Это делается для дальнейшего создания базы правил, согласно подходу к нечетким системам.
3. Это не совсем тренировка — мы создаем базу правил для Ларисы (т.е. проецируем свои знания на нее).
Давайте попробуем представить как мы мыслим «внутри своего сознания»:
1. У меня есть параметр за которым я слежу — это загрузка процессора%
2. Я знаю, что загрузка в районе (фаззификация преобразование):
— 0%-10% это холостой ход;
— от 10% до 60% это нормальный рабочий режим
— от 60% до 90% это высокая нагрузка
— а от 90 до 100% мы считаем что очень высокая и это плохо.
3. Далее, мы понимаем, что (база правил):
— Если это холостой ход или нормальный То все хорошо система работает нормально
— Если же очень высокая нагрузка То происходит что-то непонятное и необходимо что-то сделать.
В такой же последовательности выполняет анализ Лариса.
(10) правильно ли я понял , что лариса принимает свои решения основываясь на безе данных экспертных решений созданной вручную ?
может ли лариса принять решение самостоятельно основываясь на комбинации признаков которой нет в базе ?
(10) или лариса последовательно анализирует каждый из признаков для принятия решения ?
Не по теме, но не могу пройти мимо синтаксических ошибок. Первые полторы минуты ролика, подвал.
(3)
А теги ведь тоже заранее проставили 🙂 ?
Правила вы настраивали руками?
(11)Новые ситуации она находить будет (это заложено), но вот как их интерпретировать ей необходимо как-то объяснить.
(13)
1. она рассматривает их комбинацию.
Если первый=»» и второй=»» Тогда
ИначеЕсли первый=»» и второй=»» Тогда
….
Иначе сообщить «неизвестная комбинация, требуется указание эксперта»
2. (самообучение) можно поступить следующим образом — у вас есть набор данных показателей в системе, далее вы говорите что все комбинации являются рабочими, а все остальные возможные это аварийные. такой алгоритм можно написать (и мы планируем), но пока не хватает рук.
3. для нейронной сети, ситуация аналогична. вы обучаете наборами данных, и говорите: вот это котик, а это не котик.
Или в нашем случае: это нормальный режим работы, а это нет. Для остальных случаев она также будет говорить что это неизвестный режим.
(14)
1. Для нечеткого контроллера обычно так и выглядит процесс.
Сейчас правила настраиваются вручную, но в планах упростить этот процесс. Для большого набора входных данных выглядит сложно, об этом я тоже писал и как упростить. (дополнительно решение ряда задач требует дополнительных рук ресурсов, а в этом мы ограничены, но обязательно выпустим улучшения).
2. Следующий шаг, нейронные сети. Применяем самообучающиеся сети по типу SOM. Однако и тут мы вынуждены будем добавить ручную классификацию.
3. На практике (мониторинг), мы пока столкнулись со следующими параметрами за которыми надо следить (остальные имеют корреляцию): загрузка процессора, очередь к процессору, размер диска, объем трафика, количество пользователей в системе — это не так много. И это реально работает! А посидеть 30 минут, чтобы составить некоторое количество правил, на такая уж и большая цена за сервис.
4 Скажите, а как Вы обучаете нейронные сети или что можете посоветовать в данном случае? Дайте идею как улучшить процесс, мы будем только рады, судя по Вашему докладу, опыт применения на практике у вас огромный.
Это не искусственный интеллект — это просто преобразование решений из А в Б через словарь (в данном случае — диапазон). Все.
Что такое ИИ? На входе массив исторических данных, который кластеризуется и таким образом классифицируется. В задаче слежения за нагрузкой этого ничего нафиг не надо — вплне подойдет какой-нить заббикс или совсем простой скрипт, который будет мерить нагрузку и в нем уже будет этот блок ветвлений (если А между Х и У и Б между С и Д, тогда «зелененькое», иначе если …. «желтенькое», иначе если …. «красненькое» и сообщить персоналу(«чета пашло ни таг») конец еслей) Все.
Но красивые картинки в любом случае увеличивают стоимость проекта в 3 раза, а слова ИИ — еще в пять. Автору респект )))
(19)
думаю вы слегка преувеличиваете
(19)
добавил обработку , которая , возможно, вам пригодится для тестов и проч.
(20)
1. Коллега, вы убеждены что ИИ — это нейронные сети. Спорить с вами не буду.
Может подскажите где взять наборы данных для обучения состоянию оборудования? Буду очень признателен.
2. Мы не готовы потягаться силами с монстрами типа «Google» и даже «yandex», не тот уровень финансирования.
Это первый шаг, все и сразу мы не сделаем. Дали коллегам, кому интересно попробует и даст фидбек. В рамках этого фдбека и нашего опыта эксплуатации будем дальше совершенствовать.
3. Про преимущества мы писали, этих вещей пока достаточно на мой взгляд. Следующий раз я расскажу про применение нейронных сетей типа SOM.
У вас другая реализация и работает, отлично. У нас своя реализация с определенным заделом на будущее. На мой взгляд — это была бы пыль в глаза если бы не работало. По отзывам коллег с которыми я общался лично, получил положительные отзывы.
(21)спасибо посмотрим.
(22)
Не, не так. Мы убеждены, что ИИ — это то, что способно учиться. Нейронные это сети или статистические алгоритмы — вообще по-барабану…
Это первый шаг, все и сразу мы не сделаем. Дали коллегам, кому интересно попробует и даст фидбек. В рамках этого фдбека и нашего опыта эксплуатации будем дальше совершенствовать.
А что совершенствовать-то? Имя поменяете с Ларисы на Лауру? Или изменения будут более серьезные? Расскажите.
А про какие конкретно «преимущества» вы писали? А то поиском только три нашел совпадения, и все они в комментариях.
Вот что я читаю в Вашей статье:
Т.е. я эту матрицу должен руками задолбить на три элемента с пятью градациями (5#k8SjZc9Dxk3=125). Дальше Вы пишите, что нейросеть могла бы это все сама некоторым образом «замутить» — и это первое упоминание ИИ, которого у Вас в продукте как раз нет. Так зачем вообще все это писать под лозунгом искусственного интеллекта (нет, я понимаю, зачем, но все-таки…)?
(24)
Я не пойму вашей претензии коллега. Вы довольно искушены в получаемых сервисах и какой-то поделкой вас не удивишь. Не хотите не пользуйтесь. Вы не обязаны вбивать никакой матрицы из 125 условий.
Основную вашу претензию я понял. Спасибо мнение учли.
Как я говорил ранее, добавим алгоритм который сможет добавлять новые комбинации правил самостоятельно по существующим историческим данным в существующую базу знаний (это не сложно). Это уже самообучение, не так ли?
Так я же писал. У Ларисы сначала будут мозги на нечеткой логике, потом с использованием НС, возможно гибрид — вот оно развитие и улучшение Ларисы. А не смена имени с Ларисы на Лауру.
SOM (self organized map).
(24)А вообще спасибо за критику)
(25)
Уже прочитал.Интересная тема, но в статье кроме упоминания ничего нет. Фактически эта ваша «som» — это кластеризация, которую можно использовать в том самом сборе настроек 5#k8SjZc9Dxk3 (кстати, это не равно 3#k8SjZc9Dxk5 — вам, на мой взгляд, нужно иметь это ввиду), но не совсем ясно, каким образом она определит вам «зону» (красная, зеленая, желтая).
Чем хороши в данном случае простые подходы? Вот у нас есть совокупность показателей, для каждого из которых мы можем определить норму. Нам совокупное влияние часто и не нужно, ибо если на сервере 90% нагрузка на CPU, то для нас важна причина такой нагрузки — какое приложение «отличилось», 1С или SQL? Дальше уже почему: память скушалась, все юзеры пустые циклы крутят или внезапно сто документов одновременно провести решили? «ИИ» нам тут в чем поможет? Достаточно системы, которая просигнализирует в воцап о высокой нагрузке на сервере и скинет скрины по памяти, загрузке, дисковой подсистеме. Дальше все-равно ручками разгребать, т.к. это мог быть тупо новый запрос, в котором программист накосячил, не проверив его на нагрузке, аналогичной продуктовой. Без эксперта тут ничего не сделать…
(26) Соглашусь. Тут основная «придирка» в том, что вы отнесли фузилоджик (и экспертные системы в том числе) в категорию ИИ. Делается это всеми повсеместно для хайпа и из-за этого этот термин ИИ теряет смысл вообще. Да и больше начинает вызывать раздражение чем привлекать внимание.
А ваш продукт очень полезный и желаю(ем) развития.
(27) Ну тут напрашивается логирование всего и вся, а при срабатываение тригера (нагрузка ЦП например) раскручивать текущий лог и администратору предоставлять подготовленные отчёты-выборки. Кстати что-то такое у нас презентовали, пойду поспрашиваю админов.