Баланс однофазных нагрузок
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Баланс однофазных нагрузок

Баланс однофазных нагрузок

Ответ
Поиск в этой теме
Непрочитано 20.03.2013, 17:16 #1
Баланс однофазных нагрузок
angel-fear
 
инженер-электрик
 
Краснодар
Регистрация: 21.10.2010
Сообщений: 134

Доброго времени!
Никто не занимался такой задачей в среде AutoCAD?
Допустим имеется некоторое количество блоков с атрибутами.
Помимо прочих данных в атрибутах нас интересуют два - расчетный ток и фаза присоединения.
Требуется выбрав все блоки по имеющимся значениям расчетного тока проставить в атрибуте фазы ну, скажем, цифры 1, 2 или 3, при этом, соответственно, добившись максимально возможного баланса между фазами.
Просмотров: 6351
 
Непрочитано 22.03.2013, 08:05
#2
Uduzr

проектирование электроснабжения
 
Регистрация: 17.03.2009
Екатеринбург
Сообщений: 44


Кидайте файл с блоками, вроде не сложно такую програмку сделать.
Uduzr вне форума  
 
Автор темы   Непрочитано 22.03.2013, 10:34
#3
angel-fear

инженер-электрик
 
Регистрация: 21.10.2010
Краснодар
Сообщений: 134


Блоки и описание внутри. Родилась вторая, чуть более расширенная задача, с предварительным указанием групп электроприемников.
Вложения
Тип файла: dwg
DWG 2010
Чертеж1.dwg (120.2 Кб, 2435 просмотров)
angel-fear вне форума  
 
Непрочитано 22.03.2013, 13:43
#4
Uduzr

проектирование электроснабжения
 
Регистрация: 17.03.2009
Екатеринбург
Сообщений: 44


По первой задаче вот что пока получилось,
Код:
[Выделить все]
 
  (vl-load-com)
  (setq acad_application (vlax-get-acad-object))
  (setq active_document (vla-get-ActiveDocument acad_application))
  (setq model_space (vla-get-ModelSpace active_document))
  (setq paper_space (vla-get-PaperSpace active_document))
