`
PatternCat
  • 浏览: 8648 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

4.多设备串联

阅读更多
某制造系统有5个工作站(station),任务到达的间隔时间服从以0.85小时为均值的指数分布。有1、2、3三种任务,他们出现的概率分别是:0.3,0.5,0.2。三种任务分别要完成4、3、5个流程,而且要求以一定的顺序在指定的工作站上进行。模拟3000小时的情形,统计每个工作站的平均等待时间。

思路:
事件:新任务到达和5个离开工作站事件
1.新任务到达:
  安排下一个新任务的到达,确定本次任务的类型和到达工作站的次序,执行到达工作站i。
2.到达工作站i:
  若设备忙,进入等待队伍,记录等待时间;若设备闲,占用设备,安排它服务完成离开的时间。
3.任务离开工作站:
  若等待队伍为空,则设备设闲,下一次离开时间无穷;
  若等待队伍不空,则安排队首占用设备,计算他的等待时间;
  判断这个离开的任务是否完成所有的流程:
  若没有,则确定下一个工作站,执行到达工作站j。

java程序:
到达系统:
private void arriveSystem(Event e) {
		this.arriveTaskNumber++;
		this.currentTime=e.getTime();
		
		Event e1=new Event();
		e1.setEventType(Event.arriveType);
		e1.setTime(this.currentTime+this.GenerateExpRandom(theta1));
		eventList.add(e1);
		
		int taskType=this.generateTaskType();
		Task task=new Task(this.arriveTaskNumber,this.currentTime,taskType);
		task.setServiceTime(this.GenerateExpRandom(task.getServiceExp().getFirst()));
		arriveStation(task);
		
	}


执行到达工作站i:
	private void arriveStation(Task arriveTask) {
		//获得本工作站的编号
		int stationNo=arriveTask.getDeviceNumbers().getFirst();
	//	System.out.println("stationNO:"+stationNo);
		//System.out.println("is queue null:"+queue[stationNo].getQueue().isEmpty());
		
		System.out.println("at "+this.currentTime+" taskId:"+arriveTask.getTaskId()+" taskType:"+arriveTask.getTaskType()+" arrive station:["+stationNo+"].");
		if(statusBusy[stationNo]==true){
			//设备忙
		
			arriveTask.setArriveTime(this.currentTime);
			
			
		}else{
			//设备闲,由闲设忙
			statusBusy[stationNo]=true;
			//设定离开本工作站的时间
			Event e=new Event();
			e.setDepartStationNo(stationNo);
			e.setEventType(Event.departType);
			e.setTime(this.currentTime+arriveTask.getServiceTime());
			eventList.add(e);
		}
		
		//流程和服务时间指数前移--设定下个到达的工作站和服务时间
		arriveTask.getDeviceNumbers().removeFirst();
		arriveTask.getServiceExp().removeFirst();
		if(!arriveTask.getDeviceNumbers().isEmpty())
		   arriveTask.setServiceTime(this.GenerateExpRandom(arriveTask.getServiceExp().getFirst()));
		
		queue[stationNo].getQueue().add(arriveTask);
		//将刚到达的也放进队列,方便以后它离开给工作站时确定时间。
		//这样以后实际的队列长度为queue的length-1
		//放在最后以保存修改
		
	}


离开工作站:
private void depart(Event e) {
		this.currentTime=e.getTime();
		int stationNo=e.getDepartStationNo();
		Task departTask=queue[stationNo].getQueue().getFirst();
		//System.out.println("should depart stationNO:"+stationNo+" but it really depart:"+departTask.getDeviceNumbers().getFirst());
		queue[stationNo].getQueue().removeFirst();
		//将这个即将离开该工作站的任务移除队列。
		
		if(queue[stationNo].isQueueEmpty()){
			statusBusy[stationNo]=false;
			
		}else{
			
			//计算等待时间
			double totalWaitingTime=queue[stationNo].getTotalWaitingTime();
			queue[stationNo].setTotalWaitingTime(totalWaitingTime+this.currentTime-departTask.getArriveTime());
			int taskNumber=queue[stationNo].getTaskNumber();
			queue[stationNo].setTaskNumber(taskNumber+1);
			
			Task nextDepartTask=queue[stationNo].getQueue().getFirst();
			Event e1=new Event();
			e1.setDepartStationNo(stationNo);
			e1.setEventType(Event.departType);
			e1.setTime(this.currentTime+nextDepartTask.getServiceTime());
			eventList.add(e1);
			
		}
		
		if(!departTask.getDeviceNumbers().isEmpty()){
			//如果还有为完成的流程
			
			this.arriveStation(departTask);
		}else{
			//任务完成,离开系统
			System.out.println("*****************************");
			System.out.println("at "+this.currentTime+" taskId:"+departTask.getTaskId()+" taskType:"+departTask.getTaskType()+" depart the system.");
			System.out.println("*****************************");
		}
		
	}


附件为事件为数组和链表的形式。
分享到:
评论

相关推荐

    RLC串联电路教学方案.doc

    * 使用实验设备或仿真软件来模拟RLC串联电路 * 观察和记录电压和电流的变化 〔五〕总结和评估 * 总结RLC串联电路的基本原理和计算方法 * 评估学生对RLC串联电路的理解和掌握情况 知识点 1. RLC串联电路的基本...

    行业文档-设计装置-多列串联推力圆锥滚子轴承.zip

    《多列串联推力圆锥滚子轴承》的行业文档主要涵盖了...综上所述,多列串联推力圆锥滚子轴承是工程领域中不可或缺的重要组件,其设计和应用涉及到多方面的专业知识,需要深入理解和掌握,以确保机械设备的高效稳定运行。

    行业分类-设备装置-串联式陶瓷多管除尘器.zip

    串联式陶瓷多管除尘器是一种广泛应用在工业生产过程中的高效环保设备,主要用于捕集和分离空气或气体中的粉尘颗粒,从而净化排放气体,减少环境污染。它结合了陶瓷材料的耐高温、耐磨蚀特性以及多管结构的设计理念,...

    电子政务-交流电机的串联补偿.zip

    4. **串联补偿的类型与选择**:介绍过补偿和欠补偿的概念,以及如何根据电机负载特性和电网条件选择合适的补偿方式。 5. **串联补偿的实际应用**:在电子政务场景下,如何利用串联补偿技术优化电力系统的运行,提升...

    1串联式稳压电路.rar.rar

    串联式稳压电路是电子工程领域中一种常见的电源稳压技术,主要应用于各种电子设备,以确保设备在电源电压波动时仍能获得稳定的输出电压。这种电路设计简单、成本较低,但性能上可能不如并联式或开关式稳压器。下面...

    RLC串联谐振电路的研究.pdf

    - 实验设备包括函数信号发生器、交流毫伏表、RLC串联电路实验板等。 - 需要记录的测量数据包括谐振频率、电阻、电容、电感上的电压和电流值。 - 对于不同电阻值(如330Ω和1KΩ),需要分别测定谐振频率和电流...

    串联电路分析.zip

    4. 电阻的等效:如果串联电路中的多个电阻具有相同的电流,可以通过它们的电阻值进行相加,得到等效电阻R_eq = R1 + R2 + ... + Rn。这使得分析复杂电路变得简单。 5. 功率的计算:每个元件消耗的功率P = I²R,...

    行业分类-设备装置-分组串联高效纸制品烘箱.zip

    2. 分组串联结构:分组串联设计是指烘箱内部被分成多个独立的干燥区,每个区域可以独立控制温度和风速,以适应不同湿度的纸张。这样不仅可以确保纸张在烘干过程中的均匀性,还可以根据生产工艺需求进行灵活调整。 3...

    行业分类-设备装置-具有串联的几个热泵的发电设备.zip

    4. **发电应用**:描述中的“发电设备”提示我们,这个系统可能用于热电联产(CHP,Combined Heat and Power)。串联热泵可以先提取低温热源的热量用于发电,产生的废热再被后续的热泵吸收,进一步提高能源的利用率...

    行业分类-设备装置-多管串联槽式太阳能集热管偏移检测与调节系统及方法.zip

    标题中的“行业分类-设备装置-多管串联槽式太阳能集热管偏移检测与调节系统及方法”表明,这是一个关于太阳能技术领域的专业文档,主要关注的是多管串联槽式太阳能集热系统的偏移检测与调节。在描述中,虽然没有提供...

    行业分类-设备装置-串联式太阳能热水装置.zip

    这种装置通过将多个太阳能集热器串联连接,形成一个连续的热能传递路径,从而实现对水或其他传热介质的加热。下面将详细探讨串联式太阳能热水装置的相关知识点。 1. **太阳能集热器**:太阳能集热器是串联式太阳能...

    电信设备-并纱机通讯串联控制系统.zip

    并纱机通讯串联控制系统是电信设备领域中的一个重要组成部分,它主要负责在生产过程中对多台并纱机进行高效、精确的通信控制。这种系统通过串行通讯技术将多台设备连接起来,形成一个整体的控制网络,从而实现设备间...

    行业分类-设备装置-串联两种光纤实现增益平坦的拉曼多波长转换器及方法.zip

    "行业分类-设备装置-串联两种光纤实现增益平坦的拉曼多波长转换器及方法.zip"这个压缩包文件包含了关于这种特殊转换器的详细技术资料,特别是通过串联两种不同类型的光纤来实现增益平坦的创新设计。 拉曼散射是一种...

    行业分类-设备装置-具有串联电容的开关电源.zip

    在“行业分类-设备装置-具有串联电容的开关电源”这一主题中,我们将深入探讨具有串联电容的开关电源设计、工作原理以及在实际应用中的优势和挑战。 串联电容在开关电源中的作用主要体现在以下几个方面: 1. **...

    RLC串联谐振电路考试题及答案.docx

    总之,RLC串联谐振电路是理解和分析复杂电路行为的关键,对于理解和设计通信系统、滤波器和许多其他电子设备至关重要。在教育中,掌握这些知识点有助于学生深入理解电磁学和电路理论,并为后续的工程实践打下坚实...

    单元串联多电平高压变频器技术分析

    ### 单元串联多电平高压变频器技术分析 #### 概述 随着工业自动化的不断进步,高压变频器作为一种重要的驱动控制设备,在工业领域尤其是大型生产设备中发挥着越来越重要的作用。其中,单元串联多电平高压变频器...

    主斜井水仓串联通风安全措施.docx

    4. **主斜井水仓巷道长度**: 大约5米。 5. **支护形式**: 锚网索+喷浆支护。 #### 三、组织管理措施 为了强化责任分配与明确分工,成立了串联通风管理领导小组,成员包括矿领导及相关部门负责人。各部门职责如下:...

    串联电路应用.zip

    6. **电源分配**:在电子设备内部,串联电路常被用来将电源电压分成多个部分,供不同组件使用。 7. **电阻加热器**:在某些加热设备中,电阻元件串联连接,根据需要的热量调节电阻值。 8. **电路教学与实验**:...

Global site tag (gtag.js) - Google Analytics