OPTIMISER

Abstract: This invention relates to an apparatus for, and a method of optimising one or more signals. In many industrial applications, one or more input quantities are combined according to a predetermined process to produce an output as a function of the inputs. For many types of function, an optimum value is possible, corresponding to a predetermined optimum input value or, where there is more than one input, to a set of such input values, which may be considered to define an input vector. A problem with many search techniques is that a local optimum rather than the global optimum is found. In this invention test values are selected, and the most optimal function values generated from the selected test values are stored. When a local optima is detected stored optimal function values are used to move away from the local optima.

Description: Optimiser This invention relates to an apparatus for, and a method of optimising one or more signals. In many industrial applications, one or more input quantities (for example quantities of raw materials or signal values) are combined according to some predetermined process to produce an output quantity (e.g. a chemical composition, or a processed signal) as a function of the inputs. In some cases, the function will be known, whereas in others it will not be known. In some cases, the function will linear, whereas in others it will be non linear. In some cases, the function will be continuous, whereas in others it will include discontinuities. For many types of function, an optimum output value is possible, corresponding to a predetermined optimum input value or, where there is more than one input, to a set of such input values, which may be considered to define an input vector. There will be a true optimum value (the global optimum value) but there are often local optima. It is generally desired to find the global optimum value, rather than local optima. Examples of functions which will have an optimum output value include functions for evaluating chemical yield, chemical composition, bit error rate of a process signal, or interference in a mobile telecommunications network. For simple analytical functions, such as a cubic function, it is possible to find the optimum (in this case, for example, minimum) by differentiating the function, to locate points of inflection; double differentiating the function, to determine which are minima; determining the value of the function at each such minimum; and selecting the lowest. However, this approach fails where the function is either unknown or discontinuous, or both. Two general numerical approaches which can deal with functions of these types are known, and will be referred to as "global" approaches and "local" approaches. Global approaches include "brute force" search techniques; in such techniques, the function is evaluated at a large number of possible function values distributed over the range of possible input values, and the minimum is found directly. Such an approach is possible for functions which depend on a small number of input variables, over a small range of those variables. However, for a large number of variables and/or a large variable range, the number of occasions on which the function must be solved (which is computationally intensive and time consuming) becomes very large, rendering such approaches slow and unsuitable for, for example, real time signal processing or network control applications. On the other hand, "local" techniques start with one input vector position and "move" to a new vector position in a direction which optimises the function. For example, where the optimum sought is a minimum, the search process may consist of determining the function value at input values spaced at either side of the starting point, determining whether either generates a function value lower than the starting function value, and selecting that which does so; and then repeating the process. It will be seen that a process of this kind will continue to move the currently selected input value until a local minimum of the function value is found. However, with local search techniques of this kind, there is no guarantee that the global optimum will be found. A well known technique for avoiding convergence on local optima is the technique of simulated annealing, described for example in "Optimisation by simulated annealing" by S. Kirkpatrick et al, Science 220 (1983) pp 671-680. International paptent application number W098/34188 describes another a local search technique which attempts to avoid local optima. Such techniques are referred to in this specification as energy minimisation techniques and the function to be solved is referred to as an energy function. A problem with known techniques is that the performance is dependent on user selected parameters. For example, the performance of the simulated annealing algorithm is dependent on a parameter representing the 'initial temperature' and on the strategy selected for changing this parameter. According to the present invention there is provided a method of finding preferred values for at least one input signal corresponding to optima of a function of the at least one input signal, the method comprising the steps of (a) selecting an initial test value; (b) generating a value of said function using the selected initial test value; (c) storing said generated value; (d) storing a current value equal to the generated value; and (e) performing a plurality of cycles to reach a convergence, each of which cycles comprises steps of (e1 ) selecting a further test value; (e2) generating a value of said function using the selected further test value; (e3) storing said generated value when the generated value is more optimal than the or each stored function values; (e4) modifying the current value to be equal to the generated value when the generated value is more optimal than the current value; and (e5) modifying the current value to be equal to a stored function value when the current value has not been modified for a predetermined number of cycles. Preferably in step (e2) the current value is modified to be equal to the most optimal previously stored value unless the current value is already equal to a stored value in which case the current value is modified to be equal to the next most optimal previously stored value. According to another aspect of the invention there is also provided an apparatus comprising means for selecting a value for an input signal; means connected to receive selected value, and responsive to data defining a function and arranged in operation to generate a function value from the selected value; store for storing a current value, and for storing one or more function values; first modifying means arranged to access the store and retrieve the current value and to receive a generated function value, and, in operation, to modify the current value to be equal to the generated function value when the generated function value is more optimal than the current value and to store the generated function value when the generated function value is more optimal than the or each stored function value; and second modifying means arranged in operation to modify the current value to be equal to one of the function values when the current value has not been modified for a predetermined number of cycles. In the present invention one or more signals are optimised using a technique which does not require user selected parameters. A specific embodiment an optimiser of the present invention, and its method of operation will now be described by way of example only, with reference to the accompanying drawings in which: Figure 1 is a block diagram of an optimiser; Figure 2 is a flow diagram showing the overall operation of the optimiser of Figure 1 ; Figure 3 (comprising Figures 3a to 3d) is a flow diagram showing in greater detail part of the operation of Figure 2; Figure 4 is an example of a function used to illustrate the operation of the optimiser according to flow diagrams of Figures 2 and 3; Figure 5 shows a simplified cellular network; Figure 6 shows diagrammatically sources of interference between channels for two cells selected from the network shown in Figure 5 before and after a frequency allocation change; and Figure 7 shows diagrammatically sources of interference between channels for a single cell selected from the network shown in Figure 5, before and after a frequency allocation change. Referring to Figure 1 , an optimiser 10 comprises a processor 102 (for example an Intel™ Pentium™ microprocessor or a reduced instruction set (RISC) microprocessor), arranged for communication with a memory 104 comprising a program memory 106 (which may, for example, be a read only memory); a function value store 108 (which may, for example, be random access memory) which stores data corresponding to function values generated by the function value generating means 102; a function data memory 1 10; and a current value store 1 1 6. The function data memory 1 10 stores data relating to the function to be optimised and may be read only memory (ROM) where the optimiser is desired to solve only a single function, but is more normally random access memory (RAM) to permit the input of a new function. The current value store 1 1 6 stores data representing a current value (and may, for example be random access memory). All three memories 106, 1 10, 108, 1 1 6 are simply be partitioned areas within a common memory device 104, in the optimiser shown. The optimiser comprises means 1 1 2 to select signal values; means 102 to receive selected signal values and to generate a function value therefrom, using data from the function data store 1 10; first modifying means 1 1 8 arranged in operation to modify data in the current value store in dependence on a received generated function value; and second modifying means 1 20 arranged in operation to modify data in the current value store according to data retrieved from the function value store 108. The detailed operation of the optimiser will be described later with reference to Figure 3. In the optimiser shown the means 1 1 2, 102,1 10 and 1 18 are provided by the processor 102 which operates in accordance with a program stored in the program memory 106. Finally, an input/output interface device 1 14 is provided, at which data partly or completely defining a function to be optimised is received and supplied to the processor 102 and thence to the function data memory 1 10; and at which the processor 102 makes available the input values and/or the optimal function value. Conveniently, the optimiser 10 may be provided as a suitably programmed personal computer or workstation, such as a Sun SparcStation™. The operation of the optimiser 10 will now be described with reference to the flowchart of Figures 2 and 3, and the illustrated function shown in Figure 4. Referring to Figure 2, in step 20 the processor 102 receives via the input/output interface 1 14, input data defining the function to be optimised, and stores this data in the function memory 1 10. In this embodiment the input data defining the function to be optimised is stored in data files which are read via the input/output interface 1 14. Function data could equally well be typed in via the input/output interface. In step 22, the optimiser 10 calculates an optimum value for each input value, and in step 24 the processor 102 outputs the optimum values at the I/O interface 1 14. Referring now to Figure 3, the process performed in step 22 will now be described in greater detail. In step 32 a current value for each of the input signal is selected, so as to collectively comprise an input vector. In this embodiment of the invention, the current values are chosen to satisfy a particular constraint. The method used to select current values in this embodiment of the invention will be described later with reference to Figures 6 and 7. However, the current value of input signals may be selected using any convenient method for example, they may be randomly chosen or may be chosen as the midpoint of each signal range. In step 34 the value of the function for the current values is generated by the function value generating means 102. In step 36 the function value store 108 is initialised. In this embodiment of the invention the function value store is implemented as a sequential set of storage locations, conveniently referred to as M, .. M N . Initially the value of the function for the selected current values is stored in each one of the storage locations M, to M N . In step 38 the value of the function for the current value is recorded by storing it in the current value store 1 1 6 referred to as Elocal in the flow chart of Figure 3. In step 40 a test value for each of the input signal is selected by the value selecting means 1 1 2 as will be described later with reference to Figures 6 and 7. In step 42 the value of the function for the selected test values is generated by the function value generating means 102 and at step 44 the generated value is compared with the function value stored in Elocal. In this embodiment of the invention a smaller function value is more optimal. If the generated function value is less that the function value stored in Elocal then the selected test values are modified by setting them equal to the test values, and Elocal is modified by the modifying means 1 18 by storing the generated function value in Elocal at step 46. If the generated function value is less than all of the stored function values in M, .. M Nι determined at step 48, then the generated function value is stored in the function value store 108. In this embodiment of the invention the function value store is arranged so that any stored function values are stored in order of increasing magnitude, so M q < M q+ 1 for all q = 1 to q = N -1 . Therefore when a new function value is stored in the function value store at step 50, in this embodiment it will always be stored in the first location of the function value store i.e. M,. If the generated function value is stored in the function value store at step 50 then a variable denoted in this description as k is also set to be equal to two at step 50, otherwise the variable k is set to be equal to one at step 52. The variable k is used as a flag to indicate whether the function value stored at Elocal is also stored in the function value store. When k = 1 the function value stored at Elocal is not stored in the function value store 108, when k < > 1 the function value stored at Elocal is stored in the function value store 108. The reason for setting k equal to one or two in dependence on whether the function value stored at Elocal is additionally stored in the function value store will become apparent later. The variable k is stored in a location (not shown) in the memory 104 If at step 44 it is determined that the generated function value is greater than the value stored in Elocal then if a predetermined number of cycles have not yet been carried out (step 54) new test values are selected at step 40. However, if a predetermined number of cycles have already been carried out at step 54, then Elocal is modified at step 56 by the second modifying means 120 by setting it equal to one of the stored function values. It can be seen that if the current value of Elocal was stored in the function value store at step 50, then Elocal will contain the same function value as M As k in this case would also have been set equal to two at step 50 Elocal is now modified at step 56 by setting it equal to M 2 . However, if the current Elocal was not stored in the function value store at step 50 then Elocal does not contain the same function value as M, . In this case k would have been set equal to one at step 52, and Elocal is modified at step 56 by setting it equal to M, . Hence, the variable k is conveniently used to determine the stored function value to be used by the modifying means 1 20. Then the cycle of steps 40, 42, 44 and 54 is repeated using the modified value of Elocal stored in the current value store 1 16. Again, if after a predetermined number (n) of cycles the current values have not been modified Elocal is modified at step 56 by the modifying means 1 20 by setting it equal to the next most optimum function value in the function value store as determined by the variable k. Criteria are defined for deciding when optimal signal values have been obtained. In this embodiment of the invention, each time that a new lower function value is stored in Elocal at step 46, the difference between the previous stored value and the new stored value is calculated (not shown in Figure 3). If the difference remains extremely small for a predetermined number of cycles then optimal signal values have been obtained. In variants optimal signal values may be obtained when the function value of current signal values improves upon the function value of initially selected signal values by a predetermined amount. Another option is to define a predetermined number of cycles to be executed. An example of this embodiment of the invention applied to a simple function will now be described with reference to Figure 4 and also with reference to Figure 3. In this example a function value store of size eight is used. At step 32 initial current values are selected resulting in a function value of E1 at step 34. The function value store is initialised at step 36 as M = E1 ,E1 ,E1 ,E1 ,E1 ,E1 ,E1 ,E1 The function value of the initial values is stored in Elocal at step 36 so Elocal = E1. At step 40 test values are selected, resulting in a function value of a at step 42. The function value of a may have been obtained after several cycles of steps 40, 42 and 44 as long as the number of cycles was less than the predetermined number (n) at step 54. At step 44 a is compared to E1 and is found to be less than E1 , so Elocal is modified to be equal to a, and the current values are updated to be equal to the test values. a is less than all of the stored function values so the function value store is updated at step 50 so M = a, E1 , E1 , E1 , E1 , E1 , E1 , E1 New test values are then selected at step 40, resulting in a function value of b at step 42. b is less than a so again the current values are updated. Again b is less than all of the stored function values so the function value store is updated at step 50 so M = b, a, E1 , E1 , E1 , E1 , E1 , E1 New test values are then selected again at step 40, resulting in a function value of E2 at step 42. E2 is less than b so again the current values are updated. Again E2 is less than all of the stored function values so the function value store is updated at step 50 so M = E2, b, a, E1 , E1 , E1 , E1 , E1 However, after selecting test values n times at step 40 a function value of less than E2 is not obtained. Therefore Elocal is modified at step 56 to be equal to one of the stored function values. In this case k = 2 because E2 is already stored in the function values store, so Elocal is set equal to M 2 , in this case b. The steps 40, 42, 44 are then repeated until a function value of c is obtained, c is less than b so the current values are updated by setting them equal to the test values and Elocal is modified by setting it equal to c. However c is not less than all of the stored function values so the function value store is not updated. New test values are then selected again at step 40, resulting in a function value of d at step 42. d is less than c so again the current values are updated, d is less than all of the stored function values so the function value store is updated at step 50 so M = d, E2, b, a, E1 , E1 , E1 , E1 New test values are then selected again at step 40, resulting in a function value of E3 at step 42. E3 is less than d so again the current values are updated. E3 is less than all of the stored function values so the function value store is updated at step 50 so M = E3, d, E2, b, a, E1 , E1 , E1 However, after selecting test values n times at step 40 a function value of less than E3 is not obtained. Therefore Elocal is modified at step 56 to be equal to one of the stored function values. In this case k = 2 because E3 is already stored in the function values store, so Elocal is set equal to M 2 , in this case d. Again, after selecting test values n times at step 40 a function value of less than d is not obtained, so Elocal is modified at step 56 to be equal to the next largest stored function value M 3ι in this case E2. Again, after selecting test values n times at step 40 a function value of less than E2 is not obtained, so Elocal is modified at step 56 to be equal to the next stored function value M 4ι in this case b. The steps 40, 42, 44 are then repeated until a function value of e is obtained, e is less than b so the current values are updated by setting them equal to the test values for e and Elocal is modified by setting it equal to e. However, e is not less than all of the stored function values so the function value store is not updated. New test values are then selected again at step 40, resulting in a function value of f at step 42. f is less than e so again the current values are updated, f is not less than ail of the stored function values so the function value store is not updated. However, after selecting test values n times at step 40 a function value of less than f is not obtained. Therefore Elocal is modified at step 56 to be equal to one of the stored function values. In this case k = 1 because f is not stored in the function values store, so Elocal is set equal to M 1 f in this case E3. Again, after selecting test values n times at step 40 a function value of less than E3 is not obtained, so Elocal is modified at step 56 to be equal to the next stored function value M 2, in this case d. Again, after selecting test values n times at step 40 a function value of less than d is not obtained, so Elocal is modified at step 56 to be equal to the next stored function value M 3ι in this case E2. Again, after selecting test values n times at step 40 a function value of less than E2 is not obtained, so Elocal is modified at step 56 to be equal to the next stored function value M 4ι in this case b. Again, after selecting test values n times at step 40 a function value of less than b is not obtained, so Elocal is modified at step 56 to be equal to the next stored function value M 5ι in this case a. The steps 40, 42, 44 are then repeated until a function value of g is obtained, g is less than a so the current values are modified by setting them equal to the test values and Elocal is modified by setting it equal to g. However, g is not less than all of the stored function values so the function value store is not updated, bat at step 52 k is reset to be equal to one. New test values are then selected again at step 40, resulting in a function value of h at step 42. h is less than g so again the current values are updated, h is not less than all of the stored function values so the function value store is not updated. New test values are then selected again at step 40, resulting in a function value of o at step 42. o is less than h so again the current values are modified, o is not less than all of the stored function values so the function value store is not updated. New test values are then selected again at step 40, resulting in a function value of p at step 42. p is less than o so again the current values are modified, p is less than all of the stored function values so the function value store is updated at step 50 so M = p, E3, d, E2, b, a, E1 , E1 New test values are then selected again at step 40, resulting in a function value of E4 at step 42. E4 is less than p so again the current values are modified. E4 is less than all of the stored function values so the function value store is updated at step 50 so M = E4, p, E3, d, E2, b, a, E1 , E1 However, after selecting test values n times at step 40 a function value of less than E4 is not obtained. Therefore Elocal is modified at step 56 to be equal to one of the stored function values. In this case k = 2 because E4 is already stored in the function values store, so Elocal is set equal to M 2 , in this case p. Again, after selecting test values n times at step 40 a function value of less than p is not obtained, so Elocal is modified at step 56 to be equal to the next stored function value M 3ι in this case E3. Again, after selecting test values n times at step 40 a function value of less than E3 is not obtained, so Elocal is modified at step 56 to be equal to the next stored function value M 4 in this case d. Again, after selecting test values n times at step 40 a function value of less than d is not obtained, so Elocal is modified at step 56 to be equal to the next stored function value M 5, in this case E2. The steps 40, 42, 44 are then repeated until a function value of q is obtained, q is less than E2 so the current values are modified by setting them equal to the test values and Elocal is modified by setting it equal to q. However, q is not less than all of the stored function values so the function value store is not updated. These cycles are repeated, for example as shown for the remaining function value in Figure 4 until the defined criteria for accepting a preferred set of signal values is met. An embodiment of this invention will now be described for application to frequency planning in cellular telephone networks. A cellular telephone network consists of a number of fixed base station transceivers and a much larger number of mobile units which communicate with base stations via a radio channel. The number of radio channels which the operator is permitted to use is limited, and there are not enough for each phone call in the network to be carried on a different channel. Each base station has allocated to it a number of radio channels which it can use to communicate with the mobile units. Typically each channel comprises separate frequencies for the uplink (mobile-to-base station transmission) and the downlink (base-station-to-mobile). In a typical system each uplink frequency is associated with a predetermined downlink frequency, although the different channels may be frequencies, time slots within a frequency, or some other division of the spectrum. Each mobile unit requires a separate channel to be assigned in order to communicate with a base station. A channel is assigned to the link between the mobile unit and the base station when communication is to be set up, the channel being selected from those allocated for use by the base station and available for setting up a link (i.e. not currently assigned to a link.) A central principle of such networks is channel re-use (Lee, W. C. Y. : Mobile Cellular Telecommunications Systems. McGraw-Hill Book Company, New York, 1989): at any time many base stations may be transceiving on a particular channel. This introduces the possibility of interference between phone calls. Interference from other calls using the same channel is known as 'co-channel interference'. 'Adjacent channel' interference, due to another call using a different channel, is also a problem: a call made on a channel corresponding to a frequency band of 4000 - 4025 kHz is liable to interference from a call on the adjacent band; 4025 - 4050 kHz. Adjacent channel interference can occur between two calls in the same cell, as well as between adjacent cells. The 'cells' from which these cellular telephone networks get their name are the coverage areas of the individual fixed radio base stations. The problem facing the network operator is to allocate channels to base stations such that demand for channels across the network is met, while keeping interference within acceptable levels. These aims are clearly in conflict: the more channels allocated to each base station the harder it is to plan the channel re-use to avoid unacceptable interference. Considerable research has gone into optimising re-use patterns of these channels, to determine how close together two cells using the same channels can be without causing significant co-channel interference, thereby allowing the most efficient use of the spectrum. A function to be optimised and a technique for selecting test values (step 40) and for generating the function for selected test values (step 42) will now be described for an embodiment of the invention for assigning channels in a cellular network. Referring now to Figure 5 which shows a simplified cellular network 70 in which there are eleven cells 72, and there are eleven channels to select from, labelled fO to f10. In a practical system there would usually be over one thousand cells and around forty channels to select from. For each cell it is determined which other cells are responsible for co-channel interference and which ones are responsible for adjacent channel interference and a penalty is determined for each cell which causes interference, depending on the amount of interference caused. In the cellular network shown in Figure 5, for example, cells numbered cO,d ,c3,c5,c6,c7,c8,c9,c10 might be responsible for co- channel interference in cell 4, and cells cO,d ,c3,c5,c7,c8 might be responsible for adjacent channel interference in cell c4. In general for a given cell, the cells responsible for adjacent channel interference will be a subset of the cells responsible for co-channel interference. The magnitude of each interference penalty is determined by measurements made in the actual cellular network. The total interference may then be determined by calculating: Where N is the number of cells, J^ . is the co-channel interference penalty between cell cl and cell cj, p". s the adjacent channel interference penalty between cell cl and cell cj. If cell cl and cell cj do not cause each other interference then the relevant interference penalty will be 0. The total is divided by two, as each interference penalty is enumerated twice, once when considering one cell in a pair of cells which cause interference to each other, and once when considering the other cell of such a pair. In this example cellular system it is assumed that any interference is symmetric i.e. p c . = p c . . and p a = p a . 1 >,J J- J,l It is required to minimise the above function for a given demand for a number of channels in each cell. If demand is low and there are enough channels available then it is possible to obtain an interference of 0. In Figure 5 the given demand is two channels for each of cells cO, d , c3, c4, c5, c7, c8, c9, c10, one channel for cell c2, and three channels for cell c6. An initial assignment of channels to cells is made (corresponding to step 32 of Figure 3) which satisfies a given demand, and does not assign the same channel to the same cell more than once. The initial assignment is made in such a way as to attempt to minimise interference in a heuristic manner. For example adjacent channels are not assigned to the same cell unless necessary to satisfy the demand. In Figure 5 d has been assigned channels fO and f9, cell c2 has been assigned channel f6, cell c3 has been assigned channels f9 and f2 and so on. The initial interference is calculated according to equation 1 . A test assignment is then made (corresponding to step 40 of Figure 3). In this embodiment of the invention there are two methods for selecting a test assignment of channels to cells. The first method is to select randomly two cells and then to select randomly a channel which has been assigned to each of the selected cells. The randomly selected channel from the first cell is then assigned to the second cell and vice versa, as long as such a reassignment does not result in either cell having the same channel assigned to it more than once. An example of this first method will be described later with reference to Figures 6a and 6b. The second method used is to select one cell at random and then select randomly a channel which has been assigned to that cell. The randomly selected channel is replaced by another channel which is different from all the channels currently assigned to that cell. If possible, the replacement channel is selected so that it does not cause any adjacent channel interference to channels in the selected cell. An example of the second method of test assignment selection will be described later with reference to Figure 7a and 7b. The interference must then be calculated for the test assignment of channels to cells. It will be appreciated that in a practical system with more than one thousand cells and around forty channels the enumeration of Equation 1 will be quite time consuming. In this embodiment of the invention the change in the total interference is determined as follows. Referring again to Figure 5 and additionally to Figures 6a and 6b in which each cell 72 is represented by a circle. Figure 5 shows the initial assignment of channels to cells. The interference, E, r due to the initial channel assignment shown is calculated at step 34. Cell cO and cell c10 are selected randomly to create a test assignment according to the first method. Cell cO may interfere with cells c4, d and c3 and cell c10 may interfere with cells c8 and c9 as shown in Figure 6a. Channels are numbered such that channel f 1 will cause adjacent channel interference to channel fO and channel f2. Channel f2 will cause adjacent channel interference to channel f1 and channel f3 and so on. The interference term, Δ_ 7. , for cell 0 is P 3 + p 0 a l due to adjacent channel interference between channel f1 in cell cO and channel f2 in cell c3 and due to adjacent channel interference between channel f 1 in cell cO and channel fO in cell d . The interference term, ΔJ-T , for cell 10 is P lQ + p C lo g due to adjacent channel interference between f 1 in cell 10 and f2 in cell 8 and co-channel interference between f5 in cell 10 and f5 in cell 9. Therefore the interference term for the selected cells is Δ 7 = Δ El + Δ El = p a 03 + p + p ϋ + P o9 A channel is then selected from each of the selected cells cO and c10 for reassignment to the other of the selected cells. In this case channel f7 is selected from cell cO and channel f5 is selected from cell c10 as any other selection would result in a reassignment which makes no difference, or in a reassignment which involves a cell having the same channel assigned to it more than once. The reassigned channels are shown in Figure 6b and the new interference term is as there is no longer any co-channels interference between cell c10 and cell c9. The difference between the initial function value E, and the new function value E j is <5E = AE ~ A E = -Pl, l0 and the new function value Referring now to Figures 7a and 7b and example of the second method of selecting a test assignment of channels to cells will be described. A cell is selected randomly for reassignment of one of its channels. In this example cell cO is selected. Assuming the initial assignment of channels to cells shown in Figure 5, then the interference term for cell cO is A E = + P A channel is selected at random for reassignment of a new channel for example f 1 . A new channel is selected for assignment to cell cO, preferably a channel which will not cause co-channel interference to any of the neighbouring cells, for example f4. The new interference term for cell cO becomes AE = P and the difference between the initial function value E, and the new function value E j is again the new function value It will be appreciated that the change in the function value is likely to be greater when a test assignment is selected using the first method than when a test assignment is selected using the second method, therefore the second method is used twice as often as the first method. A variant of the second method is also used in which two cells are selected at random and a reallocation of one channel is made for each cell. The change in the function value is then calculated taking into account the change in function value for both cells in a similar manner to the calculation used in the first method.

