diff --git a/jgnuplot.xml b/jgnuplot.xml new file mode 100644 index 0000000000000000000000000000000000000000..bbc4967319ee432994a3c1ebb02de96007493f21 --- /dev/null +++ b/jgnuplot.xml @@ -0,0 +1,144 @@ +<?xml version="1.0" encoding="utf-8"?> +<JGnuplot> +<!-- the symbol ~ here at beginning of each code block is cirtical! It allows the code to be loaded without evaluation $$ and ## sections. --> +<style2d>~ +$beforeStyle$ +$beforeStyle2$ +ls(i)=value(sprintf("ls%i",i)); +lw=2;ps=1;pi=1;axiscolor='gray30';gridcolor='gray30'; +lc1='dark-blue';lc2='dark-red';lc3='dark-green';lc4='orange';lc5='dark-pink';lc6='purple';lc7='olive';lc8='slategray';lc9='steelblue';lc10='black'; +lt1=1;lt2=2;lt3=3;lt4=4;lt5=5;lt6=6;lt7=7;lt8=8;lt9=9;lt10=10; +pt1=5;pt2=7;pt3=9;pt4=11;pt5=13;pt6=15;pt7=17;pt8=19;pt9=21;pt10=23; +ls1=1;ls2=2;ls3=3;ls4=4;ls5=5;ls6=6;ls7=7;ls8=8;ls9=9;ls10=10;ls11=11;ls12=12;ls13=13;ls14=14;ls15=15;ls16=16;ls17=17;ls18=18;ls19=19;ls20=20; +$beforeStyleVar$ +$beforeStyleVar2$ +lw1=lw;lw2=lw;lw3=lw;lw4=lw;lw5=lw;lw6=lw;lw7=lw;lw8=lw;lw9=lw;lw10=lw; +ps1=ps;ps2=ps;ps3=ps;ps4=ps;ps5=ps;ps6=ps;ps7=ps;ps8=ps;ps9=ps;ps10=ps; +pi1=pi;pi2=pi;pi3=pi;pi4=pi;pi5=pi;pi6=pi;pi7=pi;pi8=pi;pi9=pi;pi10=pi; +$afterStyleVar$ +$afterStyleVar2$ +# Define axis +# remove border on top and right and set color to gray +set style line 11 lc rgb axiscolor lt 1; +set border 3 back ls 11; +set tics nomirror; +# Define grid +set style line 12 lc rgb gridcolor lt 0 lw 1; +set grid back ls 12; +set termoption dashed; +# Line styles: +set style line 1 lc rgb lc1 lt lt1 lw lw1 ps ps1 pt pt1 pi pi1; +set style line 2 lc rgb lc2 lt lt2 lw lw2 ps ps2 pt pt2 pi pi2; +set style line 3 lc rgb lc3 lt lt3 lw lw3 ps ps3 pt pt3 pi pi3; +set style line 4 lc rgb lc4 lt lt4 lw lw4 ps ps4 pt pt4 pi pi4; +set style line 5 lc rgb lc5 lt lt5 lw lw5 ps ps5 pt pt5 pi pi5; +set style line 6 lc rgb lc6 lt lt6 lw lw6 ps ps6 pt pt6 pi pi6; +set style line 7 lc rgb lc7 lt lt7 lw lw7 ps ps7 pt pt7 pi pi7; +set style line 8 lc rgb lc8 lt lt8 lw lw8 ps ps8 pt pt8 pi pi8; +set style line 9 lc rgb lc9 lt lt9 lw lw9 ps ps9 pt pt9 pi pi9; +set style line 10 lc rgb lc10 lt lt10 lw lw10 ps ps10 pt pt10 pi pi10; +$afterStyle$ +$afterStyle2$ +</style2d> +<style3d>~ +$beforeStyle$ +$beforeStyle2$ +axiscolor='gray30';gridcolor='gray30'; +$beforeStyleVar$ +$beforeStyleVar2$ +$afterStyleVar$ +$afterStyleVar2$ +set style line 11 lc rgb axiscolor lt 1; +set style line 12 lc rgb gridcolor lt 0 lw 1; +set border 1+2+4+8+16+32+64+256+512 back ls 11; +set xtics border out nomirror +set ytics border out nomirror +set ztics border out nomirror +set grid x y z back ls 12; +set xyplane 0; +#colorbox +#set format cb "%4.1f"; +#set colorbox user size .03, .6; +set cbtics scale 0; +set palette negative rgb 21,22,23 #Reverse hot color palette; +set pm3d implicit at s; +unset surface; +unset key; +$afterStyle$ +$afterStyle2$ +</style3d> +<header>~ +$beforeHeader$ +$beforeHeader2$ +# Header start +set macros;# Enable the use of macros +set terminal $terminal$; +set output $output$; +set xlabel $xlabel$; +set ylabel $ylabel$; +set zlabel $zlabel$; +set xrange $xrange$; +set yrange $yrange$; +set zrange $zrange$; +info1(i)=value(sprintf("info%i",i)); +info2(i,j)=value(sprintf("info%i_%i",i,j)); +$infos()$ +$extra$ +$extra2$ +$extra3$ +$afterHeader$ +$afterHeader2$ +# Header end +</header> +<plot2d>~ +$style2d$ +$header$ +set title "$info(1)$"; +$beforePlot$plot for [i=1:$size(1)$] '-' title info2(1,i) w lp ls ls(i); +$data(1,2d)$ +</plot2d> +<plot2dx>~ +$style2d$ +$header$ +set title "$info(1)$"; +$beforePlot$plot '-' $info(1,1)$ + '-' $info(1,2)$ + '-' $info(1,3)$ + '-' $info(1,4)$ + '-' $info(1,5)$ + '-' $info(1,6)$ + '-' $info(1,7)$ + '-' $info(1,8)$ + '-' $info(1,9)$ + '-' $info(1,10)$ +$data(1,2d)$ +</plot2dx> +<plot3d>~ +$style3d$ +$header$ +set title "$info(1)$"; +$beforePlot$splot for [i=1:$size(1)$] "-" using 1:2:3 title info2(1,i); +$data(1,3d)$ +</plot3d> +<multiplot>~ +$style2d$ +$header$ +set multiplot layout $size()$,1; +set title "$info(1)$"; +$beforePlot$plot for [i=1:$size(1)$] '-' title info2(1,i) w lp ls ls(i); +$data(1,2d)$ +set title "$info(2)$"; +$beforePlot$plot for [i=1:$size(2)$] '-' title info2(2,i) w lp ls ls(i); +$data(2,2d)$ +set title "$info(3)$"; +$beforePlot$plot for [i=1:$size(3)$] '-' title info2(3,i) w lp ls ls(i); +$data(3,2d)$ +set title "$info(4)$"; +$beforePlot$plot for [i=1:$size(4)$] '-' title info2(4,i) w lp ls ls(i); +$data(4,2d)$ +set title "$info(5)$"; +$beforePlot$plot for [i=1:$size(5)$] '-' title info2(5,i) w lp ls ls(i); +$data(5,2d)$ +unset multiplot; +</multiplot> +</JGnuplot> \ No newline at end of file diff --git a/src/algoritmos/ArticulationSeed.java b/src/algoritmos/ArticulationSeed.java index 3e26abd83e061920e0885b0950355543c87c22a4..aa400657065d59db2af323de122994bb2a1e5ead 100644 --- a/src/algoritmos/ArticulationSeed.java +++ b/src/algoritmos/ArticulationSeed.java @@ -1,18 +1,14 @@ package algoritmos; import java.util.HashSet; -import java.util.Iterator; import java.util.PriorityQueue; import java.util.Set; -import org.jgrapht.Graph; import org.jgrapht.UndirectedGraph; import org.jgrapht.alg.BlockCutpointGraph; import org.jgrapht.graph.AsUndirectedGraph; -import org.jgrapht.graph.DefaultEdge; import org.jgrapht.graph.DefaultWeightedEdge; -import geradores.GeradorGrafoGnp; import geradores.SocialNetworkGenerate; import grafos.Actor; import grafos.DirectedSocialNetwork; diff --git a/src/algoritmos/DominatingSeed.java b/src/algoritmos/DominatingSeed.java index bf2bfb8611b3a9a015770a41ff2a0d83471ef046..bc4d4810ffec78ca1dd519d770a37042882b4243 100644 --- a/src/algoritmos/DominatingSeed.java +++ b/src/algoritmos/DominatingSeed.java @@ -31,7 +31,7 @@ public class DominatingSeed implements SeedChooser<Actor> { MinDominatingSet ds = new MinDominatingSet(); minSet = ds.fastGreedy(grafo); - + System.out.println("|DS| = " + minSet.size()); if (minSet.size() < k) { System.out.println("Erro: o cojunto domintante é menor que K"); return null; diff --git a/src/algoritmos/LazyGreedy.java b/src/algoritmos/LazyGreedy.java index 1bed40d12135a50ad061a1bf93551f7f80028060..d1565fb50a60a7ec9f7d94a55a77b315d61bd48c 100644 --- a/src/algoritmos/LazyGreedy.java +++ b/src/algoritmos/LazyGreedy.java @@ -5,11 +5,8 @@ import grafos.Actor; import grafos.DirectedSocialNetwork; import interfaces.SeedChooser; -import java.io.IOException; import java.util.HashSet; -import java.util.Iterator; import java.util.PriorityQueue; -import java.util.Set; public class LazyGreedy implements SeedChooser<Actor> { private DirectedSocialNetwork grafo = null; diff --git a/src/algoritmos/MinDominatingSet.java b/src/algoritmos/MinDominatingSet.java index cc4035a62b50a4f7249f37c081cb621cd0025fe7..42d942df1b9aebc1157af2d27372f1739adb2610 100644 --- a/src/algoritmos/MinDominatingSet.java +++ b/src/algoritmos/MinDominatingSet.java @@ -3,20 +3,10 @@ package algoritmos; import geradores.SocialNetworkGenerate; import grafos.Actor; import grafos.DirectedSocialNetwork; - import java.util.Collections; import java.util.HashSet; import java.util.Set; - -import org.jgrapht.Graph; -import org.jgrapht.UndirectedGraph; -import org.jgrapht.alg.VertexCovers; -import org.jgrapht.graph.DefaultEdge; -import org.jgrapht.graph.DefaultWeightedEdge; -import org.jgrapht.graph.Subgraph; - import util.ComparaPorGrau; - import com.google.common.collect.MinMaxPriorityQueue; /* diff --git a/src/readgraph/GraphReader.java b/src/readgraph/GraphReader.java index c6910d44067c28f3516ea49290bb3ccdbfee8695..a53d2ef484fe48d6cca05be6eb7489bcea15ee97 100644 --- a/src/readgraph/GraphReader.java +++ b/src/readgraph/GraphReader.java @@ -79,17 +79,18 @@ public class GraphReader { /** * Sorteia um valor aleatório + * * @return um número entre {0.2, 0.04, 0.008} - */ + */ public double trivalencyModel() { -// int p = (int) (Math.random() * 3); -// double[] choice = { 0.2, 0.04, 0.008 }; -// return choice[p]; + // int p = (int) (Math.random() * 3); + // double[] choice = { 0.2, 0.04, 0.008 }; + // return choice[p]; // uniform IC model -// return (double)10/100; - return Math.random(); + return (double)10/100; +// return Math.random(); } public DirectedSocialNetwork readEpinions() { diff --git a/src/simulacao/Simulacao.java b/src/simulacao/Simulacao.java index ff3e4545bf033387c55e75750017fad978a7e9e8..ffed98f1fd8ae526286274aad68b0c9f18fccf37 100644 --- a/src/simulacao/Simulacao.java +++ b/src/simulacao/Simulacao.java @@ -1,6 +1,10 @@ package simulacao; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Date; import java.util.HashSet; +import javax.media.j3d.PhysicalBody; import plot.MeuPlot; import readgraph.GraphReader; @@ -73,55 +77,64 @@ public class Simulacao { private static void simularArtificial() { DirectedSocialNetwork g; - g = new SocialNetworkGenerate().gerarGrafo(100, 2.5); + g = new SocialNetworkGenerate().gerarGrafo(30000, 2.8); System.out.println("|V(G)| = " + g.vertexSet().size()); System.out.println("|E(G)| = " + g.edgeSet().size()); String outDir = "'plots/tex/"; new Simulacao().simularIC(g, outDir); - + } private static void simularPhy() { DirectedSocialNetwork g; g = new GraphReader().readPhy(); + System.out.println("Phy.txt"); 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); } private static void simularEpinions() { + System.out.println("Epinions.txt"); 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); } private static void simularHep() { + System.out.println("Hep.txt"); DirectedSocialNetwork g; g = new GraphReader().readHep(); System.out.println("|V(G)| = " + g.vertexSet().size()); System.out.println("|E(G)| = " + g.edgeSet().size()); - + String outDir = "'plots/hep/"; new Simulacao().simularIC(g, outDir); } - + public static void main(String[] args) { + DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); + Date data = new Date(); + System.out.println("Data de início: " + dateFormat.format(data)); // simularArtificial(); - simularHep(); -// simularPhy(); - // simularEpinions(); +// System.out.println("Data de término: " + dateFormat.format(data)); + simularPhy(); + System.out.println("Data de término: " + dateFormat.format(data)); + simularEpinions(); + System.out.println("Data de término: " + dateFormat.format(data)); + simularHep(); + System.out.println("Data de término: " + dateFormat.format(data)); } - }