|
|
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
Постановка задачи. Имеется БД, описывающая стевую структуру, а конкретнее распределительную электрическую сеть. Т.е. имеется граф. Основа базы - таблица описателей объектов коммутационная аппаратура, трансформаторы и т.п. Код: plaintext 1. 2. 3. 4. 5. Код: plaintext 1. 2. 3. 4. 5. Вопрос: как лучше описать распространение электричества по графу? Не хотелось бы добавлять еще одну таблицу, аналог таблицы links. Будет ли это нарушением НФ (какой-нибудь:))? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2008, 14:51 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
>> Вопрос: как лучше описать распространение электричества по графу? А для чего Вы хотите его описывать? Если у Вас корректно описаны все связываемые объекты с точки зрения "источник-потребитель", по крайне мере "генерирующие" (источники тока, трансформаторы), то находясь в любой точке графа можно найти ближайший "источник", а от него направление легко определяется... IMHO, нет смысла в базе это хранить отдельно, ибо это вопроизводимые данные. Ну, или нужно сразу нормализовывать связи на этапе ввода. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2008, 14:58 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
Kirill RazuvaevЕсли у Вас корректно описаны все связываемые объекты с точки зрения "источник-потребитель", по крайне мере "генерирующие" (источники тока, трансформаторы), то находясь в любой точке графа можно найти ближайший "источник", а от него направление легко определяется... Согласен на все 100%. Или на 99% :). Дело в том, что обход графа с использованием CTE может приводить к зацикливанию, поскольку в силу случайности направления дуг приходиться использовать соединения типа Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2008, 15:12 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
IMHO, это клиентская задача... на нем ее и решить проще! Попутно стукнув оператора по репе... :-) P.S. А вообще, направление движения тока - вещь спорная... :-)))) Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2008, 15:35 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
Kirill RazuvaevIMHO, это клиентская задача... на нем ее и решить проще! Попутно стукнув оператора по репе... :-) Есть требование, по которому бизнес-праивла должны быть реализованы в БД. Правда, с оговоркой "основная часть" :) Kirill RazuvaevПопутно стукнув оператора по репе... :-) Пока получается наоборот. Вряд ли что то изменится в обозримом будущем А если серьезно, то не совсем правильно выразился, что "операторам привычнее". Просто порядок присоединения не совпадает с порядком, в котором запитываются линии. Согласитесь, это не дело, когда в, допустим, в программе паспортизации скачет порядок ячеек ТП и только потому, что переключили рубильник. Kirill RazuvaevНу, или нужно сразу нормализовывать связи на этапе ввода. Тогда сталкиваемся с другой проблемой, которая описана в предыдщем высказывании ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2008, 15:44 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
>> Есть требование, по которому бизнес-праивла должны быть реализованы в БД. >> Правда, с оговоркой "основная часть" :) Так вот же оно, ключевое слово! :-)) >> Согласитесь, это не дело, когда в, допустим, в программе паспортизации >> скачет порядок ячеек ТП и только потому, что переключили рубильник. Не понял, Вы хотите еще состояние оборудования отслеживать на этом этапе? >> >> Ну, или нужно сразу нормализовывать связи на этапе ввода. >> Тогда сталкиваемся с другой проблемой, которая описана в предыдщем >> высказывании А если "нормализацию" фрагмента схемы проводить по факту присоединения? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2008, 15:53 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
Kirill Razuvaev >> Есть требование, по которому бизнес-праивла должны быть реализованы в БД. >> Правда, с оговоркой "основная часть" :) Так вот же оно, ключевое слово! :-)) Это целых два слова Kirill Razuvaev>> Согласитесь, это не дело, когда в, допустим, в программе паспортизации >> скачет порядок ячеек ТП и только потому, что переключили рубильник. Не понял, Вы хотите еще состояние оборудования отслеживать на этом этапе? Именно! БД управления распределительной сети. переключения из одной программы, паспортизация/редактирование структуры - из другой. Kirill Razuvaev >> >> Ну, или нужно сразу нормализовывать связи на этапе ввода. >> Тогда сталкиваемся с другой проблемой, которая описана в предыдщем >> высказывании А если "нормализацию" фрагмента схемы проводить по факту присоединения? Хмм.... Имеете ввиду, если производим отключение одного рубильника и включение другого, то надо будет "переориентировать" направления дуг в соответствии с изменившимся "направлением распространения тока"? Специально использовал туманную характеристику, поскольку с переменным током знаком ;) Эту мысль надо обдумать и переварить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2008, 16:06 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
>> >> А если "нормализацию" фрагмента схемы проводить по факту >> >> присоединения? >> Хмм.... Имеете ввиду, если производим отключение одного рубильника и >> включение >> другого, то надо будет "переориентировать" направления дуг в соответствии >> с >> изменившимся "направлением распространения тока"? Специально использовал >> туманную характеристику, поскольку с переменным током знаком ;) Ну, по факту отключения, думаю, ни фига делать не надо... По включени - видимо, да. Хотя я в том посте имел ввиду, если есть две части распределения и в первой ТП с рубильниками, а во второй - потребители, и части не соединены друг с другом. Т.е. во второй нет источников. То нет смысла пытаться расставлять направления в ней. Т.е. при добавлении связи - смотрим, есть ли от чего плясать, если есть - то пляшем... Аналогично и при включении рубильника будет. Хотя, если хотим мониторить и отключения оборудования - стоит в отключаемых фрагментах сбрасывать какой-то флаг. Накладные расходы при добавлении элементов ниже будут. Т.е. если появляется связь схемы без источника с другой схемой, в которой тоже не показан (отключен) источник, мы сразу это увидим, без прохода по графу... P.S. Эх.. Если б еще при отключении рубильника табличка "Работают люди" автоматом появлялась... :-))))))))) Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2008, 16:14 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
Kirill Razuvaev Надо будет переварить. Но вопрос о "пляшущем" порядке элементов схемы остается открытым. Kirill RazuvaevP.S. Эх.. Если б еще при отключении рубильника табличка "Работают люди" автоматом появлялась... :-))))))))) А она появляется Т.е. не табличка и не "автоматом", а признак, что на ТП запланировано переключение или другой вид работ. Это называется Журнал работ, но это совсем другая песня, другой модуль :) P.S. А Вы случаем с такими задачами не сталкивались лично? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2008, 16:27 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
>> P.S. А Вы случаем с такими задачами не сталкивались лично? К счастью, нет... Знакомый электрик есть просто, коий наличие запитанных шин слюнявым пальцем проверяет... Уже много лет... :-))) Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2008, 16:29 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
Kirill Razuvaev "источник", а от него направление легко определяется... Легко? Это если фидер в виде дерева. (Фидер - набор элементов, которые электрически соединены друг с другом). А если в виде графа, то как вы будете определять движение тока в данной точке? Senya_LИдея такова, что при совпадении направленности дуг с направлением движением тока можно будет избежать "зацикливания". Точнее, если это и произошло при обходе, то это само по себе уже будет означать ошибочность стуктуры. А вот переключат рубильник и ток потечёт в другую сторону и что тогда? Будете update всего графа делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2008, 16:31 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
Имхо, никак нельзя описать движение тока в БД. Точнее можно, например, каким-нибудь битовым полем, но лучше этого не делать. К тому же Вам важен будет не только факт наличия тока, но и его значение. Кроме того, наличие напряжения <> наличию тока. Напряжение может быть, а вот тока может и не быть (нагрузка = 0). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2008, 16:37 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
goodron Senya_LИдея такова, что при совпадении направленности дуг с направлением движением тока можно будет избежать "зацикливания". Точнее, если это и произошло при обходе, то это само по себе уже будет означать ошибочность стуктуры. А вот переключат рубильник и ток потечёт в другую сторону и что тогда? Будете update всего графа делать?Зачем же всего графа? Только то, что изменилось. Фидера, например, того же ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2008, 16:41 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
Senya_LЗачем же всего графа? Только то, что изменилось. Фидера, например, того же А этого мало? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2008, 17:06 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
Senya_L P.S. А Вы случаем с такими задачами не сталкивались лично? А Вы где работаете? Уж больно похоже на то, чем занимаюсь я. Kirill Razuvaev Знакомый электрик есть просто, коий наличие запитанных шин слюнявым пальцем проверяет... Уже много лет... :-))) Ха-ха :) Он резиновый? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2008, 17:51 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
Senya_LПорядок связывания объектов вобщем-то совпадает с тем, что привычен операторам и совсем не совпадает с направлением движения тока по сети.Если так хочется хранить направление тока, то проще всего будет добавить к структуре графа еще одно поле - направление. Прямое (совпадает с направлением ребра START->FINISH) и обратное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2008, 17:58 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
>>А если в виде графа, то как вы будете определять движение тока в данной >>точке? Ток, к счастью, в точке не течет... А течет он именно в линиях связи графа... Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2008, 20:16 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
>> Ха-ха :) Он резиновый? Не знаю. Сам не верил, пока не увидел в живую. Не удержался даже, чтоб контрольку не включить! Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2008, 20:18 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
Kirill Razuvaev Ток, к счастью, в точке не течет... А течет он именно в линиях связи графа... Ну не суть... Под точкой я имел в виду элемент электрической цепи, который может быть промоделирован дугой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2008, 21:01 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
>> Если так хочется хранить направление тока, то проще всего будет добавить >> к структуре графа >> еще одно поле - направление. Прямое (совпадает с направлением ребра >> START->FINISH) и обратное. Как хранить - не вопрос. Однозначно - в БД! :-)) Основной вопрос в том, как определить правильное с учетом аппаратной коммутации и переконфигурации системы. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2008, 21:10 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
>> Ну не суть... >> Под точкой я имел в виду элемент электрической цепи, который может быть >> промоделирован дугой Ну, это делтали... >> А вот переключат рубильник и ток потечёт в другую сторону и что тогда? >> Будете update всего графа делать? Насколько я понимаю, в силовой энергетике крайне редко от переключения рубильника ток в другую сторону течь начинает... :-) Тут многое зависит от того, что человеку надо на выходе получить. Если нужна on-line картина, какие участки запитаны, какие - нет, это - одно. Тут проще граф апдейтить. А если - статистика сугубо, там другой подход возможен. Анализируем "подключенность" конкретного участка к источнику тока. Тут можно и направления не учитывать и вообще простым обходом дерева пойти... Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2008, 21:17 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
Kirill Razuvaev IMHO, это клиентская задача... на нем ее и решить проще! Попутно стукнув оператора по репе... :-) P.S. А вообще, направление движения тока - вещь спорная... :-)))) Posted via ActualForum NNTP Server 1.4 Да ладно. Уравнение Кирхгофа - и направление в кармане. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2008, 22:28 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
Николай1 Kirill Razuvaev IMHO, это клиентская задача... на нем ее и решить проще! Попутно стукнув оператора по репе... :-) P.S. А вообще, направление движения тока - вещь спорная... :-)))) Posted via ActualForum NNTP Server 1.4 Да ладно. Уравнение Кирхгофа - и направление в кармане. В комплексных переменных, разумеется :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2008, 22:31 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
Kirill Razuvaev Насколько я понимаю, в силовой энергетике крайне редко от переключения рубильника ток в другую сторону течь начинает... :-) Нет. Это вполне типичная ситуация. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2008, 23:35 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
При любой аварии, когда включается дополнительное питание (замыкаются так называемые "нормальные разрывы"), ток как раз таки течет на участки, оставшиеся без напряжения и зачастую именно в обратном направлении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2008, 23:38 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
Kirill RazuvaevКак хранить - не вопрос. Однозначно - в БД! :-)) Основной вопрос в том, как определить правильное с учетом аппаратной коммутации и переконфигурации системы. Я бы поставил вопрос так - как часто происходит переконфигурация системы и как долго расчитывать направление движения тока? Если редко меняется направление и расчет долог - проще update-ить граф. Но расчет "на лету" имеет преимущество - он не зависит от того запускали процедуру пересчета или забыли. Меньше шансов нарваться на логическую нестыковку данных. Что касается нормализации структуры - то тут обсуждать вобще нечего. от добавления поля "направление" нормализация не пострадает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2008, 10:57 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
BelyЧто касается нормализации структуры - то тут обсуждать вобще нечего. от добавления поля "направление" нормализация не пострадает. Не знаю, как на счёт НФ, но некое дублирование появляется. Хранится состояние коммутации - оно-то и определяет направление тока. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2008, 12:37 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
BelyЕсли так хочется хранить направление тока, то проще всего будет добавить к структуре графа еще одно поле - направление. Прямое (совпадает с направлением ребра START->FINISH) и обратное. Вы не совсем поняли. Вопрос в том, чтобы организовать схему БД так, чтобы "запитанные" подсистемы (они же фидеры) можно было обойти одним CTE запросом и избежать "зацикливания" рекурсии. В чем польза, спросите Вы? Например, одним запросом можно узнать: 1) к какому источнику подключен потребитель (обратное направление обхода) и список потребителей (прямое направление обхода); 2) проверить возможность подачи напряжения на участок, где проводятся работы; 3) ... да мало ли еще чего, можно узнать ;-) goodronИмхо, никак нельзя описать движение тока в БД. Точнее можно, например, каким-нибудь битовым полем, но лучше этого не делать. Не надо описывать движение тока, задача в том, чтобы описать саму сеть и организовать учет потребеления электроэнергии. А битовое поле - это точно денормализация. То же самое относится и к словам Bely'го. goodronКроме того, наличие напряжения <> наличию тока. Напряжение может быть, а вот тока может и не быть (нагрузка = 0).Пусть тока и не будет. Направленность дуги в данном случае будет указывать, куда БЫ он пошел, если бы нагрузка имелась. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2008, 13:35 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
Николай1 Николай1Да ладно. Уравнение Кирхгофа - и направление в кармане. В комплексных переменных, разумеется :) Ой, не пугайте, пуганные мы Приходилось брать уравнения в комплексных переменных, пусть и не Кирхгоффа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2008, 13:38 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
Senya_LВы не совсем поняли. Вопрос в том, чтобы организовать схему БД так, чтобы "запитанные" подсистемы (они же фидеры) можно было обойти одним CTE запросом и избежать "зацикливания" рекурсии.Зацикливание рекурсии можно избежать двумя способами: 1) Если построенный граф является деревом (или подграф является деревом) с вершиной в точке откуда считаем. 2) Построением кратчайшего пути от точки к точке в ориентированном графе. первый вариант - он зависит от реальной топологии. Если она НЕ ПОДХОДИТ под это условие, то вы ничего с этим не сделаете. Это означает, что есть источники, которые получают электричество из двух или более источников. Второй вариант - алгоритмический. Алгоритмы поиска кратчайших путей - существуют и описаны в теории графов, вот только их реализация с помощью SQL запросов крайне неэффективна. Senya_LВ чем польза, спросите Вы? Например, одним запросом можно узнать: 1) к какому источнику подключен потребитель (обратное направление обхода) и список потребителей (прямое направление обхода); С учетом сказанного выше - ответ может быть получен "к каким источникам (множественное число)". Если такого не бывает - то откуда вобще может взяться зацикливание? Ну и почему вы упираетесь именно на SQL запрос? Почему эту информацию нельзя выдать с помощью хранимых процедур? Senya_L3) ... да мало ли еще чего, можно узнать ;-)Для того, чтобы понять степень проблемы - хорошо бы знать "чего еще хочется знать". Если вам необходимо знать только пути между потребителями энергии и генераторами энергии, то вы можете заблаговременно рассчитать все пути и сохранить их в БД. Это будет денормализация, зато сможете получать данные одним запросом кто к кому подключен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2008, 14:09 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
Senya_L Николай1 Николай1Да ладно. Уравнение Кирхгофа - и направление в кармане. В комплексных переменных, разумеется :) Ой, не пугайте, пуганные мы Приходилось брать уравнения в комплексных переменных, пусть и не Кирхгоффа. В смысле? Я как раз в смысле, что все очень просто. Берешь свою систему, строишь по ней систему уравнений, решаешь, и вот тебе направления токов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2008, 17:42 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
Belyоткуда вобще может взяться зацикливание? +1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2008, 18:13 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
Типа не хочется заводить отдельную таблицу пройденных объектов или линков? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2008, 18:19 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
Тогда действительно можно добавить поле "Пройден/не пройден" и в СТЕ в условии на объединение отсеивать "пройденные". Только перед каждым проходом нужно будет всё апдейтить в 0 - "ничего не пройдено". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2008, 18:22 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
Николай1В смысле? Я как раз в смысле, что все очень просто. Берешь свою систему, строишь по ней систему уравнений, решаешь, и вот тебе направления токов. Все не так просто. Учтите, что сеть распределительная и замкнутого контура не образует, что, насколько я помню, условие применимости ур-я Кирхгофа. Проще говоря, неизвестно нагрузка конечного потребителя. BelyЗацикливание рекурсии можно избежать двумя способами: .... первый вариант - он зависит от реальной топологии. Если она НЕ ПОДХОДИТ под это условие, то вы ничего с этим не сделаете. Есть и третий способ. Но сложен в реализации. Повторюсь, сеть распределительная, замкнутый контур не образует и существенной нагрузки в ней и быть не должно (это бы означало либо КЗ, либо этакий большоооой нагревательный элемент :)). Каждая дуга графа по сути обозначает три проводника тока, так как кол-во фаз три. Я считаю, что возможно ориентировать дуги таким образом, чтобы обеспечить обход фидера на уровне SQL. При этом одна и та же вершина может в итоговую выборку попасть и не один раз, но зацикливания не произойдет. Если все же произошло, то такая сеть не функциональна. Конечно, неплохо, когда бизнес правило обеспечивается уже на уровне структуры, но .... Сложности в реализации и неизвестно, какова будет эффективность SQL-запросов. goodronТипа не хочется заводить отдельную таблицу пройденных объектов или линков? Не хочется заводить временные таблицы и в цикле "запихивать" в них пройденные вершины и дуги. авторТогда действительно можно добавить поле "Пройден/не пройден" и в СТЕ в условии на объединение отсеивать "пройденные". Только перед каждым проходом нужно будет всё апдейтить в 0 - "ничего не пройдено". К сожалению, нет средств для одновременной выборки и апдейта записей. Хотя нет, есть - курсоры или хранимки. Это зависит от используемой СУБД. Подводя итоги, скажу, что Кирилл Разуваев, скорее всего, прав. Такие вещи надо делать на клиенте. Меньше будет необходимости прибегать к проктологии. Пожалуй, тему можно закрывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2008, 09:06 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
1) А направление вектора (направления тока) при задании графа нельзя задать ? 2) И попробовать после этого CTE )) ______________________________________________________ Давайте считать обступившее нас со всех строн коричневое море шоколадным ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2008, 17:32 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
Senya_L Все не так просто. Учтите, что сеть распределительная и замкнутого контура не образует, что, насколько я помню, условие применимости ур-я Кирхгофа. Проще говоря, неизвестно нагрузка конечного потребителя. Добавляем суперисточник и суперсток - вот и замкнутый контур. Хотя существуют и другие алгоритмы для нахождения установившегося потока (в данном случае это электрический ток). Senya_L Не хочется заводить временные таблицы и в цикле "запихивать" в них пройденные вершины и дуги. Думаете будет медленно? Пробовали? Senya_L Подводя итоги, скажу, что Кирилл Разуваев, скорее всего, прав. Такие вещи надо делать на клиенте. Меньше будет необходимости прибегать к проктологии. Пожалуй, тему можно закрывать. Вобщем и целом согласен, но... Если нужно, к примеру, вывести таблицу (грид) в которой будет содержаться два поля: Имя источника, кол-во отпускаемой электроэнергии. Тогда всё передавать на клиента, вычислять и заново пихать в грид? В данном случае реализация Вашей идеи очень пригодилась бы :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2008, 17:37 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
shelsoft1) А направление вектора (направления тока) при задании графа нельзя задать ? "...задании графа.." - это построение его? В смысле, ввод начальных данных? Представим, что объектов в сети > 1000. ЛЭП рисуются ("задаётся граф") пользователем. Откуда он знает, как будет течь ток? Ведь всё зависит от того, как произведет переключение диспетчер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2008, 17:40 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
goodron 1) Если вы тянули проводку у себя дома то вы знаете что электричество начинается "от счетчика" 2) Т. е. при нормальном построении базы это можно сделать автоматом 3) Однако есть вопрос резервных линии (и тут и "задача коммивояжера" и весовых коэффициентов векторов) однако опять же при выполнении п. 2. вероятно в 80% случаев обойтись одним CTE ______________________________________________________ Давайте считать обступившее нас со всех строн коричневое море шоколадным ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2008, 20:07 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
shelsoft goodron 1) Если вы тянули проводку у себя дома то вы знаете что электричество начинается "от счетчика" 2) Т. е. при нормальном построении базы это можно сделать автоматом 3) Однако есть вопрос резервных линии (и тут и "задача коммивояжера" и весовых коэффициентов векторов) однако опять же при выполнении п. 2. вероятно в 80% случаев обойтись одним CTE Резервных линий не меньше, чем остальных. Не думаю, что можно сделать автоматом, т.к. "веса" на момент создания топологии зачастую неизвестны. Ну даже если и известно. Фактически вы автоматически хотите определить оптимальную схему. Т.е. расставить разрывы таким образом, чтобы потери электроэнергии были наименьшими. Правильно я понял? Это есть "Задача Коммивояжера"? (Насколько я помню, она NP-полная) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2008, 13:46 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
goodron 1) Правильно поняли 2) Однако тут самое сложное при написании выборки определить условие что CTE не прошло и надо применять какой-нибудь свой эвристический механизм решения задачи 3) Для одной конторы я писал нечто такое для определения движения по "связям" между людьми, так порядка 70% запросов проскакивали одним СТЕ на ура, однако при наступлении ряда условий подставлялся другой гораздо более затратный механизм поиска ______________________________________________________ Давайте считать обступившее нас со всех строн коричневое море шоколадным ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2008, 14:06 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
shelsoft 1) Правильно поняли это хорошо shelsoft 2) Однако тут самое сложное при написании выборки... Прежде чем писать выборку, нужно уметь задавать направление тока. Я так и не понял, как вы решали (или предлагаете) эту задачу. Допустим у нас нарисован кусок схемы (см вложение). Яч 1 и Яч 19 - это источники эл. тока. Трансформаторы - это нагрузка (потребители). Где здесь должен будет потечь ток? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2008, 16:22 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
Я могу для этой схемы посчитать, где потечёт ток при определенном состоянии коммутации. Но как посчитать, где он "должен" течь - я не могу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2008, 16:26 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
goodron 1) Интересное условие (с точки зрения графов не решал) 2) Буду думать применительно к своим условиям 3) Спасибо ______________________________________________________ Давайте считать обступившее нас со всех строн коричневое море шоколадным ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2008, 21:16 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
Senya_L Николай1В смысле? Я как раз в смысле, что все очень просто. Берешь свою систему, строишь по ней систему уравнений, решаешь, и вот тебе направления токов. Все не так просто. Учтите, что сеть распределительная и замкнутого контура не образует, что, насколько я помню, условие применимости ур-я Кирхгофа. Проще говоря, неизвестно нагрузка конечного потребителя. Как так? Я думал, что максимальная нагрузка не то, что бы, известна, а как бы даже прописана? И за превышение - по башке? (в квартирах - по предохранителю). Senya_L BelyЗацикливание рекурсии можно избежать двумя способами: .... первый вариант - он зависит от реальной топологии. Если она НЕ ПОДХОДИТ под это условие, то вы ничего с этим не сделаете. Есть и третий способ. Но сложен в реализации. Повторюсь, сеть распределительная, замкнутый контур не образует и существенной нагрузки в ней и быть не должно (это бы означало либо КЗ, либо этакий большоооой нагревательный элемент :)). Каждая дуга графа по сути обозначает три проводника тока, так как кол-во фаз три. Я считаю, что возможно ориентировать дуги таким образом, чтобы обеспечить обход фидера на уровне SQL. При этом одна и та же вершина может в итоговую выборку попасть и не один раз, но зацикливания не произойдет. Если все же произошло, то такая сеть не функциональна. Конечно, неплохо, когда бизнес правило обеспечивается уже на уровне структуры, но .... Сложности в реализации и неизвестно, какова будет эффективность SQL-запросов. goodronТипа не хочется заводить отдельную таблицу пройденных объектов или линков? Не хочется заводить временные таблицы и в цикле "запихивать" в них пройденные вершины и дуги. авторТогда действительно можно добавить поле "Пройден/не пройден" и в СТЕ в условии на объединение отсеивать "пройденные". Только перед каждым проходом нужно будет всё апдейтить в 0 - "ничего не пройдено". К сожалению, нет средств для одновременной выборки и апдейта записей. Хотя нет, есть - курсоры или хранимки. Это зависит от используемой СУБД. Подводя итоги, скажу, что Кирилл Разуваев, скорее всего, прав. Такие вещи надо делать на клиенте. Меньше будет необходимости прибегать к проктологии. Пожалуй, тему можно закрывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2008, 22:08 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
Прошу прощения за оверквотинг. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2008, 22:11 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
Николай1Как так? Я думал, что максимальная нагрузка не то, что бы, известна, а как бы даже прописана? И за превышение - по башке? (в квартирах - по предохранителю). Если бы всё было так... Чтобы было понятней, зайдем с другой стороны. Как узнать, какой номинал предохранителя поставить для нового потребителя? Или... Как изменится пропускная способность (максимальная нагрузка), если мы вот тут ещё одну ЛЭП проведём? ЗЫ: Это решается с помощью задачи нахождения максимального потока, а вот как решается задача нахождения оптимальной схемы - я пока не знаю :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2008, 09:30 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
shelsoft 1) Интересное условие (с точки зрения графов не решал) 2) Буду думать применительно к своим условиям 3) Спасибо Вам тоже спасибо. Посмотрю применимость Комивояжера для этой задачи (хотя, если честно сомневаюсь) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2008, 09:32 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
goodronЕсли бы всё было так... Чтобы было понятней, зайдем с другой стороны. Как узнать, какой номинал предохранителя поставить для нового потребителя?А не потребитель должен заказывать нагрузку? А то мы ему воткнем предохранитель на 5, а ему надо 20... goodronИли... Как изменится пропускная способность (максимальная нагрузка), если мы вот тут ещё одну ЛЭП проведём?Дык - воткнуть эту ЛЭП в граф и посчитать. В чем проблема? goodronЗЫ: Это решается с помощью задачи нахождения максимального потока, а вот как решается задача нахождения оптимальной схемы - я пока не знаю :(Подозреваю, что эту задачу придется решать перебором разных вариантов. Надо только четко поставить критерии оптимальности и указать какие варианты недопустимы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2008, 10:54 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
BelyА не потребитель должен заказывать нагрузку? А то мы ему воткнем предохранитель на 5, а ему надо 20... Да, потребитель. Но возможность присоединения такой нагрузки тоже должна просчитываться. Это можно сделать. Просто объяснял откуда ноги растут. И, кстати, если даже сумма мощностей всех потребителей сети > кол-ва электроэнергии, которое может пропустить сеть, то зачастую всё равно дают добро. Т.к. всё сразу не включат. BelyДык - воткнуть эту ЛЭП в граф и посчитать. В чем проблема? Да ни в чём. Объяснял суть задачи. BelyПодозреваю, что эту задачу придется решать перебором разных вариантов. Надо только четко поставить критерии оптимальности и указать какие варианты недопустимы. Это не решение. Вариантов слишком много. Критерий "простой" - все должны получать запрошенную нагрузку и технические потери (нагрев проводов) должны быть минимальными. При этом каждый потребитель должен должен получать питание в данный момент времени только из одного источника. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2008, 11:15 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
goodronЭто не решение. Вариантов слишком много. Много - это сколько? И за какое время расчитывается один вариант? Перебор - это не всегда означает медленно по времени. К тому же к алгоритму можно поключить эвристику - убирать из расчета заведомо нежизнеспособные варианты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2008, 11:21 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
goodron Николай1Как так? Я думал, что максимальная нагрузка не то, что бы, известна, а как бы даже прописана? И за превышение - по башке? (в квартирах - по предохранителю). Если бы всё было так... Чтобы было понятней, зайдем с другой стороны. Как узнать, какой номинал предохранителя поставить для нового потребителя? Или... Как изменится пропускная способность (максимальная нагрузка), если мы вот тут ещё одну ЛЭП проведём? ЗЫ: Это решается с помощью задачи нахождения максимального потока, а вот как решается задача нахождения оптимальной схемы - я пока не знаю :( Я думаю, что эти задачи решаются так же, как и все остальные - по ГОСТам, СНиПам и прочим нормативным документам. Про электричество не скажу, но вот теплотехнические расчеты делаются методом итераций. Да и многие прочностные - то же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2008, 12:21 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
BelyМного - это сколько? Много - это кол-во комбинаций состояний коммутационного оборудования. 2 в степени N, где N - кол-во коммутационных устройств. Т.е. ОЧЕНЬ МНОГО. Bely И за какое время расчитывается один вариант? Ассимптотическая оценка производительности алгоритма O(n*m), где n - кол-во вершин, m - кол-во дуг. Один вариант для n = 5000 и m = 6000 рассчитывается ~ 14 сек. Bely Перебор - это не всегда означает медленно по времени. К тому же к алгоритму можно поключить эвристику - убирать из расчета заведомо нежизнеспособные варианты. Думаете поможет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2008, 12:45 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
Николай1 Я думаю, что эти задачи решаются так же, как и все остальные - по ГОСТам, СНиПам и прочим нормативным документам. Про электричество не скажу, но вот теплотехнические расчеты делаются методом итераций. Да и многие прочностные - то же. Что за метод итераций? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2008, 12:47 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
goodron Николай1 Я думаю, что эти задачи решаются так же, как и все остальные - по ГОСТам, СНиПам и прочим нормативным документам. Про электричество не скажу, но вот теплотехнические расчеты делаются методом итераций. Да и многие прочностные - то же. Что за метод итераций? Это когда входные параметры для расчета зависят от результатов расчета. Например, коэффициент теплообмена зависит от температуры на границе сред, а температура, в свою очередь, от коэффициента теплообмена. Поэтому сначала делается предварительный расчет, потом уточняющий. Так до тех пор, пока предварительные значения не совпадут с расчетными. Я не имел в виду, что эта методика как-то поможет расчету электрических сетей. Я просто хотел сказать, что в итерационном подходе ничего "страшного" нет, это нормальный способ расчетов. Можно, например, пробовать расчитывать сначала крупные элементы, потом переходить к мелким. Мне кажется, что-то такое нам рассказывали на лекциях по электротехнике. Потому что, понятно, что разводку в квартире в расчетах городской сети никто в расчет не берет (да и разводку по дому - тоже). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2008, 14:13 |
|
||
|
Сети. Вопрос по нормализации.
|
|||
|---|---|---|---|
|
#18+
goodron Bely И за какое время расчитывается один вариант? Ассимптотическая оценка производительности алгоритма O(n*m), где n - кол-во вершин, m - кол-во дуг. Один вариант для n = 5000 и m = 6000 рассчитывается ~ 14 сек.14 секунд - это не много, но количество перебираемых вариантов - много. На таких объемах может помочь выбор вариантов не на угад, а с помощью какой-нибудь стратегии, которая кажется наиболее привлекательной. Например: Сперва добавить между двумя точками графа - по одной дуге. Посмотреть что получилось. Взять вариант с лучшим результатом. Начать добавлять дуги к нему и искать наиболее приемлемый. Вобщем, есть над чем порезвиться с научной точки зрения. goodron Bely Перебор - это не всегда означает медленно по времени. К тому же к алгоритму можно поключить эвристику - убирать из расчета заведомо нежизнеспособные варианты. Думаете поможет?Это называется "Метод ветвей и границ" - используется для сокращения перебора. goodronЧто за метод итераций?Он же метод последовательных приближений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2008, 16:54 |
|
||
|
|

start [/forum/topic.php?all=1&fid=32&tid=1543641]: |
0ms |
get settings: |
10ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
63ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
218ms |
get tp. blocked users: |
2ms |
| others: | 242ms |
| total: | 559ms |

| 0 / 0 |
