Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- class SDPTA {
- public static void main(String args[]) {
- Scanner sc = new Scanner(System.in);
- System.out.println("Enter number of the input vector");
- float n = sc.nextFloat();
- ArrayList<ArrayList<Double>> x = new ArrayList<ArrayList<Double>>();
- ArrayList<ArrayList<Double>> desired = new ArrayList<ArrayList<Double>>();
- for (int i = 0; i < n; i++) {
- System.out.println("Enter the input vector");
- ArrayList<Double> temp1 = new ArrayList<Double>();
- temp1.add(sc.nextDouble());
- temp1.add(sc.nextDouble());
- x.add(temp1);
- System.out.println("Enter the desired vector");
- ArrayList<Double> temp = new ArrayList<Double>();
- temp.add(sc.nextDouble());
- desired.add(temp);
- }
- ArrayList<Double> weight = new ArrayList<Double>();
- for (int i = 0; i < 2; i++) {
- weight.add(1.0);
- }
- System.out.println(weight + "Weight");
- double output = 0;
- int p = 0;
- int k = 0;
- double E = 0;
- int flag = 0;
- do {
- output = mul(weight, x.get(p));
- if (output >= 0) {
- output = 1;
- } else {
- output = 0;
- }
- //System.out.println(output);
- double r = desired.get(p).get(0) - output;
- System.out.println(r + "is r");
- for (int i = 0; i < weight.size(); i++) {
- weight.set(i, weight.get(i) + 0.5 * 0.1 * r * x.get(p).get(i));
- }
- if (flag == 0) {
- E += 0.5 * r * r;
- } else {
- E = 0.5 * r * r;
- flag = 0;
- }
- p++;
- k++;
- if (p == n) {
- if (E == 0) {
- System.out.println("The input is " + x);
- System.out.println("The desired is " + desired);
- System.out.println("The weight is " + weight);
- System.out.println("k value is " + k);
- } else {
- E = 1000;
- flag = 1;
- p = 0;
- System.out.println("The weight is " + weight);
- }
- }
- } while (E != 0);
- System.out.println("The input is " + x);
- System.out.println("The desired is " + desired);
- System.out.println("The weight is " + weight);
- System.out.println("k value is " + k);
- }
- public static double mul(ArrayList<Double> weight, ArrayList<Double> x) {
- int ans = 0;
- for (int i = 0; i < weight.size(); i++) {
- ans += weight.get(i) * x.get(i);
- }
- return ans;
- }
- }
- /*Output:
- The input is [[1.0, 1.0], [6.0, 3.0]]
- The desired is [[0.0], [1.0]]
- The weight is [0.5000000000000002, -1.0000000000000009]
- k value is 141
- */
Add Comment
Please, Sign In to add comment