源代码基于蒙特卡罗的网络可靠性与可用性仿真软件_第1页
源代码基于蒙特卡罗的网络可靠性与可用性仿真软件_第2页
源代码基于蒙特卡罗的网络可靠性与可用性仿真软件_第3页
源代码基于蒙特卡罗的网络可靠性与可用性仿真软件_第4页
源代码基于蒙特卡罗的网络可靠性与可用性仿真软件_第5页
已阅读5页,还剩27页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JavaEdgepublicclassEdge{public{_pointIndex=new}publicvoidSetPointIndex(intpointIndex1,int{_pointIndex[0]=_pointIndex[1]=}{}{}{intiTypeLength=str.indexOf(",");Timertimer=null;StringstrType=str.substring(0,iTypeLength);{}{

StringstrAvg=str.substring(iTypeLength+1,iMiddleIndex);doubledAvg=Double.parseDouble(strAvg.trim());StringstrVar=str.substring(iMiddleIndex+1);timer=newZhengtaiTimer(dAvg,dVar);doubledAvg=timer=new}return}publicvoidGetIndex(int{{pointIndex[1]=}{}}

pointIndex[0]=pointIndex[1]=publicString{return}publicString{return}privateint_pointIndex[];privateString}Eventpackage class{publicEvent(doubletime,Net{_time= =_timerArray=new_iPointIndexArray=new}publicdoubleGetTime(){return //whattheEventDowhenithappen. voidActivate();{}{}{} void void//WhenwillthisEventhappenprotecteddouble_time;protectedNet_net;protectedint_iPointIndexArray[];protectedTimer_timerArray[];publicstaticint gITimerNum=2;publicstaticintgBreakTimerIndex=publicstaticintgMaintenanceTimerIndex=}classMaintenanceEventextends{publicMaintenanceEvent(doubletime,Net{}publicvoid{doubletimeInterval=_time=timeInterval+}publicvoid{intiPoint1=_iPointIndexArray[0];intiPoint2=_iPointIndexArray[1];if(iPoint2==0){}{}}

System.out.print("Point"+iPoint1+"getfixed!");System.out.print("Attime"+_time);System.out.print("Edgefrom"+iPoint1+","+iPoint2+"getfixed!");System.out.print("Attime"+_time);publicvoid{}{EventnextEvent=newBreakEvent(time,_net);return}}classBreakEventextends{publicBreakEvent(doubletime,Net{}publicvoid{doubletimeInterval=_time=timeInterval+}publicvoid{intiPoint1=_iPointIndexArray[0];intiPoint2=_iPointIndexArray[1];if(iPoint2==0){}{}}

System.out.print("Point"+iPoint1+"breaksdown!");System.out.print("Attime"+_time);System.out.print("Edgefrom"+iPoint1+","+iPoint2+"breaksdown!");System.out.print("Attime"+_time);{EventnextEvent=newMaintenanceEvent(time,_net);return}publicvoid{}}ExcelReaderimportjava.io.*;importjxl.*;publicclass{{{_fileName=_file=new}catch(Exception_iPointNum= =_iNetConNum=publicString{return}publicint{return}publicint{return}publicint{return}{{Sheetsheet=_book.getSheet(0);Cellcell=sheet.getCell(cellCol-1,cellRow-1);returncell.getContents();}catch(Exception{return}}publicvoidGetPointInfo(intpointNum,Point{Stringcontent[]=newfor(inti=0;i<_iPointDataWidth;i{content[i]=ReadCell(_iPointDataStartRow+pointNum-1,_iPointDataStartCol+}}publicvoidGetEdgeInfo(intedgeNum,Edge{Stringcontent[]=newfor(inti=0;i<_iEdgeDataWidth;i{content[i]=ReadCell(_iEdgeDataStartRow+edgeNum-1,_iEdgeDataStartCol+}}{intfor(i=0;i<_iPointNum;i{pointArray[i]=newPoint();GetPointInfo(i+1,pointArray[i]);}for(j=0;j<_iEdgeNum;j{edgeArray[j]=newEdge();GetEdgeInfo(j+1,edgeArray[j]);}}publicstaticvoidmain(String{BufferedReaderbufferReadernewBufferedReader(newInputStreamReader(System.in));{fileName=}catch(IOException{fileName=}ExcelReaderreader=newPoint[]pointArray=newPoint[reader.GetPointNum()];Edge[]edgeArray=newStringinputInt;int{inputInt=}catch(IOException{inputInt=}iStandard=double[][]resultArray=new{inputInt=}catch(Exception{return;}intiMaintenanceIndex={for(inti=0;i<iStandard;i{Netnet=newNet(pointArray,doublebreakTime=net.GetBreakTime();resultArray[i][0]=breakTime;resultArray[i][1]=maintenanceTime;}{

{inputInt=}catch(Exception{return;}doubletimeLimit=for(inti=0;i<iStandard;i{Netnet=newNet(pointArray,doublebreakTime=net.GetBreakTime();resultArray[i][0]=breakTime;resultArray[i][1]=maintenanceTime;}}{FilefilenewFile("分析结果WritableWorkbookworkBook=Workbook.createWorkbook(file);WritableSheetwsworkBook.createSheet("结果0);//创建可写工作表Labellabel1=newLabel(0,0,"网络故障时间");Labellabel2newLabel(1,0,"网络修复用时for(inti=0;i<iStandard;i{ }}catch(Exception{}}privateString_fileName;privateFile_file;privateintprivateintpublicstaticfinalint_iNetConNumRow=4;publicstaticfinalint_iNetConNumCol=6;publicstaticfinalint_iPointNumRow=2;publicstaticfinalint_iPointNumCol=4;publicstaticfinalint_iEdgeNumRow publicstaticfinalint_iEdgeNumCol =9;publicstaticfinalint_iPointDataStartRow=4;publicstaticfinalint_iPointDataStartCol=2;publicstaticfinalint_iEdgeDataStartRow publicstaticfinalint_iEdgeDataStartCol =7;publicstaticfinalint_iPointDataWidth =4;publicstaticfinalint =publicstaticfinalint_iWritePosRow publicstaticfinalint_iWritePosCol =1;NetpublicclassNet{{intiPointNum=_netHex=new_bEndPoint=new_iPointNum=for(inti=0;i<iPointNum;i{{}}

this._bEndPoint[i]=this._bEndPoint[i]=for(inti=0;i<edgeArray.length;i{intintArray[]=newint[2];_netHex[intArray[0]-1][intArray[1]-1]=_netHex[intArray[1]-1][intArray[0]-1]=}}publicvoidObjectBreakDown(intPoint1,int{if(Point2=={inti=Point1-for(intj=0;j<_iPointNum;j{{}}}//if

_netHex[i][j]-=_netHex[j][i]-={inti=Point1-1;intj=Point2-{_netHex[i][j]-=_netHex[j][i]-=}}}publicvoidObjectFixed(intPoint1,int{if(Point2=={inti=Point1-for(intj=0;j<_iPointNum;j{{}}}//if

_netHex[i][j]+=_netHex[j][i]+={inti=Point1-1;intj=Point2-{_netHex[i][j]+=_netHex[j][i]+=}}}publicbooleanWhetherConnected(int{_bFlagArray=newboolean[_iPointNum];intbiggestPointNum=0;for(inti=0;i<_iPointNum;i{{{_bFlagArray[i]=StrangeIntiCount=newStrangeInt();if(biggestPointNum<iCount.Value())}}}if(biggestPointNum<iStandard)returnfalse;elsereturntrue;}{TimeQueuequeue=newintfor(i=0;i<pointArray.length;i{PointtempPoint=TimerbreakTimer= EventcurrentEvent=newBreakEvent(0,this);}for(j=0;j<edgeArray.length;j{EdgetempEdge=TimerbreakTimer= EventcurrentEvent=newBreakEvent(0,this);intintArray[]=newint[2];}doubleeventTime={EventNodeeventNode=queue.GetHeadNode();if(eventNode!=null){Eventevent=eventNode.GetEvent();eventTime=eventNode.GetEventTime();{eventTime=timeLimit;_dBreakTime=eventTime;System.out.print("Reachthetimelimit\n");}//thisisfor}}_dBreakTime= tornodeI tor=queue.GenerateI tor!=null){ {Eventevent= StringclassName={doubletime=event.GetTime();if(time>queue.TimeNow()){}} }}}{TimeQueuequeue=newEvent[]eventArray=newEvent[pointArray.length+intfor(i=0;i<pointArray.length;i{PointtempPoint=TimerbreakTimer= eventArray[i]=newBreakEvent(0,this);}for(j=0;j<edgeArray.length;j{EdgetempEdge=TimerbreakTimer= eventArray[i+j]=newBreakEvent(0,this);intintArray[]=newint[2];eventArray[i+j].SetBreakTimer(breakTimer);eventArray[i+j].CalTime();}for(i=0;i<eventArray.length;i++{}//temporaryeventstacktostoremaintenanceeventEventQueueeventQueue=newEventQueue();doublebreakTime=0;{EventNodeeventNode=queue.GetHeadNode();if(eventNode!=null){Eventevent=eventNode.GetEvent();//thisisfor}}{_dBreakTime=0;}_dBreakTime=breakTime; tornodeI tor=eventQueue.GenerateI {EventNodeeventNode=nodeI Eventevent=eventNode.GetEvent();EventmaintenanceEvent=event.ProduceNextEvent(0);doubletempTime={maintenanceTime=} }_dMaintenanceTime=}publicdouble{return}publicdouble{return}{for(intj=0;j<_iPointNum;j{{{_bFlagArray[j]=true;{}}}}}privateint_iPointNum;privatedouble_dBreakTime;privateint_netHex[][];}class{public{_int=}publicvoidAdd(){_int++;}privateint}PointpublicclassPoint{publicPoint(){_index=}publicvoidSetIndex(intindex){_index= publicintGetIndex(){return_index;}{intiTypeLength=str.indexOf(",");Timertimer=null;StringstrType=str.substring(0,iTypeLength);{StringstrAvg=str.substring(iTypeLength+1,iMiddleIndex);doubledAvg=Double.parseDouble(strAvg.trim());StringstrVar=str.substring(iMiddleIndex+1);}{}

StringstrAvg=str.substring(iTypeLength+1,iMiddleIndex);doubledAvg=Double.parseDouble(strAvg.trim());timer=newreturn}publicString{return} {{}}

this._whetherEndPoint=this._whetherEndPoint=publicString{return}publicboolean{return}privateintprivateString_strBreakTime;privateboolean_whetherEndPoint;}publicclass{public{_eventQueue= =}publicEventNode{EventNodetempNode=_eventQueue;if(_eventQueue!=null)_eventQueue=return}{EventNodeprevNode=null;EventNodecurrentNode=null;if(_eventQueue=={_eventQueue=newEventNode(event,null);return;}EventNodenodeToInsert=newEventNode(event,null);currentNode=_eventQueue;{{{}}

prevNode=currentNode=if(prevNode=={}{}}

_eventQueue=publicdouble{return}public tor {if(_eventQueue!=null)return_eventQueue.GenerateI elsereturnnull;}publicvoidSetTime(double{_time=} }//classclass{publicEventNode(Eventevent,EventNode{_event=event;}_nextNode=}publicdouble{return}publicEventNode{return}publicEvent{return}public {returnnew }privateEvent}//classclass {public {_eventNode=}publicEventNode{return}publicboolean{if(_eventNode==null)returntrue;elsereturnfalse;}publicvoid{_eventNode=}}//Node class{public{_head=_tail=}publicvoidGetEvent(Event{EventNodeeventNode=newif(_head=={}{}}

_head=_tail=_tail=public {if(_head!=null)return_head.GenerateI elsereturnnull;}privateEventNode_tail;}Timerimportjava.util.*; class{ double}classZhengtaiTimerextends{publicZhengtaiTimer(doubleavg,double{_avg=_var=}publicdouble{Randomrd=newRandom();doublesum=0;for(inti=0;i<iRandomNum;i{sum+=}doubleavg=sum/iRandomNum;doublesqVar=Math.sqrt(_var);return(avg*sqVar+}staticintiRandomNum=12;privatedouble_avg;privatedouble}classZhishuTimerextends{{_var=}publicdouble{Randomrd=newRandom();doubleseed=1-rd.nextDouble();return(-(1/_var)*}privatedouble}VBAExcel对象EndSubPrivateSubWorkbook_Open()WithSheet1.EnableSelection=.ProtectEndSubPublicConstPointNumRow2PublicConstPointNumCol=4PublicConstPointDataStartRow=4PublicConstPointDataStartCol=2PublicConstEdgeDataStartRow=4PublicConstEdgeDataStartCol=7PublicConstEdgeNumRow2PublicConstEdgeNumCol=9PublicEdgeNumAsIntegerPublicPointNumAsPublicConstPointDataWidth=4PublicConstEdgeDataWidth=PublicConstNetConNumRow=4PublicConstNetConNumCol=6Sub添加节点WithSheets(1)DimcontextAscontext请选择故障分布:1.2.正态分布"DimstrForBreakTimeAsStringDimparam1AsStringDimparam2AsiBreakTimeInputBox(context选择故障分布")LoopUntiliBreakTime1)OriBreakTimeIfiBreakTime=1strForBreakTime指数分布param1InputBox("请输入参数")param2=""param1InputBox("请输入均值")=End.Cells(PointDataStartRow+PointNum,PointDataStartCol+1)=strForBreakTime&","¶m1&","¶m2context请选择维修时间分布:1.2.正态分布iBreakTimeInputBox(context选择维修时间分布")LoopUntil(iBreakTime=1)Or(iBreakTime=2)IfiBreakTime=1Thenparam2="param1InputBox("请输入均值")=EndwhetherendpointInputBox("YN")LoopUntil(whetherendpoint="Y")Or(whetherendpoint="N").Cells(PointDataStartRow+PointNum,PointDataStartCol+2)=strForBreakTime&","¶m1&","¶m2PointNum=PointNum+.Cells(PointNumRow,PointNumCol)=PointNumEndWith'withsheets(1)EndSub删除节点_Click()OnErrorGoToerrorWithSheets(1)IfPointNum<=0ThenExitSubEndDimpointDeletedAsIfpointDeleted0)OrpointDeletedPointNumThenMsgBox("节点不存在")EndIfDimiAsFori=pointDeletedTo.Cells(PointDataStartRow+i-1,PointDataStartCol)=.Cells(PointDataStartRow+i-1,PointDataStartCol)-1.Range(Cells(PointDataStartRow+pointDeleted-1,PointDataStartCol),Cells(PointDataStartRow+pointDeleted-1,PointDataStartCol+PointDataWidth-1)).DeletePointNum=PointNum-.Cells(PointNumRow,PointNumCol)=PointNumEndWith'withsheets(1)EndSub添加链路OnErrorGoToerrorWithSheet1IfPointNum<=0ExitSubEndDimstartPointIndexAsIntegerDimendPointIndexAsstartPointIndex=InputBox("请输入节点","节点输入")If(startPointIndex>PointNum)Or(startPointIndex<=0)Or(endPointIndex>PointNum)Or(endPointIndex<=0)Or(startPointIndex=endPointIndex)ThenExitSubEnd.Cells(EdgeDataStartRow+EdgeNum,EdgeDataStartCol+1)=DimstrForBreakTimeAsStringDimiBreakTimeAsIntegerDimparam1AsStringDimparam2AsDimcontextAscontext请选择维修时间分布:1.2.正态分布iBreakTimeInputBox(context选择故障分布")LoopUntiliBreakTime1)OriBreakTimeIfiBreakTime=1strForBreakTime指数分布param1InputBox("请输入参数")param2=""param1InputBox("请输入均值")=End.Cells(EdgeDataStartRow+EdgeNum,EdgeDataStartCol+2)=strForBreakTime&","¶m1&","¶m2iBreakTimeInputBox(context选择故障分布")LoopUntiliBreakTime1)OriBreakTimeIfiBreakTime=1strForBreakTime指数分布param1InputBox("请输入参数")param2=""param1InputBox("请输入均值")=End.Cells(EdgeDataStartRow+EdgeNum,EdgeDataStartCol+3)=strForBreakTime&","¶m1&","¶m2EdgeNum=EdgeNum+.Cells(EdgeNumRow,EdgeNumCol)=EdgeNumEndWithEndSub删除链路_Click()OnErrorGoToerrorDimstartPointIndexAsIntegerDimendPointIndexAsIfEdgeNum>0startPointIndex=InputBox("请输入节点","节点输入")endPointIndexInputBox("请输入另一个节点节点输入")If(startPointIndex>PointNum)Or(startPointIndex<=0)Or(endPointIndex>PointNum)Or(endPointIndex<=0)Or(startPointIndex=endPointIndex)ThenExitSubEndDimiAsFori=1ToEdgeNumDimpoint1AsIntegerDimpoint2Aspoint1=.Cells(EdgeDataStartRow+i-1,EdgeDataStartCol)point2=.Cells(EdgeDataStartRow+i-1,EdgeDataStartCol+1)If(((point1=startPointIndex)And(point2=endPointIndex))Or((point1=endPointIndex)And(point2=startPointIndex)))Then EdgeDataStartCol),.Cells(EdgeDataStartRow+i-1,EdgeDataStartCol+EdgeDataWidth-1)).Deleteshift:=xlUpEdgeNum=EdgeNum-1EndIf.Cells(EdgeNumRow,EdgeNumCol)=EdgeNumEndIfEndEndSub构建完

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论