(setq sel (ssget "_I" (list (cons '0 '"INSERT"))))
(setq spis (list (list 0)))
(setq dlina (sslength sel) x 0 summa 0)
(while (< x dlina )
  	(setq obj (vlax-ename->vla-object (ssname sel x))  y 0 )
	(setq attr (vlax-safearray->list (vlax-variant-value (vla-getattributes obj))))
  	(setq dl (length attr))
  	(while (< y dl )
	  	(setq ref (nth y attr))
		(if (= (vla-get-tagstring ref) "ДОП.1") (setq I (atof (vla-get-textstring ref))))
	  	(if (= (vla-get-tagstring ref) "ДОП.2") (setq faza (vla-get-textstring ref) reffer ref))
	  	(setq y (1+ y))
	);end while
 	(setq summa (+ summa I))
  	(setq spis (append spis (list (list obj I faza reffer)) ))
  	(setq x (1+ x))
);end while
(setq spis (reverse (cdr spis)) z 0 num '(0 1 2 2 1 0)) 
(setq spis (vl-sort spis (function (lambda (e1 e2) (> (cadr e1) (cadr e2)) ))))
(setq dlin (length spis)) 
  	(while (< z dlin)
		(setq N (nth (rem z 6) num))
	  	(setq spis (subst (list (car (nth z spis)) (cadr (nth z spis)) N (cadddr (nth z spis))) (nth z spis) spis))
		(setq z (+ z 1))
	);end while
	(setq z 0)
(while (< z dlin)
	(vla-put-textstring (cadddr (nth z spis)) (strcat "L" (rtos (+ (caddr (nth z spis)) 1) )))
  	(setq z (+ z 1))
);end while
но алгоритм мне не нравится, не уверен что будет корректно работать во всех случаях... Сейчас программа обрабатывает все выделенные блоки следующим образом - сортирует в порядке убывания по току и разносит по фазам по порядку L1, L2, L3, L3, L2, L1, L1, L2, L3, L3, L2, L1.... Это позволяет грубо и приблизительно разбивать по фазам, но как уже сказал решение самому не нравится, еще подумаю, должен быть алгоритм получше, если есть идеи хотя бы словами пишите что и как.

Последний раз редактировалось Uduzr, 22.03.2013 в 14:03.
Uduzr вне форума  
 
Непрочитано 22.03.2013, 18:57
#5
maratovich


 
Регистрация: 12.07.2009
г. Самара
Сообщений: 2,437
Отправить сообщение для maratovich с помощью Skype™


Может не по теме, просто интересно, что вы с такими блоками дальше делаете ? Для чего они ?
maratovich вне форума  
 
Автор темы   Непрочитано 23.03.2013, 11:27
#6
angel-fear

инженер-электрик
 
Регистрация: 21.10.2010
Краснодар
Сообщений: 134


maratovich, дальше уже ничего. Условные обозначения с планов, автоматы для однолинейных схем.

Uduzr, вариант L1, L2, L3, L3, L2, L1 не годится, уже рассматривался. Работает только при более-менее однородных нагрузках.
Во вложении вариант для надстройки "поиск решения" в excel`e. Только вот, как работает сам этот "поиск решения" хз )
Перебором находится вариант суммы наиболее соответствующий 1/3 общей нагрузки. Дальше убираем из общего списка эти нагрузки и ищем решения еще раз.
Тоже не лучший алгоритм, т.к. во втором переборе уже не участвует часть нагрузок.

Как мне кажется, идеальный вариант - это перебор всех вариантов расположения нагрузок по фазам, нахождение промежуточной суммы по фазам (для каждого такого расположения) и поиск минимума разности нагрузки по фазам.
Вложения
Тип файла: rar Книга1.rar (7.2 Кб, 99 просмотров)
angel-fear вне форума  
 
Непрочитано 23.03.2013, 11:45
#7
sdv79

Инженер ЭОМ
 
Регистрация: 05.03.2009
Москва
Сообщений: 215
Отправить сообщение для sdv79 с помощью Skype™


angel-fear посмотри http://forum.dwg.ru/showthread.php?t=94928, помимо расчетов выполняет фазировку.
sdv79 вне форума  
 
Непрочитано 25.03.2013, 07:32
#8
Uduzr

проектирование электроснабжения
 
Регистрация: 17.03.2009
Екатеринбург
Сообщений: 44


Попробую сделать перебор, но что-то сомнения есть будет ли это работать, при 20 автоматах это уже 3^20=3486784400 вариантов...
Uduzr вне форума  
 
Автор темы   Непрочитано 25.03.2013, 14:09
#9
angel-fear

инженер-электрик
 
Регистрация: 21.10.2010
Краснодар
Сообщений: 134


sdv79, у вас в программе какой алгоритм фазировки? Не поделитесь?
angel-fear вне форума  
 
Непрочитано 25.03.2013, 15:57
#10
sdv79

Инженер ЭОМ
 
Регистрация: 05.03.2009
Москва
Сообщений: 215
Отправить сообщение для sdv79 с помощью Skype™


Фазировка- первая программа которую написал подробностей не помню. Ищем макс ток, присваиваем L1 (L1/L2/L3 выбираем случайно) выкидываем из списка следующий мак ток на L2, выкидываем из списка, след. макс ток на L3/ выкидываем. Суммируем состояние по каждой из L ищем мин, и к ней опять макс из токов, выкидываем, и так далее пока не закончатся потребители.
Многие ошибочно делают фазировку по мощности это ошибка.
Простая математика. ))
sdv79 вне форума  
 
Автор темы   Непрочитано 26.03.2013, 10:23
#11
angel-fear

инженер-электрик
 
Регистрация: 21.10.2010
Краснодар
Сообщений: 134


Да. Максимум к минимальной нагрузке работает. Во всяком случае, лучше, чем просто L1-L2-L3-L3-L2-L1.
angel-fear вне форума  
 
Непрочитано 26.03.2013, 11:30
#12
bargool


 
Регистрация: 16.08.2006
Санкт-Петербург
Сообщений: 508
<phrase 1=


Задачка интересная
Цитата:
Сообщение от Uduzr Посмотреть сообщение
перебор, но что-то сомнения есть будет ли это работать, при 20 автоматах это уже 3^20=3486784400 вариантов...
Я прикинул пока алгоритм на пайтоне, хорошо работает перебор, но не в лоб, а с мемоизацией, так сказать. Памяти жрёт прилично, конечно :
  • Суммируем все возможные варианты сочетаний (но помним, что от перемены мест слагаемых.. эти варианты не обрабатываем), это даёт нам O(2^n). Для 20 автоматов 1048576 вариантов. При этом храним всё в словаре, где ключ - слагаемые, значение - сумма (это как вариант, конечно)
  • Ищем самый близкий к 1/3 вариант - список элементов из этого варианта кидаем на первую фазу.
  • Удаляем все записи из словаря, где в ключе встречаются добавленные элементы (на этом этапе из 1048576 записей осталось 2 тыщи с чем-то)
  • Смотрим максимальную сумму из оставшихся, берём половину от неё.
  • Ищем самый близкий к половине вариант, кидаем на вторую фазу
  • Опять чистим словарь
  • Смотрим максимальную сумму из оставшихся, полученный вариант кидаем на третью фазу

Грубо, сложность алгоритма O(2^n), 20 автоматов раскидывает за несколько секунд. Ещё есть что оптимизировать, раскидать на потоки, и будет приемлемо для небольшого кол-ва автоматов.

Думаю, будет неплохим вариантом выбирать м/д двумя алгоритмами в зависимости от кол-ва автоматов

Будет время - можно будет переписать на языке, приемлемом для автокада
P.S.: Тоже, кстати, не самый оптимальный по точности выборки алгоритм
__________________
Алексей

Последний раз редактировалось bargool, 26.03.2013 в 12:05.
bargool вне форума  
 
Автор темы   Непрочитано 28.03.2013, 10:37
#13
angel-fear

инженер-электрик
 
Регистрация: 21.10.2010
Краснодар
Сообщений: 134


Цитата:
Сообщение от bargool Посмотреть сообщение
Ищем самый близкий к 1/3 вариант - список элементов из этого варианта кидаем на первую фазу.
Не нравится что-то мне эта 1/3. Искать надо все-таки минимум функции разницы. Т.е. Min(f), f=[max(сумма токов трех фаз)-min(сумма токов трех фаз)]/max(сумма токов трех фаз).

Сделал расчет по алгоритму sdv79 в excel`e (см. приложение) вроде нормально считает. К минимуму, конечно, не приводит, но раскидывает, в целом, приемлимо. (в файле скрытые столбцы, если что )
Вложения
Тип файла: rar Баланс по фазам.rar (19.7 Кб, 138 просмотров)
angel-fear вне форума  
 
Непрочитано 28.03.2013, 10:58
#14
bargool


 
Регистрация: 16.08.2006
Санкт-Петербург
Сообщений: 508
<phrase 1=


Цитата:
Сообщение от angel-fear Посмотреть сообщение
Не нравится что-то мне эта 1/3
Мне тоже не нравилась, пока не погонял алгоритм по своим реальным таблицам Да и всё ещё не нравится. Это компромисс скорость разработки/точность На более сложный алгоритм времени пока нет. Этот алгоритм плох ещё и тем, что если нагрузок 20, он работает ~6.5 секунд у меня, если их 21, уже ~13 секунд, 22 - ~24 сек...
O(2^n), как я уже говорил
Цитата:
Сообщение от angel-fear Посмотреть сообщение
К минимуму, конечно, не приводит, но раскидывает, в целом, приемлимо. (в файле скрытые столбцы, если что )
Python установлен? Если нет - киньте пару списков нагрузок, проверим эффективность Если да - марафет в коде наведу и выложу
__________________
Алексей
bargool вне форума  
 
Непрочитано 28.03.2013, 14:57
#15
sdv79

Инженер ЭОМ
 
Регистрация: 05.03.2009
Москва
Сообщений: 215
Отправить сообщение для sdv79 с помощью Skype™


angel-fear если по ПУЭ, то должно быть L1/L2/L3
sdv79 вне форума  
 
Непрочитано 28.03.2013, 15:07
#16
gesper

Проектирование разделов ЭО и ЭМ
 
Регистрация: 18.04.2009
Москва
Сообщений: 124


Цитата:
Сообщение от sdv79 Посмотреть сообщение
Фазировка- первая программа которую написал подробностей не помню. Ищем макс ток, присваиваем L1 (L1/L2/L3 выбираем случайно) выкидываем из списка следующий мак ток на L2, выкидываем из списка, след. макс ток на L3/ выкидываем. Суммируем состояние по каждой из L ищем мин, и к ней опять макс из токов, выкидываем, и так далее пока не закончатся потребители.

Многие ошибочно делают фазировку по мощности это ошибка.

Простая математика. ))
Увы, в одних нормах говорится про мощность, в других про ток. Поэтому, кое кто делает расчеты на основе мощности.