Claims: CLAIMS 1. A method of finding preferred values for at least one input signal corresponding to optima of a function of the at least one input signal, the method comprising the steps of (a) selecting an initial test value; (b) generating a value of said function using the selected initial test value; (c) storing said generated value; (d) storing a current value equal to the generated value; and (e) performing a plurality of cycles to reach a convergence, each of which cycles comprises steps of (e1 ) selecting a further test value; (e2) generating a value of said function using the selected further test value; (e3) storing said generated value when the generated value is more optimal than the or each stored function values; (e4) modifying the current value to be equal to the generated value when the generated value is more optimal than the current value; and (e5) modifying the current value to be equal to a stored function value when the current value has not been modified for a predetermined number of cycles. 2. A method according to claim 1 , in which in step (e2) the current value is modified to be equal to the most optimal previously stored value unless the current value is already equal to a stored value in which case the current value is modified to be equal to the next most optimal previously stored value. 3. An apparatus comprising means for selecting a value for an input signal; means connected to receive selected value, and responsive to data defining a function and arranged in operation to generate a function value from the selected value; store for storing a current value, and for storing one or more function values; first modifying means arranged to access the store and retrieve the current value and to receive a generated function value, and, in operation, to modify the current value to be equal to the generated function value when the generated function value is more optimal than the current value and to store the generated function value when the generated function value is more optimal than the or each stored function value; and second modifying means arranged in operation to modify the current value to be equal to one of the function values when the current value has not been modified for a predetermined number of cycles.

Inventors: AMIN SHARA JALAL, AMIN, SHARA, JALAL
Applicants: AMIN SHARA JALAL, BRITISH TELECOMM, AMIN, SHARA, JALAL, BRITISH TELECOMMUNICATIONS PUBLIC LIMITED COMPANY
Application year: 2000
Main classification: G06F17
IPC codes: G05B13, G06F17