Advertisement
Guest User

Govnocode

a guest
Mar 10th, 2015
271
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 12.24 KB | None | 0 0
  1. package ru.megawordinc.magistratura.baeva.poiskt;
  2.  
  3.  
  4. import java.io.BufferedReader;
  5.  
  6.  
  7. public class mainform {
  8.  
  9.     //private JFrame frame;
  10.     static int n=0;
  11.     static int T=0;
  12.     private static double[][] diskretisation(double[] b_v, double[] b_n){
  13.        
  14.         double dolya=0; //new double[n];
  15.         double[][] b = new double[n][n];
  16.         for(int i=0;i<n;i++){
  17.             dolya=(b_v[i]-b_n[i])/n;
  18.             b[i][0]=b_n[i];
  19.             for(int j=1;j<n;j++)
  20.             {
  21.               b[i][j]=b[i][j-1]+dolya;
  22.             }
  23.         }
  24.         return b;
  25.     }
  26.     private static boolean checkusl(double[] beta, int T) {
  27.         for(int i=0;i<n;i++){
  28.             if (beta[i]!=1){
  29.                 return false;
  30.             }
  31.             }
  32.         return true;
  33.     }
  34.     private static boolean checkx(double Xl, int  i,int t,double[][] h, double[][][] X, double d, double K, double L, double Pr)
  35.     {
  36.         double sum = h[i][0]*X[i][0][t];
  37.         for(int j=1;j<n;j++)
  38.         {
  39.             sum =sum * h[i][j]*X[i][j][t];
  40.         }
  41.         if(Xl>=sum+d*K+L+Pr)
  42.         {
  43.             return true;
  44.         }
  45.         else
  46.         {
  47.             return false;
  48.         }
  49.     }
  50.     private static boolean checkgXY(double g, double X,double Y)
  51.     {
  52.         if(g*X>=Y)
  53.         {
  54.             return true;
  55.         }
  56.         else
  57.         {
  58.             return false;
  59.         }
  60.     }
  61.     private static boolean checkYL(double[] Y, double[] L)
  62.     {
  63.         double sumY = Y[0];
  64.         double sumL =L[0];
  65.         for(int i=1;i<n;i++)
  66.         {
  67.             sumY=sumY+Y[i];
  68.             sumL=sumL+L[i];
  69.         }
  70.         if(sumY<=sumL)
  71.         {
  72.             return true;
  73.         }
  74.         else
  75.         {
  76.             return false;
  77.         }
  78.     }
  79.    
  80.     private static double[][] kombogen(double[][] beta)
  81.     {
  82.         double [][] beta_norm = new double[n][n];
  83.         int[] indexes = new int[n];
  84.         for(int i=0;i<n;i++)
  85.         {
  86.             indexes[i]=0;
  87.         }
  88.         for(int i=0;i<n;i++)
  89.         {
  90.             for(int j=0; j<n;j++)
  91.             {
  92.                 for(int k=0;k<n;k++)
  93.                 {
  94.                 beta_norm[i][j]=beta[i][indexes[k]];
  95.                 }
  96.                 for(int k=n-1;k>0;k--)
  97.                 {
  98.                     if((indexes[k]<n-1))
  99.                     {
  100.                         indexes[k]++;
  101.                         break;
  102.                     }
  103.                 }
  104.             }
  105.            
  106.         }
  107.         double sum =0;
  108.         for(int i=0;i<n;i++)
  109.         {
  110.             sum =beta_norm[i][0];
  111.             for(int j=1;j<n;j++)
  112.             {
  113.                 sum=sum+beta_norm[i][j];
  114.             }
  115.             for(int j=0;j<n;j++)
  116.             {
  117.                 beta_norm[i][j]=beta_norm[i][j]/sum;
  118.             }
  119.         }
  120.         /**for(int i=0;i<n;i++)
  121.         {
  122.             for(int j=0;j<n;j++)
  123.             {
  124.                 System.out.print(beta_norm[i][j]+" ");
  125.             }
  126.             System.out.println();
  127.         }**/
  128.         return beta_norm;
  129.     }
  130.     /**
  131.      * Launch the application.
  132.      */
  133.    
  134.     /**
  135.      * Create the application.
  136.      */
  137.  
  138.  
  139.     /**
  140.      * Initialize the contents of the frame.
  141.      */
  142.     private static double[] formvdouble(String str,int length)
  143.     {
  144.         String tmpstr = "";
  145.         double[] masd = new double[length];
  146.         int i=0, j=0;
  147.         while(i<str.length())
  148.         {
  149.             if(str.charAt(i)!=' ')
  150.             {
  151.             char c = str.charAt(i);
  152.             switch (c)
  153.             {
  154.             case '0': tmpstr=tmpstr+"0"; break;
  155.             case '1': tmpstr=tmpstr+"1"; break;
  156.             case '2': tmpstr=tmpstr+"2"; break;
  157.             case '3': tmpstr=tmpstr+"3"; break;
  158.             case '4': tmpstr=tmpstr+"4"; break;
  159.             case '5': tmpstr=tmpstr+"5"; break;
  160.             case '6': tmpstr=tmpstr+"6"; break;
  161.             case '7': tmpstr=tmpstr+"7"; break;
  162.             case '8': tmpstr=tmpstr+"8"; break;
  163.             case '9': tmpstr=tmpstr+"9"; break;
  164.             case ',': tmpstr=tmpstr+"."; break;
  165.             }
  166.             }
  167.             else
  168.             {
  169.              masd[j]=Double.parseDouble(tmpstr);
  170.              tmpstr="";
  171.              j++;
  172.             }
  173.             i++;
  174.            
  175.         }
  176.         masd[j]=Double.parseDouble(tmpstr);
  177.         return masd;
  178.     }
  179.     private static void printmax(double[][][] X, double[][][] K, double[][][] L, double[] g)
  180.     {
  181.         double max=0,sum=0;
  182.         int max_j=0;
  183.         for(int j=0;j<n;j++)
  184.         {
  185.             for(int i=0;i<n;i++)
  186.             {
  187.                 sum=sum+X[i][j][T-1];
  188.             }
  189.             if(sum>max)
  190.             {
  191.                 max=sum;
  192.                 max_j=j;
  193.             }
  194.         }
  195.         System.out.println("Капитал");
  196.         System.out.print("\t");
  197.         for(int j=0;j<n;j++)
  198.         {
  199.             System.out.print("Отр. "+(j+1)+"\t");
  200.         }
  201.         System.out.println();
  202.         for(int t=0;t<T;t++)
  203.         {
  204.             System.out.print("Год "+(t+1)+"\t");
  205.             for(int i=0;i<n;i++)
  206.             {
  207.                 System.out.print(K[i][max_j][t]+"\t");
  208.             }
  209.             System.out.println();
  210.            
  211.         }
  212.         System.out.println("Выпуск");
  213.         System.out.print("\t");
  214.         for(int j=0;j<n;j++)
  215.         {
  216.             System.out.print("Отр. "+(j+1)+"\t");
  217.         }
  218.         System.out.println();
  219.         for(int t=0;t<T;t++)
  220.         {
  221.             System.out.print("Год "+(t+1)+"\t");
  222.             for(int i=0;i<n;i++)
  223.             {
  224.                 System.out.print(X[i][max_j][t]+"\t");
  225.             }
  226.             System.out.println();
  227.            
  228.         }
  229.         System.out.println("Труд");
  230.         System.out.print("\t");
  231.         for(int j=0;j<n;j++)
  232.         {
  233.             System.out.print("Отр. "+(j+1)+"\t");
  234.         }
  235.         System.out.println();
  236.         for(int t=0;t<T;t++)
  237.         {
  238.             System.out.print("Год "+(t+1)+"\t");
  239.             for(int i=0;i<n;i++)
  240.             {
  241.                 System.out.print(L[i][max_j][t]+"\t");
  242.             }
  243.             System.out.println();
  244.            
  245.         }
  246.         System.out.println("Потребление");
  247.         System.out.print("\t");
  248.         for(int j=0;j<n;j++)
  249.         {
  250.             System.out.print("Отр. "+(j+1)+"\t");
  251.         }
  252.         System.out.println();
  253.         for(int t=0;t<T;t++)
  254.         {
  255.             System.out.print("Год "+(t+1)+"\t");
  256.             for(int i=0;i<n;i++)
  257.             {
  258.                 System.out.print(g[i]*X[i][max_j][t]+"\t");
  259.             }
  260.             System.out.println();
  261.            
  262.         }
  263.        
  264.     }
  265.     public static void main(String[] args) throws NumberFormatException, IOException {
  266.         /**Scanner input = null;
  267.         try {
  268.             input = new Scanner(new File("input.txt"));
  269.         } catch (FileNotFoundException e) {
  270.             // TODO Auto-generated catch block
  271.             e.printStackTrace();
  272.         }**/
  273.         BufferedReader input = new BufferedReader(new FileReader("input.txt"));
  274.         String str;
  275.         str = input.readLine();
  276.         n = Integer.parseInt(str);
  277.         System.out.println("Количество отраслей: "+n);
  278.         str = input.readLine();
  279.         T = Integer.parseInt(str);;
  280.         System.out.println("Количество периодов: "+T);
  281.         //int T = input.nextInt();
  282.         double [][][] K = new double[n][n][T];
  283.         double [][][] L = new double[n][n][T];
  284.         double[][][] X = new double[n][n][T];
  285.         //double[] lamda = new double[n];
  286.         //double[] c = new double[n];
  287.         /**for (int i = 0; i < n; i++) {
  288.             lamda[i] = input.nextDouble();
  289.         }**/
  290.         /**for (int i = 0; i < n; i++) {
  291.             c[i] = input.nextDouble();
  292.         }**/
  293.         str = input.readLine();
  294.         double[] tmpv = formvdouble(str,n);
  295.         System.out.print("Ввод K0: ");
  296.        
  297.         for(int i=0;i<n;i++)
  298.         {
  299.             for(int j=0;j<n;j++)
  300.             {
  301.               K[i][j][0]=tmpv[j];
  302.               if(i==0)
  303.               {
  304.               System.out.print(K[i][j][0]+" ");
  305.               }
  306.             }
  307.         }
  308.         System.out.println();
  309.         str = input.readLine();
  310.         tmpv = formvdouble(str,n);
  311.         System.out.print("Ввод L0: ");
  312.         for(int i=0;i<n;i++)
  313.         {
  314.             for(int j=0;j<n;j++)
  315.             {
  316.             L[i][j][0]=tmpv[j];
  317.             if(i==0){
  318.                   System.out.print(L[i][j][0]+" ");
  319.                   }
  320.             }
  321.         }
  322.         System.out.println();
  323.         System.out.print("Ввод dK: ");
  324.         str = input.readLine();
  325.         double[] dK = formvdouble(str,T);
  326.         for (int i =0; i < T; i++) {
  327.             //dK[i]=tmpv[i];
  328.             System.out.print(dK[i]+" ");
  329.         }
  330.         System.out.println();
  331.         System.out.print("Ввод dL: ");
  332.         str = input.readLine();
  333.         double[] dL = formvdouble(str,T);
  334.         for (int i =0; i < T; i++) {
  335.             //dL[i]=tmpv[i];
  336.             System.out.print(dL[i]+" ");
  337.         }
  338.         System.out.println();
  339.         System.out.print("Ввод нижней границы beta: ");
  340.         str = input.readLine();
  341.         double[] beta_n = formvdouble(str,n);
  342.         for (int i=0;i<n;i++){
  343.             System.out.print(beta_n[i]+" ");
  344.         }
  345.         System.out.println();
  346.         System.out.print("Ввод верхней границы beta: ");
  347.         str = input.readLine();
  348.         double[] beta_v = formvdouble(str,n);
  349.         for (int i=0;i<n;i++){
  350.             //beta_v[i]=input.nextDouble();
  351.             System.out.print(beta_v[i]+" ");
  352.         }
  353.         System.out.println();
  354.         System.out.print("Нижняя граница delta: ");
  355.         str = input.readLine();
  356.         double[] d_n = formvdouble(str,n);
  357.         for (int i=0;i<n;i++){
  358.             //d_n[i]=input.nextDouble();
  359.             System.out.print(d_n[i]+" ");
  360.         }
  361.         System.out.println();
  362.         System.out.print("Верхняя граница delta: ");
  363.         str = input.readLine();
  364.         double[] d_v = formvdouble(str,n);
  365.         for (int i=0;i<n;i++){
  366.             //d_v[i]=input.nextDouble();
  367.             System.out.print(d_v[i]+" ");
  368.         }
  369.         System.out.println();
  370.         System.out.print("Доля выбытия основных фондов d: ");
  371.         str = input.readLine();
  372.         double[] d = formvdouble(str,n);
  373.         for (int i=0;i<n;i++){
  374.             //d[i]=input.nextDouble();
  375.             System.out.print(d[i]+" ");
  376.         }
  377.         System.out.println();
  378.         System.out.println("Минимальная прибыль Pr: ");
  379.         double[][] min_Pr = new double[T][n];
  380.         for (int j=0;j<T;j++){
  381.             str = input.readLine();
  382.             tmpv = formvdouble(str,n);
  383.             for(int i=0;i<n;i++){
  384.             min_Pr[j][i]=tmpv[i];
  385.             System.out.print(min_Pr[j][i]+" ");
  386.             }
  387.             System.out.println();
  388.         }
  389.         System.out.println("Максимальная прибыль Pr: ");
  390.         double[][] max_Pr = new double[T][n];
  391.         for (int j=0;j<T;j++){
  392.             str = input.readLine();
  393.             tmpv = formvdouble(str,n);
  394.             for(int i=0;i<n;i++)
  395.             {
  396.             max_Pr[j][i]=tmpv[i];
  397.             System.out.print(max_Pr[j][i]+" ");
  398.             }
  399.             System.out.println();
  400.         }
  401.         System.out.print("Коэффиценты g: ");
  402.         str = input.readLine();
  403.         double[] g = formvdouble(str,n);
  404.         for (int i=0;i<n;i++){
  405.             //g[i]=input.nextDouble();
  406.             System.out.print(g[i]+" ");
  407.         }
  408.         System.out.println();
  409.         System.out.println("Матрица коэффицентов распределения H: ");
  410.         double[][] H = new double[n][n];
  411.         for (int i=0;i<n;i++){
  412.             str = input.readLine();
  413.             tmpv = formvdouble(str,n);
  414.             for (int j=0;j<n;j++){
  415.                 H[i][j]=tmpv[j];
  416.                 System.out.print(H[i][j]+" ");
  417.             }
  418.             System.out.println();
  419.         }
  420.         str = input.readLine();
  421.         double[] a = formvdouble(str,n);
  422.         for (int i=0;i<n;i++){
  423.                 //a[i]=input.nextDouble();
  424.             }
  425.         str = input.readLine();
  426.         double[] alpha = formvdouble(str,n);
  427.         //double[] alpha = new double[n];
  428.         for (int i=0;i<n;i++){
  429.                 //alpha[i]=input.nextDouble();
  430.             }
  431.         str = input.readLine();
  432.         double[] gamma = formvdouble(str,n);
  433.         //double[] gamma = new double[n];
  434.         for (int i=0;i<n;i++){
  435.             //gamma[i]=input.nextDouble();
  436.         }
  437.         double[][] beta = diskretisation(beta_v,beta_n);
  438.         double[][] delta = diskretisation(d_v,d_n);
  439.         double[][][] Pr_norm = new double[n][n][T];
  440.         double[][]Pr_tmp = new double[n][n];
  441.         for(int t=0;t<T;t++)
  442.         {
  443.             double[] Pr_tmp_min = new double[n];
  444.             double[] Pr_tmp_max = new double[n];
  445.             for(int i=0;i<n;i++)
  446.             {
  447.                 Pr_tmp_min[i]=min_Pr[t][i];
  448.                 Pr_tmp_max[i]=max_Pr[t][i];
  449.             }
  450.             Pr_tmp=diskretisation(Pr_tmp_max,Pr_tmp_min);
  451.             for(int i=0;i<n;i++)
  452.             {
  453.                 for(int j=0;j<n;j++)
  454.                 {
  455.                 Pr_norm[i][j][t]=Pr_tmp[i][j];
  456.                 }
  457.             }
  458.         }
  459.         //double[][][] Pr = diskretisation(max_Pr,min_Pr);
  460.         /**if (checkusl(b,T)){
  461.             if (checkusl(beta,T)){
  462.                 System.out.println("Условия выполнены");
  463.             }
  464.         }**/
  465.         double [][] beta_norm = kombogen(beta);
  466.         double [][] delta_norm = kombogen(delta);
  467.  
  468.         for(int i=1;i<n;i++)
  469.         {
  470.             for(int j=0;j<n;j++)
  471.             {
  472.                 for(int t=1;t<T;t++)
  473.                 {
  474.                  K[i][j][t]=K[i][j][t-1]+beta_norm[i][j]*dL[t];
  475.                 }
  476.             }
  477.         }
  478.         for(int i=1;i<n;i++)
  479.         {
  480.             for(int j=0;j<n;j++)
  481.             {
  482.                 for(int t=1;t<T;t++)
  483.               L[i][j][t]=L[i][j][t-1]+delta_norm[i][j]*dL[t];
  484.             }
  485.         }
  486.         for(int i=0;i<n;i++)
  487.         {
  488.             for(int j=0;j<n;j++)
  489.             {
  490.                 for(int t=0;t<T;t++)
  491.                 {
  492.                  X[i][j][t]=a[i]*Math.pow(L[i][j][t],alpha[i])*Math.pow(K[i][j][t], 1-alpha[i])*Math.pow(Math.E, gamma[i]);
  493.                }
  494.             }
  495.         }
  496.         System.out.println();
  497.         System.out.println();
  498.         System.out.println();
  499.         for(int i=0;i<n;i++)
  500.         {
  501.             for(int j=0;j<n;j++)
  502.             {
  503.                 for(int t=0;t<T;t++)
  504.                 {
  505.                  if(!(checkx(X[i][j][t],i,t,H,X,d[i],K[i][j][t],L[i][j][t],Pr_norm[i][j][t])))
  506.                  {
  507.                     X[i][j][t]=0;
  508.                  }
  509.                  //System.out.print(X[i][j][t]+" ");
  510.                 }
  511.                 //System.out.println();
  512.             }
  513.             //System.out.println();
  514.         }
  515.         //System.out.println();
  516.         System.out.println("Вывод");
  517.         printmax(X, K, L,g);
  518.        
  519.         /**
  520.          * frame = new JFrame(); frame.setResizable(false); frame.setBounds(100,
  521.          * 100, 450, 413); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  522.          * frame.getContentPane().setLayout(null); JLabel label = new
  523.          * JLabel("Test label"); label.setBounds(42, 60, 354, 160);
  524.          * label.setMaximumSize(new Dimension(30, 15)); label.setMinimumSize(new
  525.          * Dimension(30, 15)); frame.getContentPane().add(label);
  526.          *
  527.          * JLabel label_1 = new JLabel("пппп");
  528.          * frame.getContentPane().add(label_1); label_1.setBounds(94,60, 354,
  529.          * 326);
  530.          **/
  531.     }
  532. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement