数据拟合条件的算法

时间:2015-07-20 16:17:38

标签: algorithm data-fitting

背景

我需要一种(某种)带宽估算算法。

有两个对等方,即发送方和接收方。发送方以(几乎)恒定比特率发送一些数据,每个数据包包含其本地时间(Ts)。 接收器偶尔(即不一定在每个接收到的数据包之后)发送反馈,其中包含发送者和接收者时间戳(TsTr)。

发送者的目标是,基于这些反馈,检测实际网络带宽和可能的拥塞。基于此,发送方应调整传输带宽。

假设:

  • 数据包丢失和重新排序可以忽略不计。
  • 带宽是一种缓慢变化的功能。也许甚至可以在一个相当小的时间窗内保持不变。
  • 拥塞(即延迟)是带宽过高的结果。简单来说,当发送的数据太多时,网络带宽就会饱和,额外的数据会累积在其中一个网络节点中。

现在,基于这些假设,我们有以下模型。定义:

  • i - 是反馈索引。
  • dTs[i] := Ts[i+1] - Ts[i]
  • dTr[i] := Tr[i+1] - Tr[i]
  • Q[i] - 是发送队列大小(以字节为单位)。在拥挤的情况下,它是非零的。
  • X[i] - 是发件人在[ii+1]间隔内传输的数据的大小。
  • B[i] - 是实际的网络带宽(缓慢变化,几乎不变)。即可以传输的最大带宽,没有拥塞累积。

问题

然后我们可以为i =>产生以下递归公式。 i+1过渡。

  • 网络饱和度标准:
    • Q[i] + X[i] >= B[i] * dTs[i]
  • 如果达到饱和度:
    • dTr[i] = X[i] / B[i]
    • Q[i+1] = Q[i] + X[i] - B[i] * dTs[i]
  • 否则:
    • dTr[i] = dTs[i] - Q[i] / B[i]
    • Q[i+1] = 0

B[i]Q[i]未知,dTs[i]dTr[i]X[i]已知。

现在,我需要一种算法来拟合未知数来满足递归公式。通过拟合,我的意思是最小化recusrsive公式中的残差,即预测dTr[i]与实际的对比。

问题是我们的递归公式包含条件(if),因此只能通过分析方法来完成拟合。此外,在某些情况下,无法推断出所请求的参数:如果带宽从未饱和,那么我们不知道B[i],我们只能猜测它的下限。如果总是出现拥堵,那么我们就不知道Q[i]的绝对值,我们只能预测它的变化。

但除了那些含糊不清(发送者都是不正常的,应该分开对待)之外,问题似乎是明确定义和可解决的。我试图找到一个有效的解决方案。

我能想到的一种方法是尝试替换init-guess条件,一旦知道问题变成分析并具有明确定义的解决方案。接下来,我们可以尝试所有条件变量,也可以每次更改其中一个变量,直到达到最优残差。

或者我们可以从B[i]Q[i]的init-guess开始,在每次迭代时计算残差及其导数w.r.t.两个参数,然后迭代调整它们。

我想知道数据是否适合条件是一个众所周知的合适解决方案的问题。

提前致谢。

0 个答案:

没有答案