⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 matrix.java

📁 PEPA模型性能分析工具
💻 JAVA
字号:
package matrix;

import gui.PepaConsole;

public class Matrix {
	public int[] ija;
	public double[] sa;
	private int matDim;
	private int size;
	public Matrix(int size,int dim)
	{
		matDim=dim;
		this.size=size;
		ija=new int[size];
		sa=new double[size];
	}
	public void setValue(int pos,int index,double value)
	{
		ija[pos]=index;
		sa[pos]=value;
	}
	public boolean checkErgodicity(int[] newija)
	{
		boolean[] trace=new boolean[matDim+1];
		int[] stack=new int[matDim+1];
		trace[1]=true;
		stack[0]=1;
		int buttom=0;
		int top=1;
		int state,insert;
		int pos_f,pos_s;
		while(buttom<top)
		{
			state=stack[buttom];
			buttom++;
			
			pos_f=newija[state];
			pos_s=newija[state+1];
			
			for(int i=pos_f;i<pos_s;i++)
			{
				insert=newija[i];
				if(!trace[insert])
				{
					trace[insert]=true;
					stack[top]=insert;
					top++;
				}
			}
		}
		for(int i=1;i<=matDim;i++)
			if(trace[i]==false)
			{
				return false;
			}
		
		return true;
	}
	public void Trans()
	{
		int key=findKey();
		int SIZE=size+matDim-key-1;
		int[] newija=new int[SIZE];
		double[] newsa=new double[SIZE];
		
		trans(newija,newsa);
		newija[matDim+1]=size;
		
		PepaConsole.addArgument("--遍历性检查...\n");
		if(checkErgodicity(newija))
			PepaConsole.addArgument("--该pepa模型满足遍历性要求!\n");
		else
			PepaConsole.addArgument("--该pepa模型不满足遍历性要求!\n");
		
		newsa[matDim]=1.0;
		newija[matDim+1]=SIZE;
		int i=1;
		
		for(int j=size-key;j<SIZE;j++)
		{
			newija[j]=i++;
			newsa[j]=1.0;
		}
		
		size=SIZE;
		ija=newija;
		sa=newsa;
		System.gc();
	}
	private int findKey()
	{
		int num=0;
		for(int i=matDim+2;i<size;i++)
		{
			if(ija[i]==matDim)
				num++;
		}
		return num;
	}
	
	private void trans(int[] nija,double[] nsa)
	{
		int pos;
		int j;
		int insert=matDim+2;
		for(int i=1;i<=matDim;i++)
		{
			pos=matDim+2;
			nija[i]=insert;
			nsa[i]=sa[i];
			while(pos<size)
			{
				if(ija[pos]==i)
				{
					for(j=1;j<=matDim+1;j++)
					{
						int k=ija[j];
						if(pos==ija[j])
							break;
						if(pos<ija[j])
						{
							j--;
							break;
						}
					}
					nija[insert]=j;
					nsa[insert]=sa[pos];
					insert++;
				}
				pos++;
			}
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -