We have a pipe transporting discrete particles from a to c with max flow capacity of $C$ particles/second. It takes $d_{min}$ seconds to get from a to c when the pipe is not fully utilized (details below.)
There are n flows through this pipe that can share the max flow. The rate of each flow is adjustable. A flow is $fair$ if it takes no more than $C/n$ capacity.
We have the ability to change the rate of our own flow, but have no explicit information about the total number of other flows sharing the pipe, but do know max capacity $C$ of the pipe.
All other flows increase at the same rate $r$ (though we do not know what it is), and decrease at the same rate $d$ when needed. The other flows and are fair if and only if all flows are fair. The other flows also have a max flow rate but we do not know what it is.
We wish that our flow only takes its fair share, that is never more than $C/n$.
Additionally we are receiving readings on a regular basis b_{i}, say every second of the time it takes for our particles to get from a to c. When the total flow from all flows is less than some threshold $D < C$, there is no delay but above $D$ there is delay, and that delay is proportional to the total flow in the pipe (summation of all flows).
That is $b_{i} = d_{min} + x$ where $x$ is linearly proportional to total flow in the pipe
Currently our flow rate is governed by an equation $y_{i+1} = 0.5(d_{min}/b_{i+1})y_{i} + 0.5(y_{i} + (b_{i+1}-d_{min})C)$?
where $b_{i}$ is the reading of the time it takes to get from a to c, $C$ is the capacity of the pipe, and $d_{min}$ is the time it takes us to get from a to c under no delay. The idea here is we adjust the rate with feedback from the system when there is greater delay.
We think we need to change the equation to include a term that takes into account some rate of change of $b_{i+1}$ over time to back out how many flows there are. Is this correct? If so how do we determine what that should be, if not will our equation allow us to get to the fair share?