ИМХО, распределять по фазам должен человек, а не программа. Программа должна только считать и показывать сколько перекос по фазам получается.
gesper вне форума  
 
Непрочитано 28.03.2013, 15:48
#17
bargool


 
Регистрация: 16.08.2006
Санкт-Петербург
Сообщений: 508
<phrase 1=


Цитата:
Сообщение от gesper Посмотреть сообщение
ИМХО, распределять по фазам должен человек, а не программа. Программа должна только считать и показывать сколько перекос по фазам получается.
Я сейчас нашёл пару своих таблиц расчётов нагрузок старых, где я когда-то распределял вручную по фазам, а эксель мне "считал и показывал сколько перекос по фазам". Перекосы 10-15 %. Прогнал через программу - доли процента. Вы любите рутину и ручной труд? Или предпочитаете умственный труд, а нудную работу пусть компьютер сделает?
__________________
Алексей
bargool вне форума  
 
Непрочитано 28.03.2013, 16:24
#18
sdv79

Инженер ЭОМ
 
Регистрация: 05.03.2009
Москва
Сообщений: 215
Отправить сообщение для sdv79 с помощью Skype™


gesper покажите где фазировка по мощности? Это не правильно. Ввиду того что у потребителей при равной мощности может быть разный ток, прямая зависимость от cosf, как следствие будет неравномерная загрузка по фазам. Делайте только по токам.
Если будете в программке "mySchema" считать она вам покажет и перекос. (mySchema\DWG\Схема.dwg)
sdv79 вне форума  
 
Непрочитано 13.04.2013, 13:01
#19
bargool


 
Регистрация: 16.08.2006
Санкт-Петербург
Сообщений: 508
<phrase 1=


Цитата:
Сообщение от angel-fear Посмотреть сообщение
Сделал расчет по алгоритму sdv79 в excel`e (см. приложение) вроде нормально считает. К минимуму, конечно, не приводит, но раскидывает, в целом, приемлимо. (в файле скрытые столбцы, если что )
Кстати, с трудом себе представляю щит, где столько однофазных нагрузок, как в этом экселевском файле. За мою недолгую практику больше 20 однофазных автоматов в одном щитке и не было, вроде как
__________________
Алексей
bargool вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Баланс однофазных нагрузок



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Эквивалентное сечение. Saha Расчетные программы 43 02.10.2013 08:15
Сбор нагрузок на плиту ростверка o_O Основания и фундаменты 4 13.03.2013 20:47
Не маловато ли армирование колонн? Saiph Лира / Лира-САПР 17 29.03.2011 13:27
Учет длительных и кратковременных нагрузок на перекрытиях EUDGEN Конструкции зданий и сооружений 131 15.08.2009 08:24
Влияние времени действия нагрузок. Corax Прочее. Архитектура и строительство 8 06.05.2009 14:06