Skip to content
Snippets Groups Projects
Commit f7fad9b5 authored by Renato Melo's avatar Renato Melo
Browse files

preprarando simulação

parent 2d1c2f12
No related branches found
No related tags found
No related merge requests found
......@@ -184,7 +184,7 @@ public class DominatingSeed implements SeedChooser<Actor> {
public static void main(String[] args) {
DirectedSocialNetwork g = new SocialNetworkGenerate()
.gerarGrafo(600, 2.5);
.gerarGrafo(800, 2.5);
HashSet<Actor> seed = new DominatingSeed(g).escolherGreedy(15);
HashSet<Actor> ativos = g.indepCascadeDiffusion(seed);
......
......@@ -186,7 +186,7 @@ public class DirectedSocialNetwork extends
public double espectedSpread(HashSet<Actor> seed, boolean ic) {
double media = 0;
int soma = 0;
int repeticoes = 1000;
int repeticoes = 100;
if (!ic) {
HashSet<Actor> ativados = linearThresholdDiffusion(seed);
......
......@@ -9,24 +9,25 @@ public class MeuPlot extends JGnuplot {
String output = null;
//String beforeStyle="linewidth=4";
public void plotarPropagacaoEsperada(double[] tamSemente, double[] y1, double[] y2, double[] y3, double[] y4, double[] y5){
public void plotPropagacao(double[] tamSemente, double[] y1, double[] y2, double[] y3, double[] y4, String outDir){
JGnuplot plot = new JGnuplot();
Plot plotPropagacao = new Plot("Propagação Esperada") {
String xlabel = "'Tam. Semente'", ylabel = "'Propagacao Esperada'";
String xlabel = "'|S|'", ylabel = "'sigma(S)'";
String extra = "set key top left";
};
DataTableSet dts = plotPropagacao.addNewDataTableSet("Propagacao");
dts.addNewDataTable("HighDegree", tamSemente, y1);
dts.addNewDataTable("BestNeighbors", tamSemente, y2);
dts.addNewDataTable("RandomSeed", tamSemente, y3);
dts.addNewDataTable("DominatingSeed", tamSemente, y4);
dts.addNewDataTable("CELF", tamSemente, y5);
DataTableSet dts = plotPropagacao.addNewDataTableSet("Propagação Esperada");
dts.addNewDataTable("DominatingSeed", tamSemente, y1);
dts.addNewDataTable("CELF", tamSemente, y2);
dts.addNewDataTable("HighDegree", tamSemente, y3);
dts.addNewDataTable("RandomSeed", tamSemente, y4);
plotPropagacao.add(dts);
plot.compile(plotPropagacao, plot.plot2d, "propagacao_esperada.plt");
this.terminal = "pngcairo enhanced dashed";
this.output = "'plots/IC/propagacao_esperada.png'";
// this.terminal = "epslatex color colortext dashed";
this.terminal = "eps color dashed";
this.output = outDir+"propagacao.eps'";
this.execute(plotPropagacao, this.plot2d);
}
......@@ -51,23 +52,24 @@ public class MeuPlot extends JGnuplot {
this.execute(plotPropagacao, this.plot2d);
}
public void plotarTempoExecucao(double[] tamSemente, double[] y1, double[] y2, double[] y3, double[] y4, double[] y5){
public void plotTempoExecucao(double[] tamSemente, double[] y1, double[] y2, double[] y3, double[] y4, String outDir){
JGnuplot plot = new JGnuplot();
Plot plotTempo = new Plot("Tempo de execução") {
String xlabel = "'Tam. Semente'", ylabel = "'Tempo de execução'";
String xlabel = "'|S|'", ylabel = "'Tempo de execução'";
String extra = "set key top left";
};
DataTableSet dts2 = plotTempo.addNewDataTableSet("TempoExecucao");
dts2.addNewDataTable("HighDegree", tamSemente, y1);
dts2.addNewDataTable("BestNeighbors", tamSemente, y2);
dts2.addNewDataTable("RandomSeed", tamSemente, y3);
dts2.addNewDataTable("DominatingSeed", tamSemente, y4);
dts2.addNewDataTable("CELF", tamSemente, y5);
DataTableSet dts2 = plotTempo.addNewDataTableSet("Tempo de execução");
dts2.addNewDataTable("DominatingSeed", tamSemente, y1);
dts2.addNewDataTable("CELF", tamSemente, y2);
dts2.addNewDataTable("HighDegree", tamSemente, y3);
dts2.addNewDataTable("RandomSeed", tamSemente, y4);
plotTempo.add(dts2);
plot.compile(plotTempo, plot.plot2d, "tempo_execucao.plt");
this.terminal = "pngcairo enhanced dashed";
this.output = "'plots/IC/tempo_execucao.png'";
// this.terminal = "epslatex color colortext dashed";
this.terminal = "eps color dashed";
this.output = outDir+"tempo.eps'";
this.execute(plotTempo, this.plot2d);
}
......
......@@ -17,130 +17,111 @@ import grafos.DirectedSocialNetwork;
public class Simulacao {
public void simularCascataIndependente(DirectedSocialNetwork g) {
public void simularIC(DirectedSocialNetwork g, String outDir) {
double[] tamSemente = { 10, 20, 30, 40, 50 };
double[] sigma1 = new double[5], tempo1 = new double[5];
double[] sigma2 = new double[5], tempo2 = new double[5];
double[] sigma3 = new double[5], tempo3 = new double[5];
double[] sigma4 = new double[5], tempo4 = new double[5];
double[] sigma5 = new double[5], tempo5 = new double[5];
int k;
long startTime = 0;
long excutionTime = 0;
for (int i = 0; i < tamSemente.length; i++) {
k = (int) tamSemente[i];
System.out.println("\nTestando para k = " + k);
startTime = System.nanoTime();
HashSet<Actor> seed1 = new HightDegree(g).escolher(k);
tempo1[i] = (System.nanoTime() - startTime)/1000;
// System.out.println("hDegreeTempo[i] = "+hDegreeTempo[i]);
excutionTime = System.currentTimeMillis() * -1;
HashSet<Actor> seed1 = new DominatingSeed(g).escolher(k);
excutionTime += System.currentTimeMillis();
tempo1[i] = (excutionTime / 1000.0f);
sigma1[i] = g.espectedSpread(seed1, true);
System.out.println("sigma HighDegree = "+sigma1[i]);
System.out.println("DominatingSeed: sigma = " + sigma1[i]
+ ", tempo = " + tempo1[i] + " segundos");
startTime = System.nanoTime();
HashSet<Actor> seed2 = new BestNeighbors(g).escolher(k);
tempo2[i] = (System.nanoTime() - startTime)/1000;
// System.out.println("bNeigTempo[i] = "+bNeigTempo[i]);
excutionTime = System.currentTimeMillis() * -1;
HashSet<Actor> seed2 = new LazyGreedy(g).escolher(k);
excutionTime += System.currentTimeMillis();
tempo2[i] = (excutionTime / 1000.0f);
sigma2[i] = g.espectedSpread(seed2, true);
System.out.println("sigma BestNeighbors = "+sigma2[i]);
System.out.println("LazyGreedy: sigma = " + sigma2[i]
+ ", tempo = " + tempo2[i] + " segundos");
startTime = System.nanoTime();
HashSet<Actor> seed3 = new RandomSeed(g).escolher(k);
tempo3[i] = (System.nanoTime() - startTime)/1000;
// System.out.println("rSeedTempo[i] = "+rSeedTempo[i]);
excutionTime = System.currentTimeMillis() * -1;
HashSet<Actor> seed3 = new DominatingSeed(g).escolherGreedy(k);
excutionTime += System.currentTimeMillis();
tempo3[i] = (excutionTime / 1000.0f);
sigma3[i] = g.espectedSpread(seed3, true);
System.out.println("sigma RandomSeed = "+sigma3[i]);
// startTime = System.nanoTime();
// HashSet<Actor> dSeed = new DominatingSeed(g).escolher(k); // Provisóriamente====================
// dSeedTempo[i] = (System.nanoTime() - startTime)/1000;
//// System.out.println("dSeedTempo[i] = "+dSeedTempo[i]);
// dSeedMedia[i] = g.espectedSpread(dSeed, true);
// System.out.println("sigma DominatingSeed = "+dSeedMedia[i]);
/*startTime = System.nanoTime();
HashSet<Actor> oSeed = new OriginalGreedy(g).escolher(k);
dSeedTempo[i] = (System.nanoTime() - startTime)/1000;
// System.out.println("dSeedTempo[i] = "+dSeedTempo[i]);
dSeedMedia[i] = g.overageDiffusion(oSeed, true);*/
startTime = System.nanoTime();
HashSet<Actor> seed4 = new DominatingSeed(g).escolher(k);
tempo4[i] = (System.nanoTime() - startTime)/1000;
// System.out.println("dSeedTempo[i] = "+dSeedTempo[i]);
sigma4[i] = g.espectedSpread(seed4, true);
System.out.println("sigma DominatingSeed = "+sigma4[i]);
startTime = System.nanoTime();
HashSet<Actor> celf = new LazyGreedy(g).escolher(k);
tempo5[i] = (System.nanoTime() - startTime)/1000;
// System.out.println("dSeedTempo[i] = "+dSeedTempo[i]);
sigma5[i] = g.espectedSpread(celf, true);
System.out.println("sigma LazyGreedy = "+sigma5[i]);
System.out.println("HighDegree: sigma = " + sigma3[i]
+ ", tempo = " + tempo3[i] + " segundos");
excutionTime = System.currentTimeMillis() * -1;
HashSet<Actor> seed4 = new RandomSeed(g).escolher(k);
excutionTime += System.currentTimeMillis();
tempo4[i] = (excutionTime / 1000.0f);
sigma4[i] = g.espectedSpread(seed4, true);
System.out.println("RandomSeed: sigma = " + sigma4[i]
+ ", tempo = " + tempo4[i] + " segundos");
}
MeuPlot meuplot = new MeuPlot();
meuplot.plotarPropagacaoEsperada(tamSemente, sigma1, sigma2, sigma3, sigma4, sigma5);
meuplot.plotarTempoExecucao(tamSemente, tempo1, tempo2, tempo3, tempo4, tempo5);
meuplot.plotPropagacao(tamSemente, sigma1, sigma2, sigma3, sigma4,
outDir);
meuplot.plotTempoExecucao(tamSemente, tempo1, tempo2, tempo3, tempo4,
outDir);
}
public void simularLimitanteLinear(DirectedSocialNetwork g) {
double[] tamSemente = { 10, 20, 30, 40, 50 };
double[] rSeedMedia = new double[5], rSeedTempo = new double[5];
double[] hDegreeMedia = new double[5], hDegreeTempo = new double[5];
double[] bNeigMedia = new double[5], bNeigTempo = new double[5];
double[] dSeedMedia = new double[5], dSeedTempo = new double[5];
int k;
public static void main(String[] args) {
// simularArtificial();
// simularHep();
simularPhy();
// simularEpinions();
}
long startTime = 0;
for (int i = 0; i < tamSemente.length; i++) {
k = (int) tamSemente[i];
System.out.println("\nTestando pra k = "+k);
private static void simularArtificial() {
DirectedSocialNetwork g;
g = new SocialNetworkGenerate().gerarGrafo(300, 2.8);
System.out.println("|V(G)| = " + g.vertexSet().size());
System.out.println("|E(G)| = " + g.edgeSet().size());
startTime = System.nanoTime();
HashSet<Actor> hDegree = new HightDegree(g).escolher(k);
hDegreeTempo[i] = (System.nanoTime() - startTime)/1000;
hDegreeMedia[i] = g.espectedSpread(hDegree, false);
String outDir = "'plots/tex/";
startTime = System.nanoTime();
HashSet<Actor> bNeig = new BestNeighbors(g).escolher(k);
bNeigTempo[i] = (System.nanoTime() - startTime)/1000;
bNeigMedia[i] = g.espectedSpread(bNeig, false);
new Simulacao().simularIC(g, outDir);
startTime = System.nanoTime();
HashSet<Actor> rSeed = new RandomSeed(g).escolher(k);
rSeedTempo[i] = (System.nanoTime() - startTime)/1000;
rSeedMedia[i] = g.espectedSpread(rSeed, false);
}
startTime = System.nanoTime();
HashSet<Actor> dSeed = new DominatingSeed(g).escolher(k);
dSeedTempo[i] = (System.nanoTime() - startTime)/1000;
dSeedMedia[i] = g.espectedSpread(dSeed, false);
private static void simularPhy() {
DirectedSocialNetwork g;
g = new GraphReader().readPhy();
System.out.println("|V(G)| = " + g.vertexSet().size());
System.out.println("|E(G)| = " + g.edgeSet().size());
String outDir = "'plots/phy/";
new Simulacao().simularIC(g, outDir);
}
MeuPlot meuplot = new MeuPlot();
meuplot.plotarPropagacaoEsperadaLT(tamSemente, hDegreeMedia, bNeigMedia, rSeedMedia, dSeedMedia);
meuplot.plotarTempoExecucaoLT(tamSemente, hDegreeTempo, bNeigTempo, rSeedTempo, dSeedTempo);
private static void simularEpinions() {
DirectedSocialNetwork g;
g = new GraphReader().readEpinions();
System.out.println("|V(G)| = " + g.vertexSet().size());
System.out.println("|E(G)| = " + g.edgeSet().size());
String outDir = "'plots/epinions/";
new Simulacao().simularIC(g, outDir);
}
public static void main(String[] args) {
private static void simularHep() {
DirectedSocialNetwork g;
g = new SocialNetworkGenerate().gerarGrafo(2500, 2.8);
// g = new GraphReader().readHep();
// g = new GraphReader().readPhy();
// g = new GraphReader().readEpinions();
g = new GraphReader().readHep();
System.out.println("|V(G)| = " + g.vertexSet().size());
System.out.println("|E(G)| = " + g.edgeSet().size());
Simulacao simula = new Simulacao();
// simula.simularLimitanteLinear(g);
simula.simularCascataIndependente(g);
String outDir = "'plots/hep/";
new Simulacao().simularIC(g, outDir);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment