Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ru.megawordinc.magistratura.baeva.poiskt;
- import java.io.BufferedReader;
- public class mainform {
- //private JFrame frame;
- static int n=0;
- static int T=0;
- private static double[][] diskretisation(double[] b_v, double[] b_n){
- double dolya=0; //new double[n];
- double[][] b = new double[n][n];
- for(int i=0;i<n;i++){
- dolya=(b_v[i]-b_n[i])/n;
- b[i][0]=b_n[i];
- for(int j=1;j<n;j++)
- {
- b[i][j]=b[i][j-1]+dolya;
- }
- }
- return b;
- }
- private static boolean checkusl(double[] beta, int T) {
- for(int i=0;i<n;i++){
- if (beta[i]!=1){
- return false;
- }
- }
- return true;
- }
- private static boolean checkx(double Xl, int i,int t,double[][] h, double[][][] X, double d, double K, double L, double Pr)
- {
- double sum = h[i][0]*X[i][0][t];
- for(int j=1;j<n;j++)
- {
- sum =sum * h[i][j]*X[i][j][t];
- }
- if(Xl>=sum+d*K+L+Pr)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- private static boolean checkgXY(double g, double X,double Y)
- {
- if(g*X>=Y)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- private static boolean checkYL(double[] Y, double[] L)
- {
- double sumY = Y[0];
- double sumL =L[0];
- for(int i=1;i<n;i++)
- {
- sumY=sumY+Y[i];
- sumL=sumL+L[i];
- }
- if(sumY<=sumL)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- private static double[][] kombogen(double[][] beta)
- {
- double [][] beta_norm = new double[n][n];
- int[] indexes = new int[n];
- for(int i=0;i<n;i++)
- {
- indexes[i]=0;
- }
- for(int i=0;i<n;i++)
- {
- for(int j=0; j<n;j++)
- {
- for(int k=0;k<n;k++)
- {
- beta_norm[i][j]=beta[i][indexes[k]];
- }
- for(int k=n-1;k>0;k--)
- {
- if((indexes[k]<n-1))
- {
- indexes[k]++;
- break;
- }
- }
- }
- }
- double sum =0;
- for(int i=0;i<n;i++)
- {
- sum =beta_norm[i][0];
- for(int j=1;j<n;j++)
- {
- sum=sum+beta_norm[i][j];
- }
- for(int j=0;j<n;j++)
- {
- beta_norm[i][j]=beta_norm[i][j]/sum;
- }
- }
- /**for(int i=0;i<n;i++)
- {
- for(int j=0;j<n;j++)
- {
- System.out.print(beta_norm[i][j]+" ");
- }
- System.out.println();
- }**/
- return beta_norm;
- }
- /**
- * Launch the application.
- */
- /**
- * Create the application.
- */
- /**
- * Initialize the contents of the frame.
- */
- private static double[] formvdouble(String str,int length)
- {
- String tmpstr = "";
- double[] masd = new double[length];
- int i=0, j=0;
- while(i<str.length())
- {
- if(str.charAt(i)!=' ')
- {
- char c = str.charAt(i);
- switch (c)
- {
- case '0': tmpstr=tmpstr+"0"; break;
- case '1': tmpstr=tmpstr+"1"; break;
- case '2': tmpstr=tmpstr+"2"; break;
- case '3': tmpstr=tmpstr+"3"; break;
- case '4': tmpstr=tmpstr+"4"; break;
- case '5': tmpstr=tmpstr+"5"; break;
- case '6': tmpstr=tmpstr+"6"; break;
- case '7': tmpstr=tmpstr+"7"; break;
- case '8': tmpstr=tmpstr+"8"; break;
- case '9': tmpstr=tmpstr+"9"; break;
- case ',': tmpstr=tmpstr+"."; break;
- }
- }
- else
- {
- masd[j]=Double.parseDouble(tmpstr);
- tmpstr="";
- j++;
- }
- i++;
- }
- masd[j]=Double.parseDouble(tmpstr);
- return masd;
- }
- private static void printmax(double[][][] X, double[][][] K, double[][][] L, double[] g)
- {
- double max=0,sum=0;
- int max_j=0;
- for(int j=0;j<n;j++)
- {
- for(int i=0;i<n;i++)
- {
- sum=sum+X[i][j][T-1];
- }
- if(sum>max)
- {
- max=sum;
- max_j=j;
- }
- }
- System.out.println("Капитал");
- System.out.print("\t");
- for(int j=0;j<n;j++)
- {
- System.out.print("Отр. "+(j+1)+"\t");
- }
- System.out.println();
- for(int t=0;t<T;t++)
- {
- System.out.print("Год "+(t+1)+"\t");
- for(int i=0;i<n;i++)
- {
- System.out.print(K[i][max_j][t]+"\t");
- }
- System.out.println();
- }
- System.out.println("Выпуск");
- System.out.print("\t");
- for(int j=0;j<n;j++)
- {
- System.out.print("Отр. "+(j+1)+"\t");
- }
- System.out.println();
- for(int t=0;t<T;t++)
- {
- System.out.print("Год "+(t+1)+"\t");
- for(int i=0;i<n;i++)
- {
- System.out.print(X[i][max_j][t]+"\t");
- }
- System.out.println();
- }
- System.out.println("Труд");
- System.out.print("\t");
- for(int j=0;j<n;j++)
- {
- System.out.print("Отр. "+(j+1)+"\t");
- }
- System.out.println();
- for(int t=0;t<T;t++)
- {
- System.out.print("Год "+(t+1)+"\t");
- for(int i=0;i<n;i++)
- {
- System.out.print(L[i][max_j][t]+"\t");
- }
- System.out.println();
- }
- System.out.println("Потребление");
- System.out.print("\t");
- for(int j=0;j<n;j++)
- {
- System.out.print("Отр. "+(j+1)+"\t");
- }
- System.out.println();
- for(int t=0;t<T;t++)
- {
- System.out.print("Год "+(t+1)+"\t");
- for(int i=0;i<n;i++)
- {
- System.out.print(g[i]*X[i][max_j][t]+"\t");
- }
- System.out.println();
- }
- }
- public static void main(String[] args) throws NumberFormatException, IOException {
- /**Scanner input = null;
- try {
- input = new Scanner(new File("input.txt"));
- } catch (FileNotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }**/
- BufferedReader input = new BufferedReader(new FileReader("input.txt"));
- String str;
- str = input.readLine();
- n = Integer.parseInt(str);
- System.out.println("Количество отраслей: "+n);
- str = input.readLine();
- T = Integer.parseInt(str);;
- System.out.println("Количество периодов: "+T);
- //int T = input.nextInt();
- double [][][] K = new double[n][n][T];
- double [][][] L = new double[n][n][T];
- double[][][] X = new double[n][n][T];
- //double[] lamda = new double[n];
- //double[] c = new double[n];
- /**for (int i = 0; i < n; i++) {
- lamda[i] = input.nextDouble();
- }**/
- /**for (int i = 0; i < n; i++) {
- c[i] = input.nextDouble();
- }**/
- str = input.readLine();
- double[] tmpv = formvdouble(str,n);
- System.out.print("Ввод K0: ");
- for(int i=0;i<n;i++)
- {
- for(int j=0;j<n;j++)
- {
- K[i][j][0]=tmpv[j];
- if(i==0)
- {
- System.out.print(K[i][j][0]+" ");
- }
- }
- }
- System.out.println();
- str = input.readLine();
- tmpv = formvdouble(str,n);
- System.out.print("Ввод L0: ");
- for(int i=0;i<n;i++)
- {
- for(int j=0;j<n;j++)
- {
- L[i][j][0]=tmpv[j];
- if(i==0){
- System.out.print(L[i][j][0]+" ");
- }
- }
- }
- System.out.println();
- System.out.print("Ввод dK: ");
- str = input.readLine();
- double[] dK = formvdouble(str,T);
- for (int i =0; i < T; i++) {
- //dK[i]=tmpv[i];
- System.out.print(dK[i]+" ");
- }
- System.out.println();
- System.out.print("Ввод dL: ");
- str = input.readLine();
- double[] dL = formvdouble(str,T);
- for (int i =0; i < T; i++) {
- //dL[i]=tmpv[i];
- System.out.print(dL[i]+" ");
- }
- System.out.println();
- System.out.print("Ввод нижней границы beta: ");
- str = input.readLine();
- double[] beta_n = formvdouble(str,n);
- for (int i=0;i<n;i++){
- System.out.print(beta_n[i]+" ");
- }
- System.out.println();
- System.out.print("Ввод верхней границы beta: ");
- str = input.readLine();
- double[] beta_v = formvdouble(str,n);
- for (int i=0;i<n;i++){
- //beta_v[i]=input.nextDouble();
- System.out.print(beta_v[i]+" ");
- }
- System.out.println();
- System.out.print("Нижняя граница delta: ");
- str = input.readLine();
- double[] d_n = formvdouble(str,n);
- for (int i=0;i<n;i++){
- //d_n[i]=input.nextDouble();
- System.out.print(d_n[i]+" ");
- }
- System.out.println();
- System.out.print("Верхняя граница delta: ");
- str = input.readLine();
- double[] d_v = formvdouble(str,n);
- for (int i=0;i<n;i++){
- //d_v[i]=input.nextDouble();
- System.out.print(d_v[i]+" ");
- }
- System.out.println();
- System.out.print("Доля выбытия основных фондов d: ");
- str = input.readLine();
- double[] d = formvdouble(str,n);
- for (int i=0;i<n;i++){
- //d[i]=input.nextDouble();
- System.out.print(d[i]+" ");
- }
- System.out.println();
- System.out.println("Минимальная прибыль Pr: ");
- double[][] min_Pr = new double[T][n];
- for (int j=0;j<T;j++){
- str = input.readLine();
- tmpv = formvdouble(str,n);
- for(int i=0;i<n;i++){
- min_Pr[j][i]=tmpv[i];
- System.out.print(min_Pr[j][i]+" ");
- }
- System.out.println();
- }
- System.out.println("Максимальная прибыль Pr: ");
- double[][] max_Pr = new double[T][n];
- for (int j=0;j<T;j++){
- str = input.readLine();
- tmpv = formvdouble(str,n);
- for(int i=0;i<n;i++)
- {
- max_Pr[j][i]=tmpv[i];
- System.out.print(max_Pr[j][i]+" ");
- }
- System.out.println();
- }
- System.out.print("Коэффиценты g: ");
- str = input.readLine();
- double[] g = formvdouble(str,n);
- for (int i=0;i<n;i++){
- //g[i]=input.nextDouble();
- System.out.print(g[i]+" ");
- }
- System.out.println();
- System.out.println("Матрица коэффицентов распределения H: ");
- double[][] H = new double[n][n];
- for (int i=0;i<n;i++){
- str = input.readLine();
- tmpv = formvdouble(str,n);
- for (int j=0;j<n;j++){
- H[i][j]=tmpv[j];
- System.out.print(H[i][j]+" ");
- }
- System.out.println();
- }
- str = input.readLine();
- double[] a = formvdouble(str,n);
- for (int i=0;i<n;i++){
- //a[i]=input.nextDouble();
- }
- str = input.readLine();
- double[] alpha = formvdouble(str,n);
- //double[] alpha = new double[n];
- for (int i=0;i<n;i++){
- //alpha[i]=input.nextDouble();
- }
- str = input.readLine();
- double[] gamma = formvdouble(str,n);
- //double[] gamma = new double[n];
- for (int i=0;i<n;i++){
- //gamma[i]=input.nextDouble();
- }
- double[][] beta = diskretisation(beta_v,beta_n);
- double[][] delta = diskretisation(d_v,d_n);
- double[][][] Pr_norm = new double[n][n][T];
- double[][]Pr_tmp = new double[n][n];
- for(int t=0;t<T;t++)
- {
- double[] Pr_tmp_min = new double[n];
- double[] Pr_tmp_max = new double[n];
- for(int i=0;i<n;i++)
- {
- Pr_tmp_min[i]=min_Pr[t][i];
- Pr_tmp_max[i]=max_Pr[t][i];
- }
- Pr_tmp=diskretisation(Pr_tmp_max,Pr_tmp_min);
- for(int i=0;i<n;i++)
- {
- for(int j=0;j<n;j++)
- {
- Pr_norm[i][j][t]=Pr_tmp[i][j];
- }
- }
- }
- //double[][][] Pr = diskretisation(max_Pr,min_Pr);
- /**if (checkusl(b,T)){
- if (checkusl(beta,T)){
- System.out.println("Условия выполнены");
- }
- }**/
- double [][] beta_norm = kombogen(beta);
- double [][] delta_norm = kombogen(delta);
- for(int i=1;i<n;i++)
- {
- for(int j=0;j<n;j++)
- {
- for(int t=1;t<T;t++)
- {
- K[i][j][t]=K[i][j][t-1]+beta_norm[i][j]*dL[t];
- }
- }
- }
- for(int i=1;i<n;i++)
- {
- for(int j=0;j<n;j++)
- {
- for(int t=1;t<T;t++)
- L[i][j][t]=L[i][j][t-1]+delta_norm[i][j]*dL[t];
- }
- }
- for(int i=0;i<n;i++)
- {
- for(int j=0;j<n;j++)
- {
- for(int t=0;t<T;t++)
- {
- 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]);
- }
- }
- }
- System.out.println();
- System.out.println();
- System.out.println();
- for(int i=0;i<n;i++)
- {
- for(int j=0;j<n;j++)
- {
- for(int t=0;t<T;t++)
- {
- 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])))
- {
- X[i][j][t]=0;
- }
- //System.out.print(X[i][j][t]+" ");
- }
- //System.out.println();
- }
- //System.out.println();
- }
- //System.out.println();
- System.out.println("Вывод");
- printmax(X, K, L,g);
- /**
- * frame = new JFrame(); frame.setResizable(false); frame.setBounds(100,
- * 100, 450, 413); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- * frame.getContentPane().setLayout(null); JLabel label = new
- * JLabel("Test label"); label.setBounds(42, 60, 354, 160);
- * label.setMaximumSize(new Dimension(30, 15)); label.setMinimumSize(new
- * Dimension(30, 15)); frame.getContentPane().add(label);
- *
- * JLabel label_1 = new JLabel("пппп");
- * frame.getContentPane().add(label_1); label_1.setBounds(94,60, 354,
- * 326);
- **/
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement