我正在尝试设计一个简单的算法,它将标准电阻值的向量与所需电阻值的输入一起,然后通过串联和并联组合,计算出通过串联和并联电阻的任意组合实现等效电阻所需的最小标准电阻数量。
有人有什么想法吗?如果我只想并联或串联,这将是容易得多,但不确定如何结合这两个最小的电阻总数。
仅供参考,如果您不知道总系列R= S1 + S2 + ...+ SN和总并行R= (1/S1 + 1/S2 + ... + 1/SN)^-1
发布于 2015-04-18 06:13:57
创建一个对象以保存一个电阻值,加上该值所来自的两个电阻,再加上用于从前两个值(串联或并联)中获取该值的操作。
使用一些集合数据结构,如Set或ArrayList来保存阻力对象。您的set S1最初只包含您拥有的电阻(1个电阻组成的网络)。现在创建一个集合S2,它是S1的元素和S1的元素的所有组合(串行或并行)。S3是S1和S2的组合。S4是S1和S3的组合,加上S2和S2的组合。继续下去,直到Sk的一个成员在目标值的容差(比如1%、5%或10% )内。生成的阻力对象可以一次一个步骤地展开,以找到它构建的方式。
您需要考虑的另一件事是公差是如何组合的。错误将会传播,因此您可能需要1%的电阻才能在结束时达到您想要的电阻,比如5%的容差。
发布于 2015-04-18 07:15:46
也许遗传算法是最好的?我不知道大O符号的计算方法,但它看起来是指数的: O(cⁿ)。
我在另一个网站的post上发现了这条评论,它是使用不同值的电阻(即蛮力)可以达到的变化数量:
具有1个电阻器的网络:1
具有2个电阻器的网络:2
具有3个电阻器的网络: 10
具有4个电阻器的网络: 68
具有5个电阻器的网络: 558
具有6个电阻器的网络: 5186
具有7个电阻器的网络: 53805
遗传算法将避免暴力,可能会让你更快地得到答案。不幸的是,它不能保证用最少的电阻来回答问题。它很可能以更少的功找到接近的等效电阻值,并且它可以被加权,以便它有利于尽可能少的电阻。
我会继续研究这一点,并发布我发现的任何其他东西。
https://stackoverflow.com/questions/29709768
复制相似问题