Цитата |
---|
написал: есть нюансы |
Добрый день Павел. Формула не совсем отображает правильно результат. Наверно я не совсем доходчиво объяснила. Попытаюсь текстом, может так будет понятнее и вы сможете поправить формулу.
1. Есть изделие под номером 1, оно относится к классу задач 1, у этого изделия есть измерения (из разных возможных измерений от 1 до 118) под номерами 1, 13, 16, 18 и 19. В ГОСТ нужно найти соответствия этим параметрам
в соответствующем классе задач, но при условии, что признак под номером 1 имеет приоритет 1, т.е. его мы ищем самым первым в ГОСТ. Значение этого признака под номером 1 равно 122, соответственно в ГОСТ все признаки по номеру 1 не равные 122 отметаются. Выбор начинается из массива где признак под номером 1
равен 122 или
ближайшее большее, так как он в приоритете первый. Такое значение в таблице госту этого признака есть и их много. Программа выбирает из огромного массива только тот у которого признак под номером 1 имеет значение 122 или ближайшее большее в классе задач с номером 1.
2. Далее из уже ограниченного набора данных подбираем второй приоритет значимости и это по матрице приоритета признак с номером 16. Т.е теперь в таблице ГОСТ из массива с признаком 1 равным 122 выбираем второй признак с номером 16, так, что бы он был
равен или ближайший больший к исходному. Исходный равен 72. Ищем в таблице
ближайшее большее или равное 72. Это значение есть и оно равно 72. У нас при этом все еще остается несколько вариантов таких наборов в ГОСТ. В данном случае их осталось два.
3. Далее идет признак с приоритетом 3 (третий по значимости признак) с номером 19. Из оставшихся двух строк таблицы ГОСТ выбираем
равное или ближайшее большее к исходному значению 65,6. Это значение в таблице ГОСТ равно 78,5.
4. В данном случае уже остается один вектор выбора в таблице ГОСТ. Смотрим приоритет под номером 4 - это номер признака 13. В оставшемся уже ограниченном выборе ему присваивается значение, которое осталось и оно равно 29,3 (исходное было 27).
5. Последний признак под номером 18 , чаще всего уже ограничен выбором всех предыдущих, поэтому ему присваивается значение которое осталось в этом векторе. И оно равно 63 (исходное 54).
В этой задаче еще есть признак "Класс задачи" их всего два. Они позволяют ограничить матрицу ГОСТ сразу наполовину и ускорить расчет. С него можно и начинать отбор в условиях функции.
Еще один момент, что признаки приоритетности, хоть их и для каждого изделия не больше 5 (как вы писали), но в матрице они стоят не в 5 колонках подряд. Например у изделия номер 2 в колонке признака под номером 13 стоит 0 (ноль), т.е. этот признак вообще не используется в этом изделии. В этом случае формула не должна сбоить. Она должна присвоить этим признакам исходное значение, а для поиска в ГОСТ взять признаки с ненулевыми приоритетами, а они могут в таблице быть размещены по всей строке в разных местах. Именно по ненулевым приоритетам выбирается требование ГОСТ. Остальные признаки остаются как исходные.
Ну, вот, кажется объяснила смысл. Буду ждать помощи