I'm trying to design an algorithm that takes in a resistance value and outputs the minimum number of resistors and the values associated with those resistors. I would like the algorithm to iterate through a set of resistor values and the values in the set can be used no more than n times. I would like some direction on where to start.
Series: Req = R1 + R2 +...
Parallel: (1/Req) = (1/R1) + (1/R2)  +...
Input:
100000 (100k)
Set: {30k, 50k, 80k, 200k}
Output: 
2 resistors in series: 50k + 50k 
2 resistors in parallel: 200k || 200k
This is actually quite hard, best I can do is propose an idea for an algorithm for solving the first part, the concept of including parallels looks harder as well, but maybe the algorithm can be extended.
If you define a function "best", which takes a target resistance as input and outputs the minimal set of resistors that generates that resistance. E.G: if you only had 10K resistors, best(50K)=5*10K.
This function "best" has the following properties for a set of available resistors [A, B, C,...]:

best(A) = A for any A in the set.
best(Target) = min(best(Target-A) + A), best(Target-B) + B,...)
best(0)=0
best(x)=nonsense, if x<0 (remove these cases)

This can be used to reductively solve the problem. (I'd probably recommend storing the variables down the tree as you go along.
Here's an example to illustrate a bit:

AvailableSet = [10K, 100K]
Target = 120K
First iteration:
best(120K) = min[ best(110K) + 10K, best(20K) + 100K]
calculate each subtree:
best(110K) = min[best(100K) + 10K, best(10K) + 100K]
This is now finalised as we can calculate everything in the min(_) by using the properties, so work back up the tree:
best(110K) = 100K + 10K ( I suppose if there is a tie like in this case pick a permuation randomly)
best(120K) = min[best(110K) + 10K , best(20K) + 100K] = ... = 100K + 10K + 10K
That should work as a solution to the first half of the problem, you may be able to extend this by adding extra properties, but it will make it harder to solve the problem reductively in this way.
Probably the best way is to solve this first half of the problem and use a different algorithm to find the best solution using parallels and decide which is minimal in each case.
Algorithm to find minimum number of resistors from a set of resistor values. (C++ or Python)