1. A computer product comprising a non-transitory computer readable medium storing a plurality of instructions that when executed control neural network on a computer system to self-learn to solve a complex problem, the instructions comprising: in a time period for a neural network comprising an input layer of input neurons, a hidden layer of hidden neurons, and an output layer of output neurons, each input neuron having first synapses in electrical or chemical communication with at least one hidden neuron and each hidden neuron having second synapses in electrical or chemical communication with a plurality of the output neurons: receiving an input in at least one input neuron; propagating a first electrical or chemical communication from the at least one input neuron that received the input to at least one hidden neuron via at least one first synapse; propagating a second electrical or chemical communication from the at least one hidden neuron that received the first communication from the input neuron to a plurality of output neurons, the second communication having variable strength for each hidden neuron to each of the plurality of output neurons in which the hidden neuron is in communication according to a strength of each second synapse; making a decision based on the second communication according to a rule; providing a reward if the result of the decision contributes to the solving of the problem; wherein if a reward is provided, the strength of second synapses that contributed to the solving of the problem are adjusted, whereby the neural network is more likely to repeat the decision in at future time periods; wherein second synapses are adjusted from decisions made in prior time periods; and wherein the strength of the second synapses are adjusted whereby an amount of adjustment of the second synapse is inversely proportional to a total synaptic output of the hidden layer neuron to the output layer.