Advertisement
Guest User

Untitled

a guest
Jun 28th, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 16.68 KB | None | 0 0
  1. package mainpackeage;
  2.  
  3. import java.awt.Color;
  4. import java.io.IOException;
  5. import java.text.DecimalFormat;
  6.  
  7. import javax.swing.JFrame;
  8.  
  9. import org.jfree.chart.ChartFactory;
  10. import org.jfree.chart.ChartPanel;
  11. import org.jfree.chart.JFreeChart;
  12. import org.jfree.chart.plot.PlotOrientation;
  13. import org.jfree.chart.plot.XYPlot;
  14. import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
  15. import org.jfree.data.xy.XYDataset;
  16. import org.jfree.data.xy.XYSeries;
  17. import org.jfree.data.xy.XYSeriesCollection;
  18. import org.jfree.ui.RefineryUtilities;
  19.  
  20.  
  21. public class MethodTester extends JFrame {
  22.    
  23.     private static final long serialVersionUID = 1L;
  24.     double linen = 0.0;
  25.     double lineb = 0.0;
  26.     DecimalFormat df = new DecimalFormat("#.############");
  27.  
  28.     double[] mmqLine =  new double[2];
  29.    
  30.    
  31.     public MethodTester(String applicationTitle, String chartTitle) throws IOException {
  32.         super(applicationTitle);
  33.        
  34.         JFreeChart chart = ChartFactory.createScatterPlot(chartTitle, "Xi ( Seconds )", "Thetai", createDataset(), PlotOrientation.VERTICAL, true, true, false);
  35.         ChartPanel panel = new ChartPanel ( chart );
  36.         panel.setPreferredSize( new java.awt.Dimension(800, 600));
  37.         //final XYPlot plot = chart.getXYPlot();
  38.         final XYPlot plot = chart.getXYPlot();
  39.        
  40.        
  41.        
  42.         XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer();
  43.         renderer.setDrawSeriesLineAsPath(false);
  44.         renderer.setSeriesPaint(0, Color.red);
  45.         plot.setRenderer( renderer );
  46.         setContentPane( panel );
  47.        
  48.     }
  49.    
  50.     public XYDataset createDataset() throws IOException {
  51.        
  52.         XYSeriesCollection dcd = new XYSeriesCollection();
  53.         final XYSeries mplValue = new XYSeries ("My Router");
  54.         final XYSeries mplAdsl = new XYSeries("adsl");
  55.         final XYSeries mplRenata = new XYSeries("Renata");
  56.         final XYSeries mplBruna = new XYSeries("Bruna");
  57.        
  58.        
  59.         //final XYSeries baseLine = new XYSeries("BaseLine");
  60.         FileManager fm = new FileManager();
  61.         /*
  62.         List dataset = fm.getDataset("/home/caio/workspace/tcc/correctFiles/myRouterOne");
  63.         double mplClock = objectiveFunction(dataset);
  64.         double mmqClock = clockScrewMmq(dataset);
  65.         System.out.println("My Router ( MPL | MMQ )");
  66.         System.out.println(df.format(mplClock) + " | " + df.format(mmqClock) + " " + dataset.size);
  67.         mplValue.add(1, mmqClock);
  68.        
  69.         dataset = fm.getDataset("/home/caio/workspace/tcc/correctFiles/myRouterTwo");
  70.         mplClock = objectiveFunction(dataset);
  71.         mmqClock = clockScrewMmq(dataset);
  72.         System.out.println(df.format(mplClock) + " | " + df.format(mmqClock) + " " + dataset.size);
  73.         mplValue.add(2, mmqClock);
  74.        
  75.         dataset = fm.getDataset("/home/caio/workspace/tcc/correctFiles/myRouterThree");
  76.         mplClock = objectiveFunction(dataset);
  77.         mmqClock = clockScrewMmq(dataset);
  78.         System.out.println(df.format(mplClock) + " | " + df.format(mmqClock) + " " + dataset.size);
  79.         mplValue.add(3, mmqClock);
  80.        
  81.         dataset = fm.getDataset("/home/caio/workspace/tcc/correctFiles/myRouterFour");
  82.         mplClock = objectiveFunction(dataset);
  83.         mmqClock = clockScrewMmq(dataset);
  84.         System.out.println(df.format(mplClock) + " | " + df.format(mmqClock) + " " + dataset.size);
  85.         mplValue.add(4, mmqClock);
  86.        
  87.         dataset = fm.getDataset("/home/caio/workspace/tcc/correctFiles/myRouterFive");
  88.         mplClock = objectiveFunction(dataset);
  89.         mmqClock = clockScrewMmq(dataset);
  90.         System.out.println(df.format(mplClock) + " | " + df.format(mmqClock) + " " + dataset.size);
  91.         mplValue.add(5, mmqClock);
  92.        
  93.         mplClock = 0.0;
  94.         System.out.println("adsl ( MPL | MMQ )");
  95.        
  96.         dataset = fm.getDataset("/home/caio/workspace/tcc/correctFiles/adslOne");
  97.         mplClock = objectiveFunction(dataset);
  98.         mmqClock = clockScrewMmq(dataset);
  99.         System.out.println(df.format(mplClock) + " | " + df.format(mmqClock) + " " + dataset.size);
  100.         mplAdsl.add(1, mmqClock);
  101.        
  102.         dataset = fm.getDataset("/home/caio/workspace/tcc/correctFiles/adslTwo");
  103.         mplClock = objectiveFunction(dataset);
  104.         mmqClock = clockScrewMmq(dataset);
  105.         System.out.println(df.format(mplClock) + " | " + df.format(mmqClock) + " " + dataset.size);
  106.         mplAdsl.add(2, mmqClock);
  107.        
  108.        
  109.         dataset = fm.getDataset("/home/caio/workspace/tcc/correctFiles/adslThree");
  110.         mplClock = objectiveFunction(dataset);
  111.         mmqClock = clockScrewMmq(dataset);
  112.         System.out.println(df.format(mplClock) + " | " + df.format(mmqClock) + " " + dataset.size);
  113.         mplAdsl.add(3, mmqClock);
  114.        
  115.        
  116.         dataset = fm.getDataset("/home/caio/workspace/tcc/correctFiles/adslFour");
  117.         mplClock = objectiveFunction(dataset);
  118.         mmqClock = clockScrewMmq(dataset);
  119.         System.out.println(df.format(mplClock) + " | " + df.format(mmqClock) + " " + dataset.size);
  120.         mplAdsl.add(4, mmqClock);
  121.        
  122.        
  123.         dataset = fm.getDataset("/home/caio/workspace/tcc/correctFiles/adslFive");
  124.         mplClock = objectiveFunction(dataset);
  125.         mmqClock = clockScrewMmq(dataset);
  126.         System.out.println(df.format(mplClock) + " | " + df.format(mmqClock) + " " + dataset.size);
  127.         mplAdsl.add(5, mmqClock);
  128.        
  129.        */
  130.        
  131.         double mplClock = 0.0;
  132.         System.out.println("Bruna ( MPL | MMQ )");
  133.         List dataset = fm.getDataset("/home/caio/workspace/tcc/correctFiles/brunaOne");
  134.         mplClock = objectiveFunction(dataset);
  135.         double mmqClock = clockScrewMmq(dataset);
  136.         System.out.println(df.format(mplClock) + " | " + df.format(mmqClock) + " " + dataset.size);
  137.         mplBruna.add(1, mmqClock);
  138.        
  139.         dataset = fm.getDataset("/home/caio/workspace/tcc/correctFiles/brunaTwo");
  140.         mplClock = objectiveFunction(dataset);
  141.         mmqClock = clockScrewMmq(dataset);
  142.         System.out.println(df.format(mplClock) + " | " + df.format(mmqClock) + " " + dataset.size);
  143.         mplBruna.add(2, mmqClock);
  144.        
  145.         dataset = fm.getDataset("/home/caio/workspace/tcc/correctFiles/brunaThree");
  146.         mplClock = objectiveFunction(dataset);
  147.         mmqClock = clockScrewMmq(dataset);
  148.         System.out.println(df.format(mplClock) + " | " + df.format(mmqClock) + " " + dataset.size);
  149.         mplBruna.add(3, mmqClock);
  150.         /*
  151.         dataset = fm.getDataset("/home/caio/workspace/tcc/correctFiles/brunaFour");
  152.         mplClock = objectiveFunction(dataset);
  153.         mmqClock = clockScrewMmq(dataset);
  154.         System.out.println(df.format(mplClock) + " | " + df.format(mmqClock) + " " + dataset.size);
  155.         mplBruna.add(4, mmqClock);
  156.          */  
  157.         dataset = fm.getDataset("/home/caio/workspace/tcc/correctFiles/brunaFive");
  158.         mplClock = objectiveFunction(dataset);
  159.         mmqClock = clockScrewMmq(dataset);
  160.         System.out.println(df.format(mplClock) + " | " + df.format(mmqClock) + " " + dataset.size);
  161.         mplBruna.add(5, mmqClock);
  162.        
  163.  
  164.        
  165.         dataset = new List();
  166.         dataset.addElement(122, 139);
  167.         dataset.addElement(114, 126);
  168.        
  169.         /*
  170.        
  171.         dataset = fm.getDataset("/home/caio/workspace/tcc/correctFiles/myRouterTwo");
  172.         mplClock = objectiveFunction(dataset);
  173.         mmqClock = clockScrewMmq(dataset);
  174.         System.out.println(df.format(mplClock) + " | " + df.format(mmqClock) + " " + dataset.size);
  175.         mplValue.add(2, mplClock);
  176.        
  177.         dataset = fm.getDataset("/home/caio/workspace/tcc/correctFiles/myRouterThree");
  178.         mplClock = objectiveFunction(dataset);
  179.         mmqClock = clockScrewMmq(dataset);
  180.         System.out.println(df.format(mplClock) + " | " + df.format(mmqClock) + " " + dataset.size);
  181.         mplValue.add(3, mplClock);
  182.        
  183.         dataset = fm.getDataset("/home/caio/workspace/tcc/correctFiles/myRouterFour");
  184.         mplClock = objectiveFunction(dataset);
  185.         mmqClock = clockScrewMmq(dataset);
  186.         System.out.println(df.format(mplClock) + " | " + df.format(mmqClock) + " " + dataset.size);
  187.         mplValue.add(4, mplClock);
  188.        
  189.         dataset = fm.getDataset("/home/caio/workspace/tcc/correctFiles/myRouterFive");
  190.         mplClock = objectiveFunction(dataset);
  191.         mmqClock = clockScrewMmq(dataset);
  192.         System.out.println(df.format(mplClock) + " | " + df.format(mmqClock) + " " + dataset.size);
  193.         mplValue.add(5, mplClock);
  194.        
  195.         mplClock = 0.0;
  196.         System.out.println("adsl ( MPL | MMQ )");
  197.        
  198.         dataset = fm.getDataset("/home/caio/workspace/tcc/correctFiles/adslOne");
  199.         mplClock = objectiveFunction(dataset);
  200.         mmqClock = clockScrewMmq(dataset);
  201.         System.out.println(df.format(mplClock) + " | " + df.format(mmqClock) + " " + dataset.size);
  202.         mplAdsl.add(1, mplClock);
  203.        
  204.         dataset = fm.getDataset("/home/caio/workspace/tcc/correctFiles/adslTwo");
  205.         mplClock = objectiveFunction(dataset);
  206.         mmqClock = clockScrewMmq(dataset);
  207.         System.out.println(df.format(mplClock) + " | " + df.format(mmqClock) + " " + dataset.size);
  208.         mplAdsl.add(2, mplClock);
  209.        
  210.        
  211.         dataset = fm.getDataset("/home/caio/workspace/tcc/correctFiles/adslThree");
  212.         mplClock = objectiveFunction(dataset);
  213.         mmqClock = clockScrewMmq(dataset);
  214.         System.out.println(df.format(mplClock) + " | " + df.format(mmqClock) + " " + dataset.size);
  215.         mplAdsl.add(3, mplClock);
  216.        
  217.        
  218.         dataset = fm.getDataset("/home/caio/workspace/tcc/correctFiles/adslFour");
  219.         mplClock = objectiveFunction(dataset);
  220.         mmqClock = clockScrewMmq(dataset);
  221.         System.out.println(df.format(mplClock) + " | " + df.format(mmqClock) + " " + dataset.size);
  222.         mplAdsl.add(4, mplClock);
  223.        
  224.        
  225.         dataset = fm.getDataset("/home/caio/workspace/tcc/correctFiles/adslFive");
  226.         mplClock = objectiveFunction(dataset);
  227.         mmqClock = clockScrewMmq(dataset);
  228.         System.out.println(df.format(mplClock) + " | " + df.format(mmqClock) + " " + dataset.size);
  229.         mplAdsl.add(5, mplClock);
  230.        
  231.        
  232.        
  233.         mplClock = 0.0;
  234.         System.out.println("Bruna ( MPL | MMQ )");
  235.         dataset = fm.getDataset("/home/caio/workspace/tcc/correctFiles/brunaOne");
  236.         mplClock = objectiveFunction(dataset);
  237.         mmqClock = clockScrewMmq(dataset);
  238.         System.out.println(df.format(mplClock) + " | " + df.format(mmqClock) + " " + dataset.size);
  239.         mplBruna.add(1, mplClock);
  240.        
  241.         dataset = fm.getDataset("/home/caio/workspace/tcc/correctFiles/brunaTwo");
  242.         mplClock = objectiveFunction(dataset);
  243.         mmqClock = clockScrewMmq(dataset);
  244.         System.out.println(df.format(mplClock) + " | " + df.format(mmqClock) + " " + dataset.size);
  245.         mplBruna.add(2, mplClock);
  246.        
  247.         dataset = fm.getDataset("/home/caio/workspace/tcc/correctFiles/brunaThree");
  248.         mplClock = objectiveFunction(dataset);
  249.         mmqClock = clockScrewMmq(dataset);
  250.         System.out.println(df.format(mplClock) + " | " + df.format(mmqClock) + " " + dataset.size);
  251.         mplBruna.add(3, mplClock);
  252.        
  253.         dataset = fm.getDataset("/home/caio/workspace/tcc/correctFiles/brunaFour");
  254.         mplClock = objectiveFunction(dataset);
  255.         mmqClock = clockScrewMmq(dataset);
  256.         System.out.println(df.format(mplClock) + " | " + df.format(mmqClock) + " " + dataset.size);
  257.         mplBruna.add(4, mplClock);
  258.        
  259.         dataset = fm.getDataset("/home/caio/workspace/tcc/correctFiles/brunaFive");
  260.         mplClock = objectiveFunction(dataset);
  261.         mmqClock = clockScrewMmq(dataset);
  262.         System.out.println(df.format(mplClock) + " | " + df.format(mmqClock) + " " + dataset.size);
  263.         mplBruna.add(5, mplClock);
  264.        
  265.         mplClock = 0.0;
  266.         System.out.println("Renata ( MPL | MMQ )");
  267.        
  268.         dataset = fm.getDataset("/home/caio/workspace/tcc/correctFiles/renataOne");
  269.         mplClock = objectiveFunction(dataset) / 1000000000;
  270.         mmqClock = clockScrewMmq(dataset);
  271.         System.out.println(df.format(mplClock) + " | " + df.format(mmqClock) + " " + dataset.size);
  272.         mplRenata.add(1, mplClock);
  273.          */  
  274.        
  275.         dcd.addSeries(mplValue);
  276.         dcd.addSeries(mplAdsl);
  277.         dcd.addSeries(mplBruna);
  278.         //dcd.addSeries(mplRenata);
  279.         //dcd.addSeries(baseLine);
  280.         //dcd.addSeries(mmqValue);
  281.        
  282.        
  283.         return dcd;
  284.     }
  285.    
  286.     public double clockScrewMmq ( List dataset ) {
  287.        
  288.         double a = 1.0;
  289.        
  290.         Packet aux = dataset.header;
  291.        
  292.         double x = 0.0;
  293.         double y = 0.0;
  294.         double z = 0.0;
  295.         double w = 0.0;
  296.         double n = dataset.size;
  297.        
  298.         while ( aux.right != null ) {
  299.            
  300.             //System.out.println(df.format(aux.xi));
  301.             //System.out.println(aux.ti);
  302.            
  303.             x +=  aux.xi * aux.ti;
  304.             y +=  aux.xi ;
  305.             z += aux.ti;
  306.             w += aux.xi * aux.xi;
  307.            
  308.            
  309.             aux = aux.right;
  310.         }
  311.        
  312.         double upperSide = x - ( ( y * z ) / n );
  313.         double downSide = w -  ( ( y * y ) / n ) ;
  314.         a = upperSide / downSide;
  315.        
  316.         //downSide = downSide / 1000000.0;
  317.         // 10000000000 works for tplink.
  318.        
  319.        
  320.        
  321.        
  322.         //System.out.println("Sigma(x²): " + df.format(y) + " SIGMA(X)² " + df.format(( Math.pow(y, 2) / dataset.size )));
  323.         //System.out.println(df.format(upperSide) + " / " + df.format(downSide));
  324.         //System.out.println("Result: " + df.format(a));
  325.        
  326.        
  327.         return a;
  328.     }
  329.    
  330.     public double objectiveFunction ( List dataset ) {
  331.        
  332.         //
  333.         double n = dataset.size;
  334.         Packet aux = dataset.header;
  335.         Packet aux2 = dataset.header.right;
  336.         Packet aux3 = dataset.header;
  337.         double result = 0.0;
  338.         double currentResult = 0.0;
  339.         double a = 0.0;
  340.         double b = 0.0;
  341.         boolean first = true;
  342.         double[] firstPoint = new double[2];
  343.         double[] secondPoint = new double[2];
  344.         double[] lineInfo;
  345.    
  346.         double condition = 0.0;
  347.    
  348.         double resulta = 0.0;
  349.         double resultb = 0.0;
  350.        
  351.        
  352.         while ( aux != null ) {
  353.  
  354.             firstPoint[0] = aux.xi;
  355.             firstPoint[1] = aux.ti;
  356.            
  357.             if ( aux.right != null ) {
  358.                 aux2 = aux.right;
  359.             }
  360.            
  361.             while ( aux2 != null ) {
  362.                
  363.                 if ( aux.right != null ) {
  364.                    
  365.                     secondPoint[0] = aux2.xi;
  366.                     secondPoint[1] = aux2.ti;
  367.                     lineInfo = getLineInfo(firstPoint, secondPoint);
  368.                     a = lineInfo[0];
  369.                     b = lineInfo[1];
  370.                    
  371.                     condition = a * aux2.xi + b;
  372.                    
  373.                     if ( condition < aux2.ti ) {
  374.                        
  375.                         //System.out.println("Condition not met:");
  376.                         aux2 = aux2.right;
  377.                        
  378.                     } else {
  379.                        
  380.                         aux3 = dataset.header;
  381.                         //System.out.print("point a: " + pointa + " ");
  382.                         //System.out.println("poinb b: " + pointb);
  383.                         while ( aux3 != null ) {
  384.                             result += ( a * aux3.xi ) + b - aux3.ti;
  385.                             aux3 = aux3.right;
  386.                            
  387.                         }
  388.                        
  389.                         result = result/n;
  390.                         //System.out.println(result);
  391.                        
  392.                         if ( first ) {
  393.                             resulta = a;
  394.                             resultb = b;
  395.                             currentResult = result;
  396.                             first = false;
  397.                            
  398.                         } else {
  399.                             if ( currentResult < result ) {                        
  400.                                 resulta = a;
  401.                                 resultb = b;
  402.                                 currentResult = result;
  403.                             }
  404.                         }
  405.                        
  406.                         aux2 = aux2.right;
  407.                         result = 0;
  408.                        
  409.                     }
  410.                    
  411.                 } else {
  412.                     aux2 = null;
  413.                 }
  414.                
  415.             }
  416.            
  417.             aux = aux.right;
  418.            
  419.         }
  420.        
  421.         return resulta;
  422.     }
  423.    
  424.     // Creating
  425.    
  426.     public double[] getLineInfo ( double[] a, double[] b) {
  427.        
  428.         // a (xa, ya) , b (xb, yb)
  429.         // y = nx + lineb
  430.         // We will use a to find b.
  431.        
  432.         double n = ( b[1] - a[1] ) / ( b[0] - a[0] );
  433.         double lineb = a[1] - ( n * a[0] );
  434.        
  435.         double[] lineInfo = new double[2];
  436.         lineInfo[0] = n;
  437.         lineInfo[1] = lineb;
  438.        
  439.         return lineInfo;
  440.     }
  441.  
  442.    
  443.    
  444.     public static void main(String[] args) throws IOException {
  445.        
  446.         MethodTester chart = new MethodTester("Dataset Behavior", "Dataset Behavior");
  447.         chart.pack();
  448.         RefineryUtilities.centerFrameOnScreen(chart);
  449.         chart.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  450.         chart.setVisible(true);
  451.        
  452.     }
  453.  
  454. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement