Title: Soft Computing Author: Eva Volná, University of Ostrava, Czech Republic Soft computing became a formal area of study in computer science in the early 1990s. Prof. Lotfi Aliasker Zadeh has defined soft computing as a number of techniques and methods that deal with real-world situations in the same way that people deal with them. In computer science, soft computing (sometimes referred to as Computational Intelligence - CI) is the use of inexact solutions to computationally hard tasks such as the solution of NP-complete problems, for which there is no known algorithm that can compute an exact solution in polynomial time. Soft computing differs from conventional computing in that, unlike hard computing, it is tolerant of imprecision, uncertainty, partial truth, and approximation. In effect the role model for soft computing is the human mind. Soft computing forms the basis of a considerable amount of machine learning techniques. The principal constituents of soft computing are fuzzy logic, evolutionary computation, and neural networks. Generally speaking, soft computing techniques resemble biological processes more closely than traditional techniques, which are largely based on formal logical systems. Soft computing techniques are intended to complement each other. Fuzzy logic. Fuzzy logic is based on the theory of fuzzy sets, which is a generalization of the classical set theory. Classical logic only permits conclusions which are either true or false. In fuzzy logic the truth values of variables may be any real number between 0 and 1 inclusive. Therefore, the membership function is a curve that defines how each point in the input space is mapped to a membership value between 0 and 1. The input space is referred to as the universe of discourse. The universe of discourse X is a continuous space, we usually partition X into several fuzzy sets. These fuzzy sets, which usually carry names that conform to adjectives appearing in our daily linguistic usage, such as "large", "medium" or "small" are called linguistic variables. Creating a system with fuzzy logic contains four steps: 1. Rule base: It contains the set of IF-THEN rules provided by the experts to govern the decision making system, on the basis of linguistic information. 2. Fuzzification: It is used to convert inputs i.e. crisp numbers into fuzzy sets. 3. Inference engine: It determines the matching degree of the current fuzzy input with respect to each rule and decides which rules from the rule base are to be fired according to the input field. 4. Defuzzification: It is used to convert the fuzzy sets obtained by inference engine into a crisp value. Evolutionary computation. In computer science, evolutionary computation is a family of algorithms for global optimization inspired by biological evolution. In technical terms, they are a family of population-based trial and error problem solvers with a metaheuristic or stochastic optimization character. In evolutionary computation, an initial set of candidate solutions is generated and iteratively updated. Each new generation is produced by stochastically removing less desired solutions, and introducing small random changes. In biological terminology, a population of solutions is subjected to natural selection (or artificial selection) and mutation. As a result, the population will gradually evolve to increase in fitness, in this case the chosen fitness function of the algorithm. Evolutionary computation techniques can produce highly optimized solutions in a wide range of problem settings, making them popular in computer science. Evolutionary computation proceeds in the following steps: 1. Test each chromosome to see how good it is at solving the problem at hand and assign a fitness score accordingly. The fitness score is a measure of how good that chromosome is at solving the problem to hand. 2. Select two members from the current population. The chance of being selected is proportional to the chromosomes fitness. Roulette wheel selection is a commonly used method. 3. Dependent on the crossover rate crossover the bits from each chosen chromosome at a randomly chosen point. 4. Step through the chosen chromosomes bits and flip dependent on the mutation rate. Repeat step 2, 3, 4 until a new population has been created. Artificial neural networks. Artificial neural networks are computing systems inspired by the biological neural networks. The neural network itself is not an algorithm, but rather a framework for many different machine learning algorithms to work together and process complex data inputs. Such systems "learn" to perform tasks by considering examples, generally without being programmed with any task-specific rules. An artificial neural network is based on a collection of connected units or nodes called artificial neurons, which loosely model the neurons in a biological brain. Each connection, like the synapses in a biological brain, can transmit a signal from one artificial neuron to another. An artificial neuron that receives a signal can process it and then signal additional artificial neurons connected to it. In common implementations, the signal at a connection between artificial neurons are a real number, and the output of each artificial neuron is computed by some non-linear function of the sum of its inputs. Artificial neurons and edges typically have a weight that adjusts as learning proceeds. Typically, artificial neurons are aggregated into layers. Signals travel from the first layer (the input layer), to the last layer (the output layer). The original goal of the ANN approach was to solve problems in the same way that a human brain would. However, over time, attention moved to performing specific tasks, leading to deviations from biology. Artificial neural networks have been used on a variety of tasks, including computer vision, speech recognition, machine translation, noise filtering, playing board and video games and medical diagnosis etc.