marking.java

来自「petrinets小程序」· Java 代码 · 共 72 行

JAVA
72
字号

public class marking {
	
	protected static final int w = Integer.MAX_VALUE - 200; 
	
	protected int[] mar;
	protected String name = "";
	
	public marking(int[] m){
		this.mar = new int[m.length];
		for(int i = 0; i < m.length; i++)
			this.mar[i] = m[i];
	}
	
	public marking(marking m){
		new marking(m.mar);
	}
	
	public marking(pn PN){
		this.mar = new int[PN.numberOfPlaces()];
		for(int i = 0; i < PN.numberOfPlaces(); i++){
			mar[i] = PN.getPlace(i).getTokens();
		}
	}

	public int[] getMar(){
		return this.mar;
	}

	public boolean equal(marking m){
		boolean equal = true;
		if(mar.length == 0 || m.mar.length == 0 || mar.length != m.mar.length)
			equal = false;
		else
			for(int i = 0; i < mar.length; i++)
				if(mar[i] != m.mar[i])
					equal = false;
		return equal;
	}
	
	public boolean notSmallToOneMarking(marking m){
		boolean big = true;
		if(mar.length == 0 || m.mar.length == 0 || mar.length != m.mar.length)
			big = false;
		for(int i = 0; i < m.mar.length; i++)
			if(mar[i] < m.mar[i])
				big = false;
		return big;
	}

	public boolean enable(pn PN, transition t){
		boolean able = false;
		for(int j = 0; j < PN.numberOfPlaces(); j++){
			PN.getPlace(j).setTokens(this.mar[j]);
		}
			if(t.canFire(PN, true)){
				able = true;
		}
		return able;
	}

	public marking fire(pn PN, transition t){
		marking m;
		if(this.enable(PN, t)){
			t.fire(PN, true);
		}
		m = new marking(PN);
		return m;
	}
	
}

⌨️ 快捷键说明

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