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

preprarando simulação

parent 2d1c2f12
Branches
Tags
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