Неразрешимое зацикливание обменов ресурсов

Ситуация

В протоколе расчета стоимостных показателей можно обнаружить следующие выделенные красным цветом строки:

Неразрешимое зацикливание обменов ресурсов (система уравнений вырожденная)

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

См. примеры зацикливаний:

:doc:sh1.jpg :doc:sh2.jpg

Что делать?

Смотрим обратно в протокол расчета стоимостей. После сообщения о неразрешимом зацикливании в протоколе идет одна или несколько строк вида:

Зацикленные ресурсы, цена ресурса приравнивается нормативной

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

Математические подробности и прочая подноготная

Если использовать строгое математическое определение, то вырожденной называется матрица порядка n, если ее ранг r < n или, что тоже самое, ее определитель равен нулю. Однако не все неразрешимые в рамках алгоритма расчета стоимостей системы уравнений являются вырожденными. Тем не менее, можно говорить о двух неразличимых случаях неразрешимости системы уравнений в рамках алгоритма: система не имеет решений, система имеет бесчисленное множество решений. Как уже было сказано, эти случаи не различаются алгоритмом. Исходная система уравнений, формируемая алгоритмом, при разрешении на уровне ядра, разбивается на непересекающиеся множества субсистем, каждая из которых решается в отдельности. Поэтому неразрешимость какой-либо субсистемы не означает неразрешимость остальных, а потому, обычно, только небольшая часть цен остается нерасчитанной. Для тех УчРесурсов (см. описание алгоритма расчета стоимостей), для которых решение не было найдено, в протоколе выводятся предупреждения «Зацикленные ресурсы: цена ресурса приравнивается нормативной», по каждому из которых можно узнать наименование ресурса и получить ссылку на документ, содержащий позиции с этим ресурсом, которые оказались в зацикленной системе. Следует отметить, что анализ движений, послуживших причиной вырожденности матрицы, необходимо проводить для каждой из субсистем. К примеру, зацикленные индексы [1, 2, 3, 4, 8, 9, 10], нулевые индексы на главной диагонали [4, 9]. Из такой записи видно, что имеются две неразрешенные субситемы. Вообще, количество неразрешенных субсистем можно определить по количеству нулевых индексов на главной диагонали. Таким образом, при анализе зацикленных позиций необходимо следить за тем, какие позиции действительно связаны между собой.

Рассмотрим на одном из самых распространенных примеров поиск и исправление ошибки с зацикленными ресурсами. Допустим есть два склада между которыми происходит перемещение ресурса. Есть два документа по перемещению: РесурсОткуда = РесурсКуда = «Наш ресурс», ПроцессОткуда = «Склад №1», ПроцессКуда = «Склад №2», КоличОткуда = КоличКуда = 1; во втором документе меняются местами ПроцессОткуда/Куда. Если по какой-либо причине стоимость этого ресурса равна нулю (например, забыли ввести документ прихода), то матрица будет вырожденной, и в протоколе появится сообщение о вырожденности системы. Пусть зацикленные индексы [1, 2], нулевые индексы на главной диагонали [2]. Из данного сообщения мы узнаем, что есть одна нерешенная субсистема, а следующие два предупреждения в протоколе (вида «Зацикленные ресурсы, цена ресурса приравнивается нормативной») содержат сведения о наименовании ресурса и ссылки на документы, послужившие причиной зацикленности. В нашем примере это будет «Наш ресурс» и два документа по перемещению. В большинстве случаев вырожденность системы появляется при внутренних перемещениях при отсутствии приходов. Исправлением в нашем примере будет ввод приходного документа, либо исправление обоих документов по внутренним перемещениям (например, указали «не тот» ресурс), либо удаление этих документов (например, «забыли удалить»).

 
doc/virozdennaya_systema.txt · Последние изменения: 2016/04/15 15:26 (внешнее изменение)
 
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki