В стандартах испытаний на растяжения говорится о том, что такую процедуру, как поиск участка пропорциональности и дальше точки условного предела текучести - должен проводить специалист вручную. Такая процедура занимает много времени, и с современными приборами - более точно будет написать алгоритм поиска такого участка программно.
Понимаете, в чём тут проблема? Оператор - он человек, как правило, с высшим инженерным образованием. Он, во-первых, много лет учился физике-технике-математике, и, во-вторых, он долго приобретал собственный личный опыт эксперта практически. Но если вы его попросите написать критерии решения этой задачи, то наверняка он не сможет их описать непротиворечиво и при этом ничего не забыть. Так уж устроена человеческая интуиция. С другой стороны, компьютер - это тупая железяка, которая сама учиться не умеет (уже есть прогресс в этой области, но всё равно требуется опытный специалист в машинном обучении). Вам придётся самому описать алгоритм решения вашей задачи во всех деталях, используя в качестве эталона опыт эксперта. Не думайте, что это легко и просто.
В целом, ваша система предполагается эвристической с написанными вручную человеком эвристиками. Решение вашей задачи в таком случае должно состоять из следующих этапов:
1. Предварительная обработка/генерация признаков. Это может быть фильтрация, прореживание, сглаживание ступенек и так далее. В результате вам нужно получить минимальный набор данных, приемлемый как для дальнейшей компьютерной обработки, так и для анализа человеком, не потеряв при этом существенную для вас информацию. Например, каждую горизонтальную ступеньку, возникающую из-за каких-то ошибок в реализации вашего железа, можно заменить одной точкой. Можно, также, потом этот сглаженный график продифференцировать. Возможность понимания ваших предобработанных данных человеком в вашем случае тоже важна, так как вы сами должны понять, в чём именно ваши компьютерные эвристики отличаются от мнения эксперта.
2. Генерация гипотез. У вас это просто. Вам, в результате, нужно найти наилучший интервал, на котором график линеен в некотором смысле. Гипотеза - это у вас просто интервал, с заданными началом и концом. Переберите в двойном цикле
все возможные интервалы.
3. Отсечение гипотез. Для каждой гипотезы в цикле вы должны понимать, приемлема ваша гипотеза как "линейный участок", или нет, безотносительно к тому, что может существовать линейный участок лучше. Неприемлемые гипотезы выкидываете без сожаления, приемлемые обрабатываете дальше. Критерий написания эвристик для этого этапа: любая прошедшая через него гипотеза в принципе может быть выдана как решение вашей задачи. Это одна функция, получающая на вход предобработанные данные с первого этапа и интервал, и возвращающая ответ "да" или "нет".
4. Выбор наилучшей гипотезы. Нужно сравнить все гипотезы, полученные на шаге 3, и выбрать из них одну наилучшую по какому-то критерию. Этот выбор должен быть комплексным и учитывать такие факторы, как длина гипотезы, расстояние от начала, разброс точек на интервале и так далее. Попытайтесь написать одну функцию сравнения, выбирающую из двух поданных на вход гипотез лучшую. Функция сравнения не должна быть идеально точной, достаточно, чтобы лучшая по мнению эксперта гипотеза побеждала в сравнении все остальные. Имея такую функцию вы, просто, по мере генерации гипотез, их попарно сравниваете и оставляете себе лучшую.
И не пытайтесь это всё оптимизировать пока ваши эвристики не заработают приемлемо в смысле качества, даже, если перебор всех возможных интервалов будет занимать много времени. Оптимизировать эту общую схему можно очень сильно, но оптимизации зависят от того, как именно будут устроены ваши эвристики.
И не забудьте про систематический сбор базы графиков для обучения вашей системы с пометками от экспертов. В цифровом виде, конечно.
Успехов!
-- 03.08.2017, 15:03 --С лучшей точность 1%
Учтите, что "точность 1%" не может быть критерием допуска гипотез в вашем алгоритме, так как вы сами не знаете правильное значение измеряемых величин.