用感知器实现或运算

CODE

import java.util.Scanner;


public class OR {
    static int N = 2;
    static double[] W = new double[N];
    static double sita = Math.random();
    static int[] X = new int[N];
    static int Y = 0;
    static double c = 0.2;
    static int evolve = 100;
    static void input(){
        int sum = 0;
        for(int i=0; i<N; i++){
            X[i] = (int) (Math.random()*2);
            sum += X[i];
        }
        if(sum>0) Y = 1;
        else Y = 0;
    }

    static int sign(double net){
        if(net>0) return 1;
        else if(net<0) return -1;
        else return 0;
    }

    static void train(){
        double net = 0.0;
        for(int i=0; i<N; i++){
            net += W[i]*X[i];
        }
        double out = sign(net);
        for(int i=0; i<N; i++){
            W[i] += c*(Y-out)*X[i];
        }
    }

    static int perceptron(int[] x){
        double net = 0.0;
        for(int i=0; i<N; i++){
            net += W[i]*x[i];
        }
        return sign(net);
    }

    @SuppressWarnings("resource")
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int ca = 0;
        while(ca < evolve){
            input();
            train();
            ca++;
        }
        System.out.println("训练后权值结果:");
        for(int i=0; i<N; i++){
            System.out.println(W[i]);
        }
        System.out.println("训练后阈值结果:");
        System.out.println(sita);
        System.out.println("-----------------开始运算-----------------");
        while(true){
            System.out.println("请输入进行或运算的操作数(0/1):");
            int[] x = new int[N];
            for(int i=0; i<N; i++){
                x[i] = in.nextInt();
            }
            int ans = perceptron(x);
            System.out.println("运算结果为:");
            System.out.println(ans);
        }
    }


}

Input&output

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值