三队列排队论仿真(Java)

该博客介绍了一个三队列一服务站的计算机网络模型,其中包的到达和服务遵循泊松分布。由于实时模型可能引入误差,博主选择使用时间轴模拟方法,通过带赤字的时间片模型进行轮询服务。博客还提供了Java实现代码,并提到可用MATLAB进行数据分析和绘图。
摘要由CSDN通过智能技术生成

计算机网络相关,设计一个三队列一服务站的模型,三队列发包符合泊松分布,服务站对每个包有一定的服务速率,包的大小也符合泊松分布。

问题分析:如果采用实时模型,计算机内部的调度算法会占用一部分时间,导致实验结果不准确,因此采用时间轴的方法来模拟实时的发包和处理包的过程。

首先拟采用带赤字的时间片模型,三个基站持续按照泊松分布向三个队列发包,服务器采用一定的时间片,对三个队列进行轮询,每次对一个队列的服务时间不超过一个时间片。

实现方法:首先创建三个队列,运行生产(发包)程序,在队列中存储一定数量的pack对象,此时按照泊松分布为每个pack赋予到达时间属性。  然后运行消费(服务)程序,计算并且输出结果,在运行过程中,消费(服务)程序维护一个时间轴变量,以对pack的时间属性进行判断(这就是问题分析中描述的时间轴方法)。

代码如下:(为防止山东大学刘磊老师的学生们不自己思考直接copy,包含一些小错误,不过能运行)

pack:

public class pack {
	public int index;
	public double comeTime;
	public double leafTime;
	public double servTime;
	public double waitTime;
	public pack(int index) {
		this.index = index;
	}
	public void CalLeaf(double tt) {
		waitTime = (tt - comeTime);			//暂定为这样把,实际应该传入
	}
}
Prod:

import java.util.ArrayList;
public class Prod {
	int index;
	double  lamda;
	ArrayList<pack> queue;
	int length;
	double currentTime;     //用于记录当前时间线
	public ArrayList<Integer> lengthDis;
	public Prod(double lamda) {
		this.lamda = lamda;
		queue = new ArrayList<pack>();
		lengthDis = new ArrayList<Integer>();
	}   
	public Prod(int index,double lamda) {
		this.index = index;
		this.lamda = lamda;
		queue = new ArrayList<pack>();
		lengthDis = new ArrayList<Integer>();
	}
	public void getLength() {
	
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值