roboforum.ru

Технический форум по робототехнике.
Текущее время: 17 фев 2025, 08:12

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 55 ]  На страницу 1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения: Подбор резисторов из ряда
СообщениеДобавлено: 19 мар 2013, 12:19 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
Помогите решить задачку. Надо придумать алгоритм набора произвольного сопротивления Rx из N последовательно соединенных резисторов стандартных номиналов. Пока решаю перебором, но надо что-то пошустрее.

Простейший алгоритм - на каждом шаге берем максимальное сопротивление R из ряда, не большее Rx. Затем присваиваем Rx=Rx-R, и повторяем. Останавливаемся при достижении заданной точности, или после N итераций. Хотя это конечно и быстро, но по сравнению с перебором во многих случаях дает либо более длинные цепочки при той же точности, либо меньшую точность при той же длине цепочки.

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подбор резисторов из ряда
СообщениеДобавлено: 19 мар 2013, 12:37 
Не в сети
Аватара пользователя

Зарегистрирован: 10 ноя 2011, 12:02
Сообщения: 5691
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья
Гуглить
Линейное программирование
Симплекс-метод

ЕМНИП

Добавлено спустя 5 минут 19 секунд:
Кстати, у вас перебор оптимизирован? например, когда перебираем цепочки, все время храним "чемпиона" - самую лучшую из найденных. Перебирая остальные, заранее отбрасываем цепочки которые достигли той же длины. Такая простецкая оптимизация очень часто разгоняет переборные алгоритмы в десятки раз.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подбор резисторов из ряда
СообщениеДобавлено: 19 мар 2013, 12:56 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
"Задача о ранце", не? Ну, вариация...
Вы реализовали "Жадный алгоритм"
Не существует оптимального решения.

Добавлено спустя 43 секунды:
N - какого порядка?

Добавлено спустя 2 минуты 8 секунд:
А может и не "задача о ранце".... Хм...

Добавлено спустя 4 минуты 20 секунд:
elmot писал(а):
когда перебираем цепочки, все время храним "чемпиона" - самую лучшую из найденных.

Это называется Метод ветвей и границ http://ru.wikipedia.org/wiki/%D0%9C%D0% ... 0%B8%D1%86


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подбор резисторов из ряда
СообщениеДобавлено: 19 мар 2013, 13:15 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
elmot писал(а):
когда перебираем цепочки, все время храним "чемпиона" - самую лучшую из найденных. Перебирая остальные, заранее отбрасываем цепочки которые достигли той же длины.

Да, такое есть. Но все равно скорость очень быстро падает с ростом длины ряда.

Michael_K писал(а):
Не существует оптимального решения.

Это понятно.

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подбор резисторов из ряда
СообщениеДобавлено: 19 мар 2013, 13:21 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
Какого порядка цифры? Ряд резисторов действительно "стандартный" (в нем можно найти закономерность?)...
Он неограничен в обе стороны? (то есть от пикоом до тераом :))
Если ряд не очень длинный, то, вероятно, имеет смысл дополнить его наборами всех "пар резисторов" (троек, четверок и т.д.)
А потом уже натравить ваш "жадный" алгоритм.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подбор резисторов из ряда
СообщениеДобавлено: 19 мар 2013, 13:24 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
http://www.coolcircuit.com/tools/resist ... /index.php

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подбор резисторов из ряда
СообщениеДобавлено: 19 мар 2013, 13:25 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
И чем ограничен перебор? Числом резисторов в цепочке? Точностью попадания в значение?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подбор резисторов из ряда
СообщениеДобавлено: 19 мар 2013, 13:30 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
А какой интерес? Академический? Или практчиеский? Если практический, то плясать надо от:
1) Числа резисторов -> чем меньше, тем лучше
2) Наличия резисторов -> Давно замечено, что всегда не хватает резисторов 1К, 4К7, 10К и т.д., но полно всяких 1К2, 6К2 и т.д.
3) Точности -> Зачем мне подбирать на пуллап связку резисторов 5245Ом, если я могу воткнуть любой в диапазоне 2К-10К???

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подбор резисторов из ряда
СообщениеДобавлено: 19 мар 2013, 13:33 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
dccharacter, а ссылка тут при чем тут каким боком?

Michael_K, задача общего характера. То есть ряд бесконечный. И да, он именно стандартный. Уже для E24 размер массива с парами будет внушительным.

Максимальная точность и минимальное число резисторов при количестве резисторов не больше N. Приоритет у точности.

Добавлено спустя 1 минуту 31 секунду:
dccharacter, задача это. математическая :)

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подбор резисторов из ряда
СообщениеДобавлено: 19 мар 2013, 14:00 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
Шкала логарифмическая (приблизительно). То есть, грубо, можно подбирать значения "слева направо".
Полный перебор - это алгоритм с отсечениями в небольшом диапазоне (перебор от Rx/2 до Rx - для ряда E24 это "всего" 7 или 8 значений).
Надо покумекать...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подбор резисторов из ряда
СообщениеДобавлено: 19 мар 2013, 18:30 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
короче обычный bsf поиск всегда найдет оптимальное решение с точки зрения и точности и количества резисторов.

Добавлено спустя 1 час 37 секунд:
Без эвристики на больших значениях время поиска стремилось к бесконечности. Приделал простенькую эвристику, которая сперва проверяла резисторы, максимально близкие к искомому значению. Считает почти мгновенно:

Please enter target resistance: 575675677
Solution: 575675677.0 , resistors used: (1.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 2200000.0, 160000.0, 15000.0, 620.0, 56.0)
Error is: 0.0 (0.000000)

Добавлено спустя 3 минуты 27 секунд:
Please enter target resistance: 56757567.7
Solution: 56757567.7 , resistors used: (1.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 9100000.0, 2000000.0, 150000.0, 7500.0, 62.0, 4.7)
Error is: 0.0 (0.000000)

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подбор резисторов из ряда
СообщениеДобавлено: 19 мар 2013, 18:41 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
dccharacter писал(а):
короче обычный bsf поиск всегда найдет оптимальное решение

Вы как отличаете оптимальное решение от неоптимального? :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подбор резисторов из ряда
СообщениеДобавлено: 19 мар 2013, 19:42 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
по количеству резисторов. 1 резистор = 1 единица стоимости.
Конечно, можно задать стоимость резисторам (например, соответствующую реальной стоимости или величине, обратной количеству имеющихся резисторов конкретного номинала)
Все это лишь усложнит задачу с точки зрения выработки функции оценки

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подбор резисторов из ряда
СообщениеДобавлено: 19 мар 2013, 20:10 
Не в сети
Аватара пользователя

Зарегистрирован: 15 сен 2007, 13:03
Сообщения: 6338
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович
blindman писал(а):
То есть ряд бесконечный. )

а я хотел ГА предложить... если на конечных рядах работать..

_________________
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подбор резисторов из ряда
СообщениеДобавлено: 19 мар 2013, 20:24 
Не в сети

Зарегистрирован: 03 янв 2012, 12:55
Сообщения: 3298
Откуда: Москва
прог. языки: VB6, BASCOM, ASM...
в андроид маркете есть готовые приложения (наша и забугорная)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 55 ]  На страницу 1, 2, 3, 4  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO