Вы находитесь на странице: 1из 10

BUTOANE.

JAVA

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Butoane {

public static void main(String args[])


{
int nb = Integer.parseInt(JOptionPane.showInputDialog("NR intrari"));
Fereastra f = new Fereastra (nb);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}

}
FEREASTRA.JAVA

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Scanner;

public class Fereastra extends JFrame {

private int nb;


private JButton jb[];
private JTextField jtf;
private JButton jbSave,jbReset,jbRN;
int nrSabloane;
int nrElementeSelectate;
int[] vectorPattern;
ArrayList<int[][]> listaSabloane = new ArrayList<int[][]>();
int xS[][];

public Fereastra(int nb)


{
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.nrElementeSelectate=0;
this.nb=nb;
jb=new JButton[nb];
jbSave=new JButton("Save");
jbReset=new JButton("Reset");
jbRN=new JButton("RN");
SalveazaPattern sp = new SalveazaPattern();
ResetPattern rp = new ResetPattern();
RN rn = new RN();
int i,j;
int N = (int)Math.sqrt(nb);
xS = new int[100][100];
AscultaButoane ab = new AscultaButoane();
JPanel jp[] = new JPanel[N];
for(i=0;i<N;i++)
{
jp[i]= new JPanel();

for(j=0;j<N;j++)
{
int nrButonCrt=N*i+j;
jb[nrButonCrt]=new JButton("");
jb[nrButonCrt].addActionListener(ab);
jp[i].add(jb[nrButonCrt]);
}
vectorPattern = new int[nb];
for(int k=0;k<N;k++)
{
vectorPattern[i]=0;
}

}
JPanel jpFinal = new JPanel();
jpFinal.setLayout(new GridLayout(N+1,1));
for(i=0;i<N;i++) jpFinal.add(jp[i]);
jtf = new JTextField(5);
jtf.setEditable(false);
JLabel jl = new JLabel("Butoul : ");
JPanel jtfPanel = new JPanel();
jtfPanel.add(jl);
jtfPanel.add(jtf);
jpFinal.add(jtfPanel);
jtfPanel.add(jbSave);
jtfPanel.add(jbReset);
jtfPanel.add(jbRN);
jbSave.addActionListener(sp);
jbReset.addActionListener(rp);
jbRN.addActionListener(rn);
Container c = this.getContentPane();
c.add(jpFinal,"South");
}

public class AscultaButoane implements ActionListener {

@Override
public void actionPerformed(ActionEvent ev) {
Object sursa = ev.getSource();
int i;
for(i=0;i<nb;i++)
{
if((JButton)sursa==jb[i])
{
jtf.setText(i+"");
jb[i].setBackground(Color.red);
vectorPattern[i]=1;
nrElementeSelectate++;
break;
}
}

}
}

public int getNrElementeSelectate() {


return nrElementeSelectate;
}
public void setNrElementeSelectate(int nrElementeSelectate) {
this.nrElementeSelectate = nrElementeSelectate;
}
public void setNb(int nb) {
this.nb = nb;
}
public static String stripNonDigits(
final CharSequence input /* inspired by seh's comment */){
final StringBuilder sb = new StringBuilder(
input.length() /* also inspired by seh's comment */);
for(int i = 0; i < input.length(); i++){
final char c = input.charAt(i);
if(c > 47 && c < 58){
sb.append(c);
}
}
return sb.toString();
}

static int[][] readTo2DArray() throws IOException {

FileInputStream fstream = new FileInputStream("D:/matriceRN.txt");

DataInputStream in = new DataInputStream(fstream);


BufferedReader br = new BufferedReader(new InputStreamReader(in));

String line;
int dim = 0;
int ndx = 0;
int [][]matrice = null;
while((line=br.readLine()) != null)
{
if(line.contains("Dimensiune Matrice : "))
{
dim = Integer.parseInt(stripNonDigits(line));
matrice = new int[dim][dim];
}
else if((line.contains("0")||(line.contains("1")))&&!line.contains("Numar
Sablon : "))
{
System.out.println(line + "**");
char[] linea = line.replaceAll("\\s+", "").toCharArray();
for(int i=0;i<dim;i++)
{
matrice[ndx][i]=Character.getNumericValue(linea[i]);
}
ndx++;
}

/* System.out.println("Dimensiunea : " + dim);


for(int l=0;l<matrice.length;l++)
{
for(int m=0;m<matrice[0].length;m++)
{
System.out.println(matrice[l][m]);
}
}*/
return matrice;
}

public class SalveazaPattern implements ActionListener {

@Override
public void actionPerformed(ActionEvent ev) {
Object sursa = ev.getSource();
int nrLinii=(int)Math.sqrt(nb);
System.out.println("Numar Linii : " + nrLinii);
System.out.println("Numar Elemente Selectate : "+ getNrElementeSelectate());
int value = (int)Math.sqrt(nb);
for(int i=0;i<vectorPattern.length;i++)
{
System.out.println(vectorPattern[i]);
}

//----- scrie in fiser :


try {

File file = new File("D:/matriceRN.txt");


// if file doesnt exists, then create it
if (!file.exists()) {
file.createNewFile();
}
//---FileWriter fw = new FileWriter(file.getAbsoluteFile(),true);
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
bw.newLine();
bw.write("Dimensiune Matrice : " + nrLinii);
bw.newLine();
int contor=0;
for(int i=0;i<vectorPattern.length;i++)
{
System.out.println(vectorPattern[i]);
if(i % nrLinii > 0)
{
bw.write(" " + vectorPattern[i]);
}
else
{
contor++;
if(contor<=nrLinii)
{
bw.newLine();
bw.write(" " + vectorPattern[i]);
}

}
bw.newLine();
bw.write("Numar Sablon : " + ++nrSabloane);
bw.close();
System.out.println("Done");
int[][] matriceCititaDinFisier = readTo2DArray();

for(int l=0;l<matriceCititaDinFisier.length;l++)
{
for(int m=0;m<matriceCititaDinFisier[0].length;m++)
{
System.out.println(matriceCititaDinFisier[l][m]);
}
}
listaSabloane.add(matriceCititaDinFisier);
System.out.println("Sabloane in lista : " + listaSabloane.size());

//-----------------------------------------------------
System.out.println("Sabloane in lista XS: " + xS.length);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

public class ResetPattern implements ActionListener {

@Override
public void actionPerformed(ActionEvent ev) {

for(int i = 0;i<nb;i++)
{
jtf.setText(i+"");
jb[i].setBackground(Color.white);
vectorPattern[i]=0;
}
}
}

public class RN implements ActionListener {

@Override
public void actionPerformed(ActionEvent ev) {

int NI,NH,NO;
Scanner sc = new Scanner(System.in);
System.out.println("Ni=");
NI=sc.nextInt();
System.out.println("NH=");
NH=sc.nextInt();
System.out.println("NO=");
NO=sc.nextInt();
double w1[][] = new double[NH][NI];
double w2[][] = new double[NO][NH];
double yH[]=new double [NH];
double yO[]=new double [NO];
final int NS=8;

int xS[][]={
{1,1,1,1,1,
0,0,1,0,0,
0,0,1,0,0,
0,0,1,0,0,
0,0,1,0,0},
{1,1,1,1,1,
0,0,1,0,0,
0,0,1,0,0,
0,0,1,0,0,
0,0,0,0,0},
{0,0,0,0,1,
0,0,0,0,1,
1,1,1,1,1,
0,0,0,0,1,
0,0,0,0,1},
{0,0,0,0,1,
0,0,0,0,1,
0,1,1,1,1,
0,0,0,0,1,
0,0,0,0,1},
{0,0,1,0,0,
0,0,1,0,0,
0,0,1,0,0,
0,0,1,0,0,
1,1,1,1,1},
{0,0,0,0,0,
0,0,1,0,0,
0,0,1,0,0,
0,0,1,0,0,
1,1,1,1,1},
{1,0,0,0,0,
1,0,0,0,0,
1,1,1,1,1,
1,0,0,0,0,
1,0,0,0,0},
{1,0,0,0,0,
1,0,0,0,0,
1,1,1,1,0,
1,0,0,0,0,
1,0,0,0,0}};

int yS[][]={{1,0,0,0},{1,0,0,0},
{0,1,0,0},{0,1,0,0},
{0,0,1,0},{0,0,1,0},
{0,0,0,1},{0,0,0,1}};
final double E_Limita = 0.001;
int i,j,k;
double e[]=new double[NS];
int nrEpoci=0;
for(i=0;i<NH;i++)

for(j=0;j<NI;j++)
w1[i][j]=Math.random()-0.5;
for(i=0;i<NO;i++)

for(j=0;j<NH;j++)

w2[i][j]=Math.random()-0.5;

for(;;){

for(i=0;i<NS;i++)
{
for(j=0;j<NH;j++)
{
double a = 0;
for(k=0;k<NI;k++)
a=a+xS[i][k]*w1[j][k];
yH[j]=1/(1+Math.exp(-a));
}
for(j=0;j<NO;j++)
{
double a=0;
for(k=0;k<NH;k++)
a+=yH[k]*w2[j][k];
yO[j]=1/(1+Math.exp(-a));
}
e[i]=0;

for(j=0;j<NO;j++)

e[i]=0.5*(yO[j]-yS[i][j])*(yO[j]-
yS[i][j]);

double[] delta_O = new double[NO];


for(j=0;j<NO;j++)

delta_O[j]=(yO[j]-yS[i]
[j])*yO[j]*(1-yO[j]);
for(j=0;j<NO;j++)

for(k=0;k<NH;k++)

w2[j][k]-
=yH[k]*delta_O[j];

double deltaH[]= new


double[NH];
for(j=0;j<NH;j++)
{
double suma = 0;
for(k=0;k<NO;k++)

suma+=w2[k]
[j]*delta_O[k];

deltaH[j]=suma * yH[j]*(1-yH[j]);
}
for(j=0;j<NH;j++)

for(k=0;k<NI;k++)

w1[j]
[k]-=xS[i][k]*deltaH[j];

}//i

nrEpoci++;
double E=0;
for(i=0;i<NS;i++)

E+=e[i];
System.out.println("epoca : " + nrEpoci + " eroare = " + E);
if(E<E_Limita)
break;

}//for(;;)

}//main

Вам также может понравиться