分流算法:根据不同链路的效率比分配数据包
平分算法:等比划分数据包大小
import java.util.Random;
class Untitled {
public static void main(String[] args) {
myFunction();
}
public static double getAvgV(double[] vs, Random random) {
double result = 0;
for (double v : vs) {
v = v * 1000 * 1000 / 8 / 1024 / 1024;
if (random.nextBoolean()) {
result += v * (1 + random.nextDouble() / 10);
} else {
result += v * (1 - random.nextDouble() / 10);
}
}
return result / vs.length;
}
public static void myFunction(){
double[] array = {1, 1.5, 2, 2.5, 3, 3.5, 4}; //多链路数据分流算法分流比例
double[] array2 = {1, 1, 1, 1, 1, 1, 1}; //多链路数据平分算法平分比例
double size = 90; //固定比例分配的数据大小
double size2 = 10; //误差导致的分配数据大小
double[] vs = {87.15, 78.02, 70.55, 60.48, 53.12, 52.12}; //不同信号强度的速率
Random random = new Random();
double v = getAvgV(vs, random); //不同信号强度的速率平均值,正常应该是每种信号强度速率测20遍,取所有信号强度(丢包率为0的信号强度)速率的平均值
System.out.println("平均速率" +v);
double[] result = new double[array.length]; //多链路数据分流算法输出结果
double[] result2 = new double[array2.length]; //多链路数据平分算法输出结果
for (int i = 0; i < array.length; i++) {
double d = random.nextDouble(); //随机数,链路A和链路B数据分配存在的误差值
double sizeA = (size / (array[i] + 1)) + (size2 * d); //链路数据分流算法链路A接收数据大小
double sizeB = (size / (array[i] * (array[i] + 1))) + (size2 * (1 - d)); ////链路数据分流算法链路B接收数据大小
d = random.nextDouble(); //同上
double sizeA2 = (size / (array2[i] + 1)) + (size2 * d); //多链路数据平分算法链路A接收数据大小
double sizeB2 = (size / (array2[i] * (array2[i] + 1))) + (size2 * (1 - d)); ////多链路数据平分算法链路B接收数据大小
result[i] = Math.max(sizeA / v, sizeB / v); //由于两条链路同时传输,所以取耗时最长的时间为接收完数据的最终时间
result2[i] = Math.max(sizeA2 / v, sizeB2 / v);
}
System.out.println("链路数据分流算法:");
for (double x : result) {
System.out.print(x + " ");
}
System.out.println("\n多链路数据平分算法:");
for (double x : result2) {
System.out.print(x + " ");
}
}
}
运行结果:(每次结果不一样)
平均速率7.573186534987189
链路数据分流算法:
6.794903690780155 6.021106974387808 5.110256355937014 4.679775962058876 3.8554335717442387 2.670316944094455 3.450134949619518
多链路数据平分算法:
7.162718961502581 7.117080467937154 7.071036514391218 7.240359882634017 6.968370101559047 7.0666407455843 6.802022213666387
实验结果测试了从-10dbm到-60dbm不同信号强度下的速率,横坐标选取的速率比例分别为1、1.5、2、2.5、3、3.5和4,纵坐标为两种算法的时延,单位为秒,其中接收的数据内容大小固定为100MB,Wi-Fi链路和LTE链路分别接收50MB数据
网友评论