2015-06-03 22 views
11

मैं एक बहुत बड़े सर्किट पर वोल्टेज परिवर्तन की प्रोग्रामेटिक गणना करने की कोशिश कर रहा हूं।संयोजन सर्किट में वोल्टेज की गणना करने के लिए मैं किस एल्गोरिदम का उपयोग करता हूं?

* यह प्रश्न इलेक्ट्रॉनिक्स की ओर तैयार हो सकता है, लेकिन यह डेटा के एक सेट पर एल्गोरिदम लागू करने के बारे में अधिक है।

चीजों को सरल रखने के लिए,
यहाँ एक पूरा सर्किट है, वोल्टेज पहले से ही गणना के साथ:

:

enter image description here

मैं मूल रूप से केवल बैटरी वोल्टेज और प्रतिरोध को देखते हुए कर रहा हूँ

enter image description here

मेरे पास समस्या यह है कि वोल्टेज की गणना की जाती है समानांतर और श्रृंखला सर्किट के बीच अलग-अलग।
A somewhat similar question asked on SO.

कुछ फ़ार्मूला:

When resistors are in parallel:
Rtotal = 1/(1/R1 + 1/R2 + 1/R3 ... + 1/Rn)

When resistors are in series:
Rtotal = R1 + R2 + R3 ... + Rn

ओम का नियम:

V = IR
I = V/R
R = V/I

V is voltage(volts)
I is current(amps)
R is resistance(ohms)

हर ट्यूटोरियल मैं इंटरनेट पर पाया है धारणात्मक एक साथ समानांतर सर्किट समूहीकरण लोगों के होते हैं कुल प्रतिरोध प्राप्त करने के लिए, और फिर श्रृंखला में प्रतिरोध की गणना करने के लिए उस प्रतिरोध का उपयोग करना।

enter image description here

यह छोटा सा उदाहरण के लिए ठीक है, लेकिन यह बड़े पैमाने पर सर्किटों के लिए इसे से बाहर एक एल्गोरिथ्म प्राप्त करने के लिए मुश्किल है।

मेरा प्रश्न:
सब पूरा रास्तों में से एक मैट्रिक्स को देखते हुए,
वहाँ मेरे लिए एक तरह से सभी वोल्टेज बूँदें गणना करने के लिए है?

मेरे पास वर्तमान में ग्राफ़ डेटा संरचना के रूप में सिस्टम है।
सभी नोड्स को एक आईडी संख्या का प्रतिनिधित्व किया जाता है (और इसे देखा जा सकता है)।

इसलिए उपरोक्त उदाहरण के लिए, अगर मैं traversals चलाने के लिए, मैं वापस रास्तों की एक सूची इस तरह मिल जाएगा:

[[0,1,2,4,0] 
,[0,1,3,4,0]] 

प्रत्येक संख्या वास्तविक नोड प्राप्त करने के लिए इस्तेमाल किया जा सकता है और यह संबंधित डेटा है। डेटा के इस सेट पर मुझे किस प्रकार के परिवर्तन/एल्गोरिदम प्रदर्शन करने की ज़रूरत है?


यह बहुत संभव है कि सर्किट के कुछ भागों यौगिक हो जाएगा, और उनमें से यौगिक वर्गों मिल सकता है खुद को समानांतर या अन्य यौगिक वर्गों के साथ श्रृंखला में किया जा रहा है।

मुझे लगता है कि मेरी समस्या यह जैसा है:
http://en.wikipedia.org/wiki/Series-parallel_partial_order

+1

क्या आपके सर्किट यौगिक समानांतर या श्रृंखला है? या इसमें ब्रिज सर्किट हो सकता है? –

+3

आप किरचॉफ के कानून को देखना चाहते हैं: http://en.wikipedia.org/wiki/Kirchhoff%27s_circuit_laws इसका उपयोग हल करने के लिए रैखिक समीकरणों का एक सेट प्राप्त करने के लिए किया जा सकता है। – Henry

+0

@PhamTrung अच्छा सवाल। कोई पुल नहीं शुद्ध समानांतर और श्रृंखला। –

उत्तर

0

मुझे लगता है कि यहां जाने का रास्ता कुछ इस तरह होगा:

  1. सब क्रमबद्ध ही लंबाई के समूहों में अपने पथ।
  2. जबकि एक से अधिक समूह हैं, समूह को सबसे बड़ी लंबाई के साथ चुनें और:
    2a। एक आइटम अंतर के साथ दो पथ खोजें।
    2 बी। लम्बाई के साथ उन्हें पथ में "मर्ज करें" - विलय वास्तविक वस्तुओं पर निर्भर है जो भिन्न हैं।
    2 सी। प्रासंगिक समूह में नया पथ जोड़ें।
    2 डी। यदि एक से अधिक आइटम अंतर वाले पथ हैं, तो अलग-अलग आइटम मर्ज करें ताकि आपके पास पथ के बीच केवल एक अलग आइटम हो।
    2e। जब केवल एक आइटम छोड़ा जाता है, तो न्यूनतम अंतर के साथ "निचला" (= लंबाई छोटी होती है) से कोई आइटम ढूंढें, और आइटम को मिलान करने के लिए मर्ज करें।
  3. जब एक समूह एक से अधिक आइटम के साथ छोड़ा जाता है, तो एक आइटम के साथ एक समूह छोड़ने तक # 2 करना जारी रखें।
  4. उस आइटम के मूल्य की सीधे गणना करें।

यह बहुत प्रारंभिक है, लेकिन मुझे लगता है कि मुख्य विचार स्पष्ट है।
कोई भी सुधार स्वागत है।

2

अधिकतम प्रवाह एल्गोरिदम का उपयोग करें (डिजस्ट्रा आपका मित्र है)।

http://www.cs.princeton.edu/courses/archive/spr04/cos226/lectures/maxflow.4up.pdf

आप एक पानी के प्रवाह समस्या के सामने होने का नाटक (ठीक है, वास्तव में यह एक प्रवाह समस्या है)। आपको प्रत्येक खंड (वर्तमान) पर पानी के प्रवाह की गणना करना है। फिर आप आसानी से प्रत्येक प्रतिरोधी में वोल्टेज ड्रॉप (पानी के दबाव) की गणना कर सकते हैं।

+0

यह सच नहीं है, अधिकतम प्रवाह एल्गोरिदम अलग है क्योंकि शीर्षकों में कोई वोल्टेज ड्रॉप नहीं माना जाता है, इसलिए किनारों की क्षमताओं को ठीक किया जाता है लेकिन विद्युत सर्किट में वोल्टेज ड्रॉप के साथ बढ़त की क्षमता बदल जाती है। अपने आप से आचरण एक किनारे की क्षमता को परिभाषित नहीं करता है लेकिन वोल्टेज ड्रॉप के साथ यह आपको किनारे में सटीक प्रवाह दे सकता है। क्या आप कमी कर सकते हैं और साबित कर सकते हैं कि यह अधिकतम प्रवाह समस्या के समान है? –

3

कुछ सर्किटों का भी श्रृंखला और समानांतर के संदर्भ में विश्लेषण नहीं किया जा सकता है, उदाहरण के लिए एक सर्किट जिसमें edges of a cube शामिल है (उस वेब पेज के नीचे कुछ कोड है जो मददगार हो सकता है; मैंने इसे नहीं देखा है)। एक और उदाहरण जिसे श्रृंखला/समांतर में विश्लेषण नहीं किया जा सकता है वह एक पेंटगोन/पेंटग्राम आकार है।

श्रृंखला और समांतर के बारे में सोचने से अधिक मजबूत समाधान Kirchhoff's laws का उपयोग करना है।

  1. आपको सर्किट के प्रत्येक रैखिक अनुभाग में धाराओं के लिए चर बनाने की आवश्यकता है।
  2. Kirchhoff के वर्तमान कानून (केसीएल) को नोड्स पर लागू करें जहां रैखिक अनुभाग मिलते हैं।
  3. Kirchhoff के वोल्टेज कानून (केवीएल) को चक्रों पर लागू करें जैसा आप पा सकते हैं।
  4. को समीकरणों की रैखिक प्रणाली को हल करने के लिए गॉसियन उन्मूलन का उपयोग करें।

मुश्किल हिस्सा चक्र की पहचान कर रहा है। उदाहरण में आप देते हैं, तीन चक्र होते हैं: बैटरी और बाएं प्रतिरोधी, बैटरी और दाएं प्रतिरोधी, और बाएं और दाएं प्रतिरोधकों के माध्यम से। प्लानर सर्किट के लिए चक्रों का पूरा सेट ढूंढना बहुत मुश्किल नहीं है; तीन आयामी सर्किट के लिए, यह कठिन हो सकता है।

आपको वास्तव में सभी चक्रों की आवश्यकता नहीं है। उपर्युक्त उदाहरण में, दो पर्याप्त होंगे (दो बाध्य क्षेत्रों के अनुरूप जिसमें सर्किट विमान को विभाजित करता है)। फिर आपके पास तीन चर (सर्किट के तीन रैखिक हिस्सों में धाराएं) और तीन समीकरण (शीर्ष नोड पर धाराओं का योग जहां तीन रैखिक खंड मिलते हैं, और वोल्टेज दो चक्रों के आसपास गिरता है)। गॉसियन उन्मूलन द्वारा धाराओं के लिए सिस्टम को हल करने के लिए पर्याप्त है, तो आप धाराओं से वोल्टेज की गणना कर सकते हैं।

यदि आप बहुत से समीकरणों में फेंकते हैं (उदाहरण के लिए, आपके उदाहरण में दोनों नोड्स पर धाराएं, और दो के बजाय तीन चक्रों पर वोल्टेज), चीजें अभी भी काम कर रही हैं: गाऊसी उन्मूलन केवल अनावश्यकताओं को खत्म कर देगा और आप अभी भी अद्वितीय, सही उत्तर प्राप्त करें। वास्तविक समस्या यह है कि यदि आपके पास बहुत कम समीकरण हैं। उदाहरण के लिए, यदि आप अपने उदाहरण में दो नोड्स और केवीएल पर केवल एक चक्र के आसपास केसीएल का उपयोग करते हैं, तो आपके पास तीन समीकरण होंगे, लेकिन एक अनावश्यक है, इसलिए आपके पास वास्तव में दो स्वतंत्र समीकरण होंगे, जो पर्याप्त नहीं है। तो मैं कहूंगा कि आप जो समीकरण पा सकते हैं उसे फेंक दें और गॉसियन उन्मूलन को हल करें।

और उम्मीद है कि आप प्लानर सर्किट तक सीमित हो सकते हैं, जिसके लिए चक्रों का एक अच्छा सेट ढूंढना आसान है। अन्यथा आपको ग्राफ चक्र गणना एल्गोरिदम की आवश्यकता होगी। मुझे यकीन है कि अगर आपको इसकी ज़रूरत है तो आप एक पा सकते हैं।

संबंधित मुद्दे