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

📄 oldcomplexity.java

📁 发布/订阅系统路由重配算法,可应用于ad hoc环境
💻 JAVA
字号:
package sim;import java.io.File;import java.io.FileReader;import java.io.FileWriter;import java.io.LineNumberReader;import java.io.PrintWriter;import java.util.Properties;import com.Message;import broker.Broker;import broker.Destination;public class OldComplexity extends Simulation{	double costsBefore = 0.0;	double costsAfter = 0.0;	double costsAll = 0.0;	double costsHeuristic = 0.0;	int measurement = 1;		double communicationHeuristic = 0.0;	double processingHeuristic = 0.0;	double heuristicCosts = 0.0;				public OldComplexity(Properties properties){		super(properties);		//System.out.println("Complexity started.");	}		public void setup() {				// create the overlay and broker network		try{			net = Network.loadOverlay(this);		}catch(Exception e){			System.out.println(e);			e.printStackTrace();			System.exit(-1);		}		net.scaleCommunicationCosts();		net.assignProcessingCosts();		net.scaleProcessingCosts();		net.assignLoad();		net.scaleLoad();		net.createRandomTree();		// create the applications		application = Application.createApplication(this);		application.assignTo(net);		// schedule Measurement Events		scheduleEventAt(1000, new MeasureStartEvent());		scheduleEventAt(1750, new Event(){			public void handle(){				net.clearCaches();			}		});		scheduleEventAt(2001, new MeasureStopEvent());		scheduleEventAt(2002, new Event() {			public void handle() {				net.startHeuristic();			}		});		scheduleEventAt(25000, new Event(){			public void handle(){				if(measureEvent == null) {					costs = 0;					processingCosts = 0;					communicationCosts = 0;					communicationHeuristic = 0;					processingHeuristic = 0;					heuristicCosts = 0;										measureEvent = new MeasureEvent();					scheduleEventIn(measureInterval, measureEvent);				}			}		});		scheduleEventAt(26001, new MeasureStopEvent());		scheduleEventAt(26002, new Event() {			public void handle() {				net.stopHeuristic();			}		});		scheduleEventAt(27000, new MeasureStartEvent());		scheduleEventAt(28001, new MeasureStopEvent());		scheduleEventAt(28002, new StopEvent());			}		public void measure(){		if(measurement==1){			costsBefore = costs;			measurement++;		}else if(measurement==2){			costsHeuristic = heuristicCosts;			costsAll = costs;			measurement++;		}else{			costsAfter = costs;			out.println("# [costs before]\t[costs after]\t[heuristic costs]\t[costs all]");			out.println(costsBefore+"\t"+costsAfter+"\t"+costsHeuristic+"\t"+costsAll);		}		heuristicCosts = 0;		processingHeuristic = 0;		communicationHeuristic = 0;		costs = 0;		processingCosts = 0;		communicationCosts = 0;		measureEvent=new MeasureEvent();		scheduleEventIn(measureInterval,measureEvent);	}		public void collectStatisticsSending(Destination from, Destination to, Message message) {				double c;				if(from.isClient() || to.isClient()){			return;    	}				c = net.getCommunicationCosts((Broker)from,(Broker)to);				if(message.getType()!=Message.NORMAL){			heuristicCosts += c;			communicationHeuristic += c;		}		    	c = net.getCommunicationCosts((Broker)from,(Broker)to);    	costs += c;    	communicationCosts += c;    }		public void collectStatisticsProcessing(Broker broker, Message message) {		double p;				p = net.getProcessingCosts(broker);		if(message.getType()!=Message.NORMAL){			heuristicCosts += p;			processingHeuristic += p;		}		costs += p;		processingCosts += p;	}			// STATIC PART	static String networkDir = "top/";	static String[] networks = {"top_100_a",		                        "top_100_b",		                        "top_100_c",		                        "top_100_d",		                        "top_100_e"};		static long[] networkSeeds = { 2394177302872702300L,		                           5491205459211568959L,		                           6702859405044936401L,		                          -7938216953269608096L,		                           3900736743843357023L};		static long[] applicationSeeds = {-6116623287133684022L,		                               7023269272318161570L,		                              -6446803547478866606L,		                              -5911061522510162924L,		                               5363981162406371824L};	static long[] brokerSeeds = {-906974798751154824L,		                         2277394977345846158L,		                         7218781717204194475L,		                          168881650990619758L,		                         4568175092141916468L};	/**	 * @param args	 */	public static void main(String[] args) {		// TODO Auto-generated method stub				try{			if(args[0].equalsIgnoreCase("MAKE_EXPERIMENT")){				makeExperiment();			}else if(args[0].equalsIgnoreCase("COLLECT_RESULTS")){				collectResults();			}		}catch(Exception e){			System.err.println(e);			e.printStackTrace();			System.exit(-1);		}	}			private static void makeExperiment() throws Exception{		File f;		String expDir;		String expFile;		PrintWriter out;				expDir = "exp/complexity/";		f = new File(expDir);		f.mkdirs();				for(int net=0; net<networks.length; net++){								for(int i=2; i<16; i++){								expFile = expDir+networks[net]+"_"+i;				out = new PrintWriter(new FileWriter(expFile+".exp"),true);				out.println("# experiment: complexity "+i);				out.println();				out.println("# general:");				out.println("simulation=sim.Complexity");				out.println("outFile="+expFile+".rst");				out.println("netFile="+networkDir+networks[net]);				out.println("measureInterval=1000");				out.println();				out.println("# random seeds");				out.println("networkSeed="+networkSeeds[net]);				out.println("applicationSeed="+applicationSeeds[net]);				out.println("brokerSeed="+brokerSeeds[net]);				out.println();				out.println("# network");				out.println("minCommunicationCosts=0");				out.println("maxCommunicationCosts=10");				out.println("minProcessingCosts=0");				out.println("maxProcessingCosts=10");				out.println("minLoad=1");				out.println("maxLoad=10");				out.println("communicationDelayConstant=0");				out.println("communicationDelayFactor=1");				out.println("processingDelayConstant=0");				out.println("processingDelayFactor=0.001");				out.println();				out.println("# application");				out.println("numberOfJobs=50");				out.println("numberOfSubscribers=9");				out.println("publicationInterval=EXPONENTIAL");				out.println("publicationConstant=0.2");				out.println("reassignmentInterval=CONSTANT");				out.println("reassignmentConstant=100000");				out.println("locality=0.5");				out.println("localityPower=2");				out.println();				out.println("# broker");				out.println("heuristic=COSTS_AND_INTERESTS");				out.println("cacheSize=8192");				out.println("filterSize=100000");				out.println("broadcastInterval=250");				out.println("updateInterval=400");				out.println("order=UNORDERED");				out.println("environmentSize="+i);				out.println("numberOfHashs=5");				out.flush();				out.close();			}		}			}			private static void collectResults() throws Exception{		String expDir;		String expFile;		PrintWriter out;		LineNumberReader in;		String line;		String[]  tokens;		double b;		double a;		double h;		double s;		double percentImprovement;		double pImp;		double pHeu;		double percentHeuristic;				expDir = "exp/complexity/";		out = new PrintWriter(new FileWriter(expDir+"RESULTS"),true);		out.println("# [environmentSize]\t[improvement]\t[heuristic costs]");		for(int i=2; i<16; i++){					percentImprovement = percentHeuristic = 0;			for(int net = 0; net < networks.length; net++){				expFile = expDir+networks[net]+"_"+i+".rst";				in = new LineNumberReader(new FileReader(expFile));				b=a=h=s=0;				while((line=in.readLine())!=null){					if(line.startsWith("#") || line.equals("")){						continue;					}					tokens = line.split("\t");					b = Double.parseDouble(tokens[0]);					a = Double.parseDouble(tokens[1]);					h = Double.parseDouble(tokens[2]);					s = Double.parseDouble(tokens[3]);				}				percentImprovement += (a*100.0d/b);				percentHeuristic += (h*100.0d/s);								in.close();			}			pImp = percentImprovement/((double)networks.length);			pHeu = percentHeuristic/((double)networks.length);			out.println(i+"\t"+(100d-pImp)+"\t"+pHeu);		}		out.flush();		out.close();	}}

⌨️ 快捷键说明

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