Advertisement
Guest User

Untitled

a guest
Nov 25th, 2015
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 9.71 KB | None | 0 0
  1. package MSLab3;
  2.  
  3. import javax.swing.*;
  4. import javax.swing.table.DefaultTableCellRenderer;
  5. import java.awt.*;
  6. import java.awt.event.ActionEvent;
  7. import java.awt.event.ActionListener;
  8. import java.util.Random;
  9.  
  10. public class MSLab3 extends JFrame {
  11.  
  12.     JTextField takty;
  13.     JTextField Z0,Z1,Z2,Z3,Z4,Z5;
  14.     JTextField lZ0,lZ1,lZ2,lZ3,lZ4,lZ5;
  15.     JTable tableP;
  16.     int SIZE = 6;
  17.     public Double P[][] = new Double[SIZE][SIZE];
  18.     Double B[][] = new Double[SIZE][SIZE];
  19.     Double output[] = new Double[SIZE];
  20.     Double stan[] = new Double[SIZE];
  21.  
  22.     public MSLab3() {
  23.         super("Імітаційне моделювання процесу функціонування скінченного дискретного стохастичного автомата");
  24.         setDefaultCloseOperation(EXIT_ON_CLOSE);
  25.         setInterface();
  26.         setVisible(true);
  27.         setSize(500, 420);
  28.         setLocationRelativeTo(null);
  29.     }
  30.  
  31.     public void setInterface() {
  32.         JLabel l1, l3, l5;
  33.         l1 = new JLabel("Матриця Р:");
  34.         l3 = new JLabel("Таблиця виходів:");
  35.         l5 = new JLabel("Кількість тактів:");
  36.  
  37.         takty = new JTextField(6);
  38.  
  39.         Box full = Box.createHorizontalBox();
  40.         full.add(Box.createHorizontalStrut(50));
  41.  
  42.         Box box = Box.createVerticalBox();
  43.         box.add(Box.createVerticalStrut(20));
  44.         box.add(l1);
  45.         box.add(Box.createVerticalStrut(5));
  46.         box.add(createTableP());
  47.         box.add(Box.createVerticalStrut(50));
  48.         box.add(l3);
  49.         box.add(Box.createVerticalStrut(5));
  50.             JPanel outl = new JPanel(new FlowLayout(FlowLayout.CENTER,0,0));
  51.             setZL();
  52.             outl.add(lZ0); outl.add(lZ1);outl.add(lZ2);outl.add(lZ3);outl.add(lZ4);outl.add(lZ5);
  53.             JPanel out = new JPanel(new FlowLayout(FlowLayout.CENTER,0,0));
  54.             initialiseZ();
  55.             out.add(Z0); out.add(Z1);out.add(Z2);out.add(Z3);out.add(Z4);out.add(Z5);
  56.         box.add(outl);
  57.         box.add(out);
  58.         box.add(Box.createVerticalStrut(20));
  59.             JPanel count = new JPanel(new FlowLayout(FlowLayout.CENTER,10,10));
  60.             count.add(l5); count.add(takty);
  61.         box.add(count);
  62.  
  63.         JPanel buttons = new JPanel(new FlowLayout(FlowLayout.CENTER,10,10));
  64.         JButton go = new JButton("Порахувати");
  65.         go.setSize(120,30);
  66.         go.addActionListener(new ActionListener() {
  67.             @Override
  68.             public void actionPerformed(ActionEvent e) {
  69.                 calculate();
  70.             }
  71.         });
  72.         JButton fill = new JButton("Заповнити");
  73.         fill.setSize(120,30);
  74.         fill.addActionListener(new ActionListener() {
  75.             @Override
  76.             public void actionPerformed(ActionEvent e) {
  77.                 for (int i = 0; i < SIZE; i++){
  78.                     for(int j = 0; j < SIZE; j++){
  79.                         tableP.setValueAt(0, 0, 0); tableP.setValueAt(0.3, 0, 1); tableP.setValueAt(0.2, 0, 2); tableP.setValueAt(0.5, 0, 3);
  80.                         tableP.setValueAt(0, 0, 4); tableP.setValueAt(0, 0, 5);
  81.                         tableP.setValueAt(0, 1, 0); tableP.setValueAt(0.5, 1, 1); tableP.setValueAt(0.2, 1, 2); tableP.setValueAt(0.3, 1, 3);
  82.                         tableP.setValueAt(0, 1, 4); tableP.setValueAt(0, 1, 5);
  83.                         tableP.setValueAt(0, 2, 0); tableP.setValueAt(0, 2, 1); tableP.setValueAt(0, 2, 2); tableP.setValueAt(0, 2, 3);
  84.                         tableP.setValueAt(0.5, 2, 4); tableP.setValueAt(0.5, 2, 5);
  85.                         tableP.setValueAt(0, 3, 0); tableP.setValueAt(0.1, 3, 1); tableP.setValueAt(0.1, 3, 2); tableP.setValueAt(0.3, 3, 3);
  86.                         tableP.setValueAt(0.5, 3, 4); tableP.setValueAt(0, 3, 5);
  87.                         tableP.setValueAt(0, 4, 0); tableP.setValueAt(0, 4, 1); tableP.setValueAt(0, 4, 2); tableP.setValueAt(0.2, 4, 3);
  88.                         tableP.setValueAt(0, 4, 4); tableP.setValueAt(0.8, 4, 5);
  89.                         tableP.setValueAt(0, 5, 0); tableP.setValueAt(0, 5, 1); tableP.setValueAt(0, 5, 2); tableP.setValueAt(0, 5, 3);
  90.                         tableP.setValueAt(1, 5, 4); tableP.setValueAt(0, 5, 5);
  91.  
  92.                         Z0.setText("0"); Z1.setText("1");Z2.setText("1");Z3.setText("1");Z4.setText("0");Z5.setText("0");
  93.  
  94.                         takty.setText("10000");
  95.                     }
  96.                 }
  97.             }
  98.         });
  99.         JButton exit = new JButton("Вихід");
  100.         exit.setSize(120, 30);
  101.         exit.addActionListener(new ActionListener() {
  102.             @Override
  103.             public void actionPerformed(ActionEvent e) {
  104.                 System.exit(0);
  105.             }
  106.         });
  107.         buttons.add(go);
  108.         buttons.add(fill);
  109.         buttons.add(exit);
  110.         box.add(buttons);
  111.  
  112.         full.add(box);
  113.         full.add(Box.createHorizontalStrut(50));
  114.  
  115.         setContentPane(full);
  116.  
  117.     }
  118.  
  119.     private void calculate() {
  120.         for (int i = 0; i < SIZE; i++){
  121.             for(int j = 0; j < SIZE; j++){
  122.                 P[i][j] = Double.valueOf(tableP.getValueAt(i, j).toString());
  123.             }
  124.         }
  125.  
  126.         for (int i = 0; i < SIZE; i++){
  127.             for(int j = 0; j < SIZE; j++){
  128.                 System.out.print(P[i][j] + "  ");
  129.             }
  130.             System.out.println();
  131.         }
  132.  
  133.         double random;
  134.         double currentSUM = 0.0;
  135.         int pos = 1; // current row position
  136.         int TAKTY = Integer.valueOf(takty.getText());
  137.         for(int i = 0; i < SIZE; i++)
  138.             for (int j = 0; j < SIZE; j++)
  139.                 B[i][j] = 0.0;
  140.         for (int t = 0; t < TAKTY; t++)
  141.         {
  142.             random = new Random().nextDouble();
  143.             System.out.println("random is: "+ random + " ");
  144.             for (int j = 1; j < SIZE; j++)
  145.             {
  146.                 currentSUM += P[pos][j];
  147.                 if (currentSUM > random ) // higher sum is found, then
  148.                 {
  149.                     System.out.println("currentSUM = " + currentSUM + " > random = "+ random+" ");
  150.                     B[pos][j] += 1;         //mark appropriate Bmatrix cell and
  151.                     pos = j;                        // jump to the position of j column
  152.                     currentSUM = 0.0;       // make sum zero and repeat until TAKTY
  153.                     break;
  154.                 }
  155.                 if (random == currentSUM) // sum equals the generated num
  156.                 {
  157.                     System.out.println("currentSUM = " + currentSUM + " == random = "+ random+" ");
  158.                     B[pos - 1][j] += 1; // mark Bmatrix cell in previous row but still in the same column
  159.                     pos = j;                        // jumo to the postion of j column
  160.                     currentSUM = 0.0;       // make sum zero and repeat until TAKTY
  161.                     break;
  162.                 }
  163.  
  164.             }
  165.         }
  166.  
  167.         for(int i = 0; i < SIZE; i++)
  168.                 stan[i] = 0.0;
  169.  
  170.         //some shit with stany
  171.         for(int i = 0; i < SIZE; i++)
  172.             for(int j = 0; j < SIZE; j++) {
  173.                 stan[i] += B[j][i];
  174.             }
  175.  
  176.         for (int i = 0; i < SIZE; i++)
  177.             stan[i] = stan[i] / TAKTY;
  178.  
  179.         double stateCURR = 0.0;
  180.         output[0] = Double.valueOf(Z0.getText());
  181.         output[1] = Double.valueOf(Z1.getText());
  182.         output[2] = Double.valueOf(Z2.getText());
  183.         output[3] = Double.valueOf(Z3.getText());
  184.         output[4] = Double.valueOf(Z4.getText());
  185.         output[5] = Double.valueOf(Z5.getText());
  186.         for (int i = 0; i < SIZE; i++)
  187.             if (output[i] == 1.0)
  188.                 stateCURR += stan[i];
  189.  
  190.         new MyResult(this, B, stateCURR, stan);
  191.  
  192.     }
  193.  
  194.     private void initialiseZ() {
  195.         int size = 3;
  196.         Z0 = new JTextField(size);
  197.         Z1 = new JTextField(size);
  198.         Z2 = new JTextField(size);
  199.         Z3 = new JTextField(size);
  200.         Z4 = new JTextField(size);
  201.         Z5 = new JTextField(size);
  202.     }
  203.  
  204.     private void setZL() {
  205.         int size = 3;
  206.         lZ0 = new JTextField(size);
  207.         lZ1 = new JTextField(size);
  208.         lZ2 = new JTextField(size);
  209.         lZ3 = new JTextField(size);
  210.         lZ4 = new JTextField(size);
  211.         lZ5 = new JTextField(size);
  212.         lZ0.setText("Z0");
  213.         lZ0.setEditable(false);
  214.         lZ1.setText("Z1");
  215.         lZ1.setEditable(false);
  216.         lZ2.setText("Z2");
  217.         lZ2.setEditable(false);
  218.         lZ3.setText("Z3");
  219.         lZ3.setEditable(false);
  220.         lZ4.setText("Z4");
  221.         lZ4.setEditable(false);
  222.         lZ5.setText("Z5");
  223.         lZ5.setEditable(false);
  224.     }
  225.  
  226.     private JScrollPane createTableP() {
  227.  
  228.         String[] columnNames = {
  229.                 "Z0", "Z1","Z2","Z3","Z4","Z5"
  230.         };
  231.  
  232.         tableP = new JTable(P, columnNames);
  233.         tableP.setModel(new javax.swing.table.DefaultTableModel(P, columnNames));
  234.         tableP.setDefaultRenderer(tableP.getColumnClass(1), new DefaultTableCellRenderer() {
  235.             public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
  236.                 super.setHorizontalAlignment(SwingConstants.CENTER);
  237.                 super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
  238.                 return this;
  239.             }
  240.         });
  241.         tableP.getModel().addTableModelListener(tableP);
  242.         JScrollPane scrollPane = new JScrollPane(tableP, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
  243.         scrollPane.setSize(20,30);
  244.  
  245.         return scrollPane;
  246.     }
  247.  
  248.     public static void main(String[] args) {
  249.         new MSLab3();
  250.     }
  251. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement