Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
RADIO RESOURCE ALLOCATION
Document Type and Number:
WIPO Patent Application WO/2018/162787
Kind Code:
A1
Abstract:
Methods and apparatuses for allocating channels of a radio resource are disclosed, comprising a first step (a) of providing data indicative of mutual interference between pair-wise combinations of a plurality of communications devices in a geographic area. The next step (b) comprises allocating to each device one of a plurality of channels of a shared communications resource based on the mutual interference data (35), wherein the allocating comprises, for a first channel: (i) determining if a first device will cause individual interference, above an allowable threshold, to other devices; (ii) repeating step (i) for subsequent devices in sequence; and (iii) allocating to the first channel device(s) determined not to cause individual interference, above the allowable threshold, to each of the other devices. A next step comprises repeating step (b) for one or more further channel(s) until each device has been allocated a channel (36).

Inventors:
BECHTA KAMIL (PL)
Application Number:
PCT/FI2017/050149
Publication Date:
September 13, 2018
Filing Date:
March 06, 2017
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
NOKIA TECHNOLOGIES OY (FI)
International Classes:
H04W16/14; H04W16/02; H04W16/10; H04W28/16; H04W72/04; H04W72/08
Domestic Patent References:
WO2012037643A12012-03-29
WO2016050307A12016-04-07
WO2015081169A12015-06-04
Foreign References:
JP2013081089A2013-05-02
US20100197317A12010-08-05
Attorney, Agent or Firm:
NOKIA TECHNOLOGIES OY et al. (FI)
Download PDF:
Claims:
A method comprising:

(a) providing data indicative of mutual interference between pair-wise

combinations of a plurality of communications devices in a geographic area;

(b) allocating to each device one of a plurality of channels of a shared

communications resource based on the mutual interference data, wherein the allocating comprises, for a first channel:

(i) determining if a first device will cause individual interference, above an allowable threshold, to other devices;

(ii) repeating step (i) for subsequent devices in sequence; and

(iii) allocating to the first channel device(s) determined not to cause individual interference, above the allowable threshold, to each of the other devices; and

(c) repeating step (b) for one or more further channel(s) until each device has been allocated a channel.

The method of claim l, wherein step (b)(ii) is performed for one or more subsequent devices in sequence, only in relation to selected other devices, excluding devices previously determined to be above the allowable threshold.

The method of claim l or claim 2, wherein steps (b)(i) and (ii) are performed in a sequential order based on the total interference that each device will cause said other devices.

The method of claim 2, wherein the sequential order is a descending order of total interference.

The method of claim 3 or claim 4, wherein the total interference for a device is based on the sum of individual interferences that will be caused by said device to each other device.

6. The method of any of claims 3 to 5, wherein each device is associated with a

network entity, and wherein the individual interference caused by a particular device to each other device is dependent on the identity of their respective network entity.

7. The method of claim 6, wherein the individual interference caused by a particular device to one or more other devices can be reduced, or set to zero, if their network entities are identical.

8. The method of claim 6 or claim 7, wherein the network entities correspond to

network providers or operators.

9. The method of any preceding claim, further comprising, between steps (b)(iii) and (c):

(b)(iv) sequentially ordering each unallocated device, and, for each unallocated device in the sequence, determining if said unallocated device will cause individual interference, above an allowable threshold, in relation to the allocated device(s), the unallocated device also being allocated to the channel if the interference is within said allowable threshold.

10. The method of claim 9, wherein step (b)(iv) is performed in a descending

sequential order based on the total interference that each unallocated device will cause all other devices.

11. The method of any preceding claim, further comprising:

(d) allocating at least one further channel to one or more devices if said allocation will not cause individual interference above an allowable threshold in relation to each other device already allocated to said further channel.

12. The method of claim 11, wherein step (d) comprises determining a sequential order of devices based on the total interference that each device will cause all other devices, and, for each device in sequence, only allocating the device a further channel if said device will not cause interference above the allowable threshold in relation to any other device previously allocated to said channel

13. The method of claim 12, wherein the sequential order is a descending or ascending sequential order.

14. The method of any preceding claim, wherein each device is associated with one of a plurality of network entities, the method further comprising:

determining a respective primary channel for each network entity based on the channel allocations and;

re-allocating one or more channels such that devices associated with a particular network entity are allocated, for at least one of their channels, the respective primary channel for their network entity.

15. The method of claim 14, further comprising determining an ordered sequence of network entities, and wherein the reallocation of channels is performed according to said ordered sequence.

16. The method of claim 14 or claim 15, wherein the primary channel for a network entity is the channel allocated to most devices associated with said network entity, or the channel with the next most allocated devices if more than one network entities have the most devices at the same channel.

17. The method of claim 16, wherein the re-allocation order is based on the number of devices Mj associated with each network entity.

18. The method of claim 17, wherein the re-allocation order is further based on the number of devices Xjmax allocated to the channel with the highest number of allocations.

19. The method of claim 19, wherein the re-allocation order is a descending sequential order determined by:

where Δ,· = Mj - Xj max.

20. The method of any of claims 17 to 20, wherein the re-allocation comprises, for a first network entity in the ordered sequence:

identifying a first device associated with said network entity which is not allocated the required primary channel ;

identifying at least one other device to which the first device will cause individual interference, above an allowable threshold, and is allocated the required primary channel of the first device;

if the first device has an allocated channel which is the primary channel of the other device, exchanging said channels with said other device; and

repeating the re-allocation steps for each further network entity in the ordered sequence.

21. The method of claim 20, further comprising determining for each channel in

sequence if there are mutually interfering devices in said channel, and responsive to said determination, removing said channel allocation from one of said devices.

22. The method of any preceding claim, further comprising transmitting the allocated channels to one or more of the communications devices. 23. A computer program comprising instructions that when executed by a computer program control it to perform the method of any preceding claim.

24. A non-transitory computer-readable storage medium having stored thereon

computer-readable code, which, when executed by at least one processor, causes the at least one processor to perform a method, comprising:

(d) providing data indicative of mutual interference between pair-wise

combinations of a plurality of communications devices in a geographic area;

(e) allocating to each device one of a plurality of channels of a shared

communications resource based on the mutual interference data, wherein the allocating comprises, for a first channel:

(i) determining if a first device will cause individual interference, above an allowable threshold, to other devices;

(ii) repeating step (i) for subsequent devices in sequence; and (iii) allocating to the first channel device(s) determined not to cause individual interference, above the allowable threshold, to each of the other devices; and

(f) repeating step (b) for one or more further channel(s) until each device has been allocated a channel.

25. An apparatus, the apparatus having at least one processor and at least one memory having computer-readable code stored thereon which when executed controls the at least one processor:

(d) to provide data indicative of mutual interference between pair-wise

combinations of a plurality of communications devices in a geographic area;

(e) to allocate to each device one of a plurality of channels of a shared

communications resource based on the mutual interference data, wherein the allocating comprises, for a first channel:

(i) determining if a first device will cause individual interference, above an allowable threshold, to other devices;

(ii) repeating step (i) for subsequent devices in sequence; and

(iii) allocating to the first channel device(s) determined not to cause individual interference, above the allowable threshold, to each of the other devices; and

(f) to repeat step (b) for one or more further channel(s) until each device has been allocated a channel.

26. An Apparatus configured to perform the method of any of claims 1 to 22.

Description:
Radio Resource Allocation

Field of the Invention

This invention relates to a method and system for allocation of radio resources, particularly, though not exclusively, channels of a radio frequency spectrum.

Background of the Invention

Due to the increasing demand of users of mobile broadband (MBB) systems on data throughput, network operators, equipment vendors and regulators are considering possibilities for improved utilization of radio frequency (RF) resources. One main RF resource is the spectrum available for RF transmissions, i.e. the bandwidth of channels used for transmission. Due to the lack of available spectrum in currently used frequency bands, MBB systems are using higher frequency bands, e.g. above 6 GHz, where occupancy is currently lower and which allow for usage of wider channel bandwidths with little or no risk of interference with other systems. However, radio signal propagation conditions decrease with an increase in carrier frequency, and cause higher attenuation of transmitted signals.

Therefore, for suitable coverage of MBB systems, without a significant growth in cell density, improved utilisation of currently-used frequency bands is desirable. There are different ways of achieving this.

A first method is the sharing of licensed spectrum that is used only occasionally by incumbent services. This method presents challenges in that sharing an underutilised licensed spectrum requires protection for incumbent, or higher priority services, and establishment of mechanisms allowing efficient spectrum usage by lower priority services, e.g. mechanisms ensuring minimisation of interference between systems sharing the spectrum. For example, in the United States of America, the Federal Communications Commission (FCC) has determined a three-tier architecture for spectrum sharing in the 3550-3700 MHz frequency band, referred to as the 3.5 GHz Citizens Broadband Radio

Service (CBRS). A first tier is composed of incumbent services, e.g. military radiolocation services (RLS), fixed satellite services (FSS) and, for a finite period, grandfathered terrestrial wireless broadband services. Incumbents will receive full protection against interference from other users. The second and third tiers may consist of CBRS devices (CBSDs) for providing MBB access through authorised channel access. A further method is through efficient usage of unlicensed spectrum, whereby devices utilising different communications techniques may co-exist in the same unlicensed channel in a way that allows for efficient communications for all users of the spectrum which usually have the same level priority. An example of a recent standard is 3GPP

Licensed Assisted Access (LAA) which enables the sharing of unlicensed spectrum of the 5 GHz band with the IEEE 802.11 (WiFi) standard. Again, minimisation of mutual interference between LAA and Wi-Fi is a key challenge to ensure efficient co-existence. Whichever method is adopted, there is a need to be able to dynamically manage which channels are allocated to communications devices, e.g. base stations, to avoid harmful interference whilst making efficient use of the available spectrum.

Summary of the Invention

In a first aspect of the invention, there is provided a method comprising:

(a) providing data indicative of mutual interference between pair-wise

combinations of a plurality of communications devices in a geographic area;

(b) allocating to each device one of a plurality of channels of a shared

communications resource based on the mutual interference data, wherein the allocating comprises, for a first channel:

(i) determining if a first device will cause individual interference, above an allowable threshold, to other devices;

(ii) repeating step (i) for subsequent devices in sequence; and

(iii) allocating to the first channel device(s) determined not to cause individual interference, above the allowable threshold, to each of the other devices; and

(c) repeating step (b) for one or more further channel(s) until each device has been allocated a channel. Step (b)(ii) may be performed for one or more subsequent devices in sequence, only in relation to selected other devices, excluding devices previously determined to be above the allowable threshold.

Steps (b)(i) and (ii) may be performed in a sequential order based on the total interference that each device will cause said other devices. The sequential order may be a descending order of total interference.

The total interference for a device may be based on the sum of individual interferences that will be caused by said device to each other device.

Each device may be associated with a network entity, and wherein the individual interference caused by a particular device to each other device may be dependent on the identity of their respective network entity.

The individual interference caused by a particular device to one or more other devices can be reduced, or set to zero, if their network entities are identical.

The network entities may correspond to network providers and/or operators.

The method may further comprise, between steps (b)(iii) and (c): (b)(iv) sequentially ordering each unallocated device, and, for each unallocated device in the sequence, determining if said unallocated device will cause individual interference, above an allowable threshold, in relation to the allocated device(s), the unallocated device also being allocated to the channel if the interference is within said allowable threshold.

Step (b)(iv) may be performed in a descending sequential order based on the total interference that each unallocated device will cause all other devices. The method may further comprise: (d) allocating at least one further channel to one or more devices if said allocation will not cause individual interference above an allowable threshold in relation to each other device already allocated to said further channel.

Step (d) may comprise determining a sequential order of devices based on the total interference that each device will cause all other devices, and, for each device in sequence, only allocating the device a further channel if said device will not cause interference above the allowable threshold in relation to any other device previously allocated to said channel

The sequential order may comprise a descending or ascending sequential order. Each device may be associated with one of a plurality of network entities, and the method may further comprise: determining a respective primary channel for each network entity based on the channel allocations and; re-allocating one or more channels such that devices associated with a particular network entity are allocated, for at least one of their channels, the respective primary channel for their network entity.

The method may further comprise determining an ordered sequence of network entities, and wherein the reallocation of channels is performed according to said ordered sequence. The primary channel for a network entity may be the channel allocated to most devices associated with said network entity, or the channel with the next most allocated devices if two or more network entities have the most devices at the same channel.

The re-allocation order may be based on the number of devices Mj associated with each network entity.

The re-allocation order may be further based on the number of devices Xj max allocated to the channel with the highest number of allocations. The re-allocation order may be a descending sequential order determined by:

where Δ,· = Mj - Xj max . The re-allocation may comprise, for a first network entity in the ordered sequence:

identifying a first device associated with said network entity which is not allocated the required primary channel; identifying at least one other device to which the first device will cause individual interference, above an allowable threshold, and is allocated the required primary channel of the first device; if the first device has an allocated channel which is the primary channel of the other device, exchanging said channels with said other device; and

repeating the re-allocation steps for each further network entity in the ordered sequence. The method may further comprise determining for each channel in sequence if there are mutually interfering devices in said channel, and responsive to said determination, removing said channel allocation from one of said devices. The method may further comprise transmitting the allocated channels to one or more of the communications devices.

In a second aspect of the invention, there is provided a computer program comprising instructions that when executed by a computer program control it to perform a method comprising:

(a) providing data indicative of mutual interference between pair-wise

combinations of a plurality of communications devices in a geographic area;

(b) allocating to each device one of a plurality of channels of a shared

communications resource based on the mutual interference data, wherein the allocating comprises, for a first channel:

(i) determining if a first device will cause individual interference, above an allowable threshold, to other devices;

(ii) repeating step (i) for subsequent devices in sequence; and

(iii) allocating to the first channel device(s) determined not to cause individual interference, above the allowable threshold, to each of the other devices; and

(c) repeating step (b) for one or more further channel(s) until each device has been allocated a channel. In a third aspect of the invention, there is provided a non-transitory computer-readable storage medium having stored thereon computer-readable code, which, when executed by at least one processor, causes the at least one processor to perform a method, comprising:

(a) providing data indicative of mutual interference between pair-wise

combinations of a plurality of communications devices in a geographic area; (b) allocating to each device one of a plurality of channels of a shared

communications resource based on the mutual interference data, wherein the allocating comprises, for a first channel:

(i) determining if a first device will cause individual interference, above an allowable threshold, to other devices;

(ii) repeating step (i) for subsequent devices in sequence; and (iii) allocating to the first channel device(s) determined not to cause individual interference, above the allowable threshold, to each of the other devices; and

(c) repeating step (b) for one or more further channel(s) until each device has been allocated a channel.

In a fourth aspect of the invention, there is provided an apparatus, the apparatus having at least one processor and at least one memory having computer-readable code stored thereon which when executed controls the at least one processor: (a) to provide data indicative of mutual interference between pair-wise

combinations of a plurality of communications devices in a geographic area;

(b) to allocate to each device one of a plurality of channels of a shared

communications resource based on the mutual interference data, wherein the allocating comprises, for a first channel:

(i) determining if a first device will cause individual interference, above an allowable threshold, to other devices;

(ii) repeating step (i) for subsequent devices in sequence; and

(iii) allocating to the first channel device(s) determined not to cause individual interference, above the allowable threshold, to each of the other devices; and

(c) to repeat step (b) for one or more further channel(s) until each device has been allocated a channel.

In a fifth aspect of the invention, there is provided an apparatus configured to perform the method of:

(a) providing data indicative of mutual interference between pair-wise

combinations of a plurality of communications devices in a geographic area;

(b) allocating to each device one of a plurality of channels of a shared

communications resource based on the mutual interference data, wherein the allocating comprises, for a first channel:

(i) determining if a first device will cause individual interference, above an allowable threshold, to other devices;

(ii) repeating step (i) for subsequent devices in sequence; and (iii) allocating to the first channel device(s) determined not to cause individual interference, above the allowable threshold, to each of the other devices; and

(c) repeating step (b) for one or more further channel(s) until each device has been allocated a channel.

Brief Description of the Drawings

The invention will now be described, by way of non-limiting example, with reference to the drawings, in which:

Figure ι is a schematic view of a plurality of base stations within a geographic area for being allocated channels of an RF spectrum;

Figure 2 is a block diagram of components of a Resource Allocation System, according to embodiments of the invention;

Figure 3 is a flow diagram of high-level processing stages of a channel allocation algorithm employed by the Figure 2 Resource Allocation System, according to embodiments of the invention;

Figure 4 is a graphical representation of a mutual interference matrix used by the channel allocation algorithm, according to embodiments of the invention;

Figure 5 is a flow diagram of processing stages of a first stage of the channel allocation algorithm, according to embodiments of the invention;

Figure 6 is a flow diagram showing, in greater detail, processing stages of the Figure 5 first stage of the algorithm, according to embodiments of the invention;

Figure 7 is a flow diagram showing, in still greater detail, processing stages of the Figure 5 first stage of the algorithm, according to embodiments of the invention;

Figures 8a - f are schematic views representing a plurality of base stations in respective different stages of the first stage of the algorithm;

Figure 9 is a flow diagram showing, in still greater detail, processing stages of the Figure 5 first stage of the algorithm, according to embodiments of the invention;

Figure 10 is a flow diagram of processing stages of a second stage of the channel allocation algorithm, according to embodiments of the invention;

Figure 11 is a flow diagram showing, in greater detail, processing stages of the Figure 10 second stage of the channel allocation algorithm, according to embodiments of the invention. Figure 12 is a flow diagram of processing stages of a third stage of the channel allocation algorithm, according to embodiments of the invention;

Figure 13 is a flow diagram showing, in greater detail, processing stages of the Figure 12 channel allocation algorithm, according to embodiments of the invention;

Figure 14 is a table of values which is useful for understanding the operation of the Figure 12 third stage of the channel allocation algorithm, according to embodiments of the invention;

Figure 15 is a flow diagram showing, in still greater detail, processing stages of the Figure 12 third stage of the channel allocation algorithm, according to embodiments of the invention;

Figure 16 is a flow diagram showing, in still greater detail, processing stages of the Figure 12 third stage of the channel allocation algorithm, according to embodiments of the invention;

Figure 17 is a flow diagram showing, in overview, processing stages of a final coexistence check, which may form part of the third stage of the channel allocation algorithm, according to embodiments of the invention;

Figure 18 is a flow diagram showing, in greater detail, processing stages of the final coexistence check, according to embodiments of the invention;

Figure 19 is a graphical representation of a plurality of base stations within a geographic area, indicating allocations at the output of the first stage of the channel allocation algorithm, according to embodiments of the invention;

Figure 20 is a graphical representation of the Figure 19 base stations, indicating allocations at the output of the second stage of the channel allocation algorithm, according to embodiments of the invention;

Figure 21a and 21b are graphical representations of the Figure 19 base stations, indicating allocations at the output of the respective third and final coexistence check stages of the channel allocation algorithm, according to embodiments of the invention; and

Figures 22a and 22b show tangible media, respectively a removable memory unit and a compact disc (CD), storing computer-readable code which when run by a computer perform methods according to embodiments of the invention

Detailed Description of Preferred Embodiments

The following embodiments describe methods and systems for radio resource allocation. The methods may be performed automatically and dynamically by a processing terminal for managing allocations to a plurality of communications devices in a geographic area. The communications devices may be associated with, or under the control of, one of a plurality of different network entities, for example network providers or operators. In some embodiments, the allocations may be performed in real time or near real time.

Although applicable to any system for communications in licensed or unlicensed bands where resource allocation may be beneficial, embodiments herein relate to the example of a Citizens Broadband Radio System (CBRS) which, as mentioned, operates in the 3550- 3700 MHz band. Channels of the RF spectrum are allocated in a selective way to each of a plurality of Citizens Broadband System Devices (CBSDs) within a particular geographic area.

In some embodiments, the methods and systems may be applicable to allocating resources other than RF channels, e.g. subcarriers, time slots and/or code distributions between base stations and/or user devices which may be part of a network. The term 'channel' as used herein is therefore to be interpreted broadly as any allocable sub-division of a communications medium.

A CBSD may be a fixed station or a network of fixed stations. End user devices are not typically considered CBSDs. One or more CBSDs may be associated with a network entity, for example one which provides data communications services to users. For example, the network entity may be a network operator or provider. For example, a first network operator may be associated with one or more CBSDs and a second network operator may be associated with one or more different CBSDs.

One aim of a CBRS system is fair spectrum sharing. However, spectrum has to be shared in a way that avoids or mitigates interference between CBSDs operating in the same geographic area (i.e. co-located operation) and/or in the same frequency channel (co- channel operation). Due to the range of radio access technologies which can be used as CBSDs (e.g. 5G, LTE, WLAN, WiMax etc.), achieving co-existence can be challenging without external co-ordination.

External co-ordination may be provided by a so-called Spectrum Access System (SAS) for allocating channels to CBSDs, which allocation may use the SAS-CBSD protocol. A Coexistence Manager (CXM) may be part of the SAS or a standalone entity connected to the SAS. The main task of the CXM or SAS is the distribution of the available spectrum among CBSDs in a geographical area or group. Proposed methods for the CXM allocate channels according to the number of different networks rather than the actual radio channel conditions and/or the requirements of particular CBSDs. A first network with a higher number of CBSDs than in a second network may be allocated the same amount of spectrum, meaning that each CBSD of the first network will have less spectrum per CBSD. This may be inefficient.

Embodiments herein provide improved methods and systems for resource allocation.

Figure l is a schematic diagram of an example scenario, which is useful for understanding preferred embodiments.

Figure l shows a geographic area l within which are provided a plurality of mobile broadband (MBB) devices 2, 3, 4, 5, 6, 7, 8, 9, 10 for transmitting and/or receiving data. The MBB devices 2 - 10 can be of any type and may use one or more known radio access technologies, e.g. 5G, LTE, WLAN, WiMAX etc. to provide data communications to each other, and/or for user equipment within the geographic area 1. The user equipment may be wireless terminals including, but not restricted to, mobile telephones and tablet computers. For ease of explanation, it is assumed that each MBB device 2 - 10 is a CBSD operating in the 3550 - 3700 MHz part of the RF spectrum. Typically, CBSDs are fixed devices. Other MBB device types may however be operating in different parts of the RF spectrum and/or may or may not be fixed devices. It is also assumed that the CBSDs 2 - 10 are sharing the 3550 - 3700 MHz spectrum.

For this purpose, a Resource Allocation System (RAS) 12 is provided, which is in signal communication with each CBSD 2 - 10, for allocating to each CBSD one or more channels of the spectrum using an algorithm to be described below. A single control channel 13 is shown between the RAS 12 and a first CBSD 2, and it will be appreciated that respective further control channels may be provided between the RAS and the other CBSDs 3 - 10. The control channel(s) may be wired or wireless. The SAS-CBSD or CXM-CBSD protocols may be used for the control channel(s), possibly over a secure link such as Ethernet. The RAS 12 may be akin to a SAS or CXM mentioned above and is configured to dynamically allocate channels to the CBSDs 2 - 10 depending on, amongst other information, the mutual interferences between the CBSDs. In the Figure 1 example, a first network operator NWi is shown associated with three

CBSDs 3, 4, 10. Similarly, a second network operator NW2 is associated with three CBSDs 2, 5, 8, and a third network operator NW3 is associated with three CBSDs 6, 7, 9.

Figure 2 shows a schematic diagram of components of the RAS 12. The RAS 12 may have a controller 21, RAM 23, a memory 25, and, optionally, input and/or output peripherals 31. The controller 21 is connected to each of the other components in order to control operation thereof.

The memory 25 may be a non-volatile memory such as read only memory (ROM), a hard disk drive (HDD) or a solid state drive (SSD). The memory 25 stores, amongst other things, an operating system 27 and may store software applications 29. In this example, the memory 25 may also store a set of mutual interference data 30 the purpose of which will be explained below. The mutual interference data 30 may alternatively be received from an external source. The RAM 23 is used by the controller 21 for the temporary storage of data. The operating system 27 may contain code which, when executed by the controller 21 in conjunction with the RAM 23, controls operation of each of the hardware components of the RAS 12.

The controller 21 may take any suitable form. For instance, it may be a microcontroller, plural microcontrollers, a processor, or plural processors.

The RAS 12 may be a standalone computer, a sever, or a network of computers or servers. The RAS 12 may communicate with each of the CBSDs 2 - 10 in accordance with one or more software applications 29 to allocate channels to the CBSDs in an efficient and dynamic way. Communication with the CBSDs 2 - 10 is by means of respective signal lines 13 which may use a wired or wireless communications protocol. If wireless, the RAS 12 may comprise a communications interface 33 and an antenna 34.

In some embodiments, the RAS 12 may also be associated with external software applications not stored on the RAS. These may be applications stored on a remote server device and may run partly or exclusively on the remote server device. These applications may be termed cloud-hosted applications. The RAS 12 may be in communication with the remote server device in order to utilize the software application stored there. One software application 29 provided on the memory 25 is a RAS application for allocating channels of the shared RF spectrum to each of the CBSDs 2 - 10 using an algorithm to be descried below. In some embodiments, the algorithm may be

implemented in, or using a combination of, hardware, firmware and/or software. Referring to Figure 3, the RAS application 29 in overview is arranged into three stages 35, 36, 37, each performing a respective part of an overall channel allocation algorithm. In some embodiments, only a subset of the stages 35, 36, 37 may be used since each stage provides a level of optimisation. Unlike proposed methods, embodiments herein consider individual CBSDs 2 - 10, not only networks and interference between networks.

Therefore, it may be more efficient. In some embodiments, the method allows for allocation of a common primary channel (CPC) for all CBSDs associated with the same network entity. In some embodiments, the method achieves improved utilisation of the available spectrum by means of iterative optimisation steps. A first stage 35 is configured to receive data indicative of the mutual interferences between pair-wise combinations of the different CBSDs 2 - 10 that may share the RF bandwidth. The output from the first stage 35 is an allocation to each CBSD 2 - 10 of a single channel from a plurality of available channels. This allocation may be performed in an iterative manner, based on applying input data which includes, or is derived from, the mutual interference data, to a learned model or neural network. In some embodiments, the neural network may be a Kohonen neural network in the variant of monitored learning. It is found that this method may achieve efficient channel allocation by minimising, or reducing, the number of channels required to handle all CBSDs 2 - 10 whilst keeping interference within acceptable limits. Further information on the use of unmonitored Kohonen neural networks is disclosed in US60817222, the content of which is

incorporated herein by reference for background information.

In this context, a monitored neural network may comprise a target at the beginning of the algorithm which remains constant in the long term. This is in contrast with an

unmonitored neural network where there is no constant, long term target at the beginning. The target is learned without monitoring during operation of the algorithm. In the prior art, the target will depend on the data traffic which is not constant, and in any case, network operators will generally not wish to share this information in a CBRS or similar system. Monitored neural networks are also advantageous in that they are less demanding in terms of computation.

In the monitored use of a Kohonen neural network, the method is found to be more efficient in terms of computation time and power usage than unmonitored methods. Also, the method disclosed herein does not require information about the traffic in a given channel and therefore does not require adaptation of a target in the learning procedure. This is because the target in the method disclosed is a value of constant maximum interference received at a given channel which indicates if a given channel can be used.

The mutual interference data 30 may be provided in the form of a mutual interference matrix [W] indicating interference for pair-wise combinations (CBSD m , CBSD n ) of CBSDs where there are M CBSDs in the geographical area, and hence m and n = 1 ... M. Figure 4 shows one example of a mutual interference matrix 43. Each cell of the mutual interference matrix 43 comprises a mutual interference value 44 for the corresponding pair of CBSDs (CBSD m , CBSD n ). Referring to the Figure 1 scenario, the presence of nine devices 2 - 10 may be represented by a 9 x 9 matrix. It will be understood that m≠n within the mutual interference matrix 43. It will also be understood that there are alternative methods of representing, or deriving, mutual interference data.

The derivation of the mutual interference matrix 43 is not the subject of this disclosure. It will be appreciated that conventional techniques can be used to generate the mutual interference matrix 43 including, but not limited to, measurement and/or the use of a comprehensive channel model to simulate the interference conditions between CBSDs 2 - 10. Referring back to Figure 3, a second stage 36 is configured in overview to allocate one or more additional channels to the CBSDs in an iterative way based on whether or not a CBSD, if added to a channel, will cause harmful interference to CBSDs already allocated to that channel. Harmful interference may be defined as an interference level that is above a predefined threshold. The predefined threshold may be a common threshold for all CBSDs or may be particular to each CBSD or CBSD pairing. A third stage 37 is configured in overview to allocate to each network operator a common primary channel, and to re-allocate in a particular order the channel distribution so that all CBSDs associated with a given network operator will have the same common primary channel. In some embodiments, a final coexistence check may be performed to ensure that this re-allocation does not cause harmful interference.

Following the third stage 37, in a further stage 38, the RAS 12 transmits to each CBSD 2 - 10 its respective channel allocation(s) for configuring said CBSDs to transmit and/or receive data using said channel(s).

Figure 5 is a flow chart showing the basic steps in the first stage 35. A first step 5.1 provides a matrix of mutual interferences [W] indicating in data form interferences for pair-wise combinations (CBSD m , CBSD n ) of the CBSDs 2 - 10 mentioned above. A second step 5.2 applies data derived from said matrix [W] to a learned model, for example the adapted Kohonen model mentioned previously. A third step 5.3 allocates a single channel to each of the CBSDs 2 - 10 until all CBSDs have been allocated a channel. It follows that not all available channels may be required, therefore. Figure 6 is a flow chart showing in greater detail steps in the first stage 35. A first step 6.1 corresponds with step 5.1 above. A second step 6.2 applies the data derived from said matrix [W] to the basic Kononen model to generate an ordered list of the total interference that will be caused by each CBSD m to all other CBSDs, i.e. CBSD n s. The order may be a descending order. A third step 6.3 then applies to each CBSD a first inner optimisation loop which ensures that each is examined not only against total interference but also the individual interference that will be caused to each other CBSD in the area, i.e.

neighbouring CBSDs. A fourth step 6.4 then applies to each CBSD a second inner optimisation loop which additionally examines the CBSDs found in the previous stage to be harmful interferers against those which were not. Because each iteration of each loop may reduce the number of CBSDs, optimisation may be achieved.

Referring now to Figure 7, a more detailed example of an algorithm performed by the RAS application 29 in the first stage 35 will be described. First Stage - Single Channel Allocation The following parameters are used by the algorithm and so will be introduced here for convenience. In other embodiments, only a subset of the following may be employed.

Input Vector: x B = l e X Mxl (l)

The input vector x m may be a sequential string of values representing a set (l) or reset

(o) state of each CBSD in sequence. M is the number of CBSDs in the analysed

geographical area. At the start of the first stage 35, all CBSDs have their input vector set to 1, meaning they have the same chance to be allocated to an available channel.

Matrix of Weights: w m >B e W MxN , N = M,n≠ m (2)

Each CBSD is "weighted" against all others CBSDs using a matrix of weights. The weight is representative of, or equal to, the mutual interference caused by CBSD m towards CBSD„. Matrix of Conditions: y n m e Y MxN , N = M ,n≠ m (3)

Each pair-wise combination of CBSDs has an associated condition which defines the interference threshold acceptable for each CBSD„. If the threshold is breached by a CBSDm, this is considered harmful interference in respect of CBSD n .

Matrix of Comparisons

ΓΓθ;ΐ1 if /D = /D

K,n = \ J . " ",K ,n ^ K MxN , N = M, n≠m (4)

1 if ID m ≠ ID„ Depending on whether CBSD m and CBSD„ are associated with the same network entity, e.g. network operator, a respective value may be provided which has a direct bearing on the algorithm. It may, for example, be assumed that network operators can manage interference between their own CBSDs if interference were to occur. In this case, the value of k m n is zero (fully manageable) or between zero and one (partially manageable to not manageable). If CBSDs belong to different network operators, then k m n is set to one. The value of k m n is used as a multiplier as part of the algorithm and has a direct impact on the result. The multiplier can also be used to distinguish CBSDs with contention-based access capability from those without it. For example, LTE-LBT (Listen Before Talk) CBSDs may be set as CBSDs of one operator with the multiplier set to zero and LTE-TDD (Time Division Duplex) as CBSDs of another operator may have the multiplier of one. The multiplier between LTE-LBT and LTE-TDD is also set to one. In this way, LTE-LBT CBSDs may be secure from interference caused by LTE-TDD CBSDs, because LBT and TDD cell may be allocated different channels.

N

Vector of Costs: V n =∑w^ n - k m>n , N = M, n≠ m (5)

For each CBSD m , a vector may be computed which indicates the cost of interference it causes all other CBSD„s.

In a first step 7.1 the mutual interference matrix 43 is provided.

In a second step 7.2, a first available channel I is selected, i.e. to determine which CBSDs may be allocated that channel. For subsequent iterations of the method, the next channel in sequence is selected and the subsequent steps repeated for said channel, without considering CBSDs allocated to previous channel(s). This occurs until all CBSDs have been allocated a channel which may minimise the number of channels required to handle all CBSDs within interference limits.

In a third step 7.3, each input vector X m is set to 1.

In a fourth step 7.4, each one of the CBSDs having X m set to 1 is analysed as follows. In a fifth step 7.5, the total interference V m caused by each CBSD m to all neighbouring CBSDnS is determined. In a sixth step 7.6 the CBSD m s are sorted into descending order based on the values of V m .

In a seventh step 7.7, each CBSD m in descending order is analysed as follows.

In an eighth step 7.8, it is determined whether the CBSD m having the greatest total interference (V m = max (V)) will cause individual interference above the predetermined threshold (indicated in the matrix of conditions) for one or more other CBSDs. If so, then the input vector X m for that CBSD m is reset to o in a ninth step 7.9, and the method passes to a tenth step 7.10. If not, the input vector X m for that CBSD m is kept at 1 and the method passes to the tenth step 7.10. In the tenth step 7.10, steps 7.8 and 7.9 are repeated for the next CBSDm in descending order. When all CBSD m s have been analysed, the method passes to an eleventh step 7.11.

In the eleventh step 7.11, the previous second to tenth steps 7.2 - 7.10 steps are repeated M times. This repetition accounts for the fact that, for each iteration, the number of CBSDs with a non-zero value for X m may change. The sixth to eleventh steps 7.6 to 7.10 may be considered the first inner optimisation loop 6.3 mentioned above, which provide improvements on basic learning models, e.g. the unmonitored Kohonen neural network. In general, the aim of the first inner optimisation loop 6.3 is to ensure that each CBSD is examined not only on the basis of the total interference caused to all other CBSDs but also against the interference caused to individual CBSDs, i.e. the other neighbouring CBSDs in the geographical area. This accounts for the situation where a CBSD that causes the greatest total interference may not cause significant interference, above the predetermined threshold, to individual neighbouring CBSDs. The first inner optimisation loop 6.3 therefore identifies CBSDs which do not cause the highest total interference but which do cause interference above the threshold for individual neighbouring CBSDs.

Additional twelfth to seventeenth steps 7.12 - 7.17 will now be described, which may be considered a second inner optimisation loop 6.4. A twelfth step 7.12 identifies each CBSD m from the previous step which has an input vector X m of o. In a thirteenth step 7.13 the CBSD m s are sorted into descending order based on the value of V m . In a fourteenth step 7.14, each CBSD m in descending order is analysed as follows. In a fifteenth step 7.15 it is determined whether the CBSD m having the greatest total interference will cause individual interference above an acceptable threshold with all other devices having the input vector X m of 1. If not, the input vector X m for that CBSD is set to 1 and the method passes to the sixteenth step 7.16. If it will, then the input vector X m for that CBSD remains at o and the method passes to step 7.17. In the seventeenth step 7.17, steps 7.15 and 7.16 are repeated for the next CBSD m in descending order of total interference.

In general, the aim of the second inner optimisation loop 6.4 is to additionally examine the CBSDs previously excluded (input vector reset to o) as the strongest interferers. The second inner optimisation loop 6.4 therefore allows CBSDs that did not meet the conditions of the initial determination to be allocated to the current channel if it is found that it, or they, do not cause harmful interference to neighbouring CBSDs. This enables minimisation of the number of channels needed for all CBSDs.

In an eighteenth step 7.18, all CBSDs having an input vector X m of 1 are allocated to the current channel.

In a nineteenth step 7.19, it is determined whether all CBSDs have been allocated a single channel. If not, then in a twenty first step 7.21 the next channel is selected in step 7.2 and the process repeats as before for CBSDs which have an input vector X m of o after optimization for the previous channel. If so, then the process ends in step 7.20 whereby the number of required channels is known.

The operation of the second inner optimisation loop 6.4 will now be briefly described with reference to Figures 8a - 8f that provides a graphical example.

Figure 8a shows six CBSDs 40 - 45 in a geographical area. Referring to Figure 8b, at the output of the step 7.11 respective total interference values are indicated above each CBSD 40 - 45 and the respective input vectors X m are indicated below each CBSDs. In this example, CBSD 42 produces the greatest total interference whereas CBSD 45 produces the least total interference. Referring to Figure 8c, CBSD 42 is considered first in the descending order, only against those other CBSDs which have a non-zero input vector X m . If it is determined that CBSD 42 does not cause harmful individual interference to the other, neighbouring CBSDs 40, 41, 44, 45, then its input vector X m is set to 1, as shown in Figure 8d. The process is repeated for the next CBSD 43 as shown in Figure 8e. If it is determined that CBSD 43 will cause harmful interference to the other, neighbouring, CBSDs 40, 41, 42, 44, 45 (note that this includes the CBSD modified in the previous iteration) then its input vector X m remains at o. Thus, as shown in Figure 8f, the CBSDs 40, 41, 42, 44, 45 are allocated to a first channel (Ch#i) and the remaining CBSD 43 is allocated to a different, second channel (Ch#2). Therefore it is seen that the CBSD 42 that exhibited a interference to CBSD 43 above an allowable threshold, i.e. harmful interference, nevertheless may be allocated into a current channel if it will not cause harmful interference to other, neighbouring CBSDs.

For completeness, Figure 9 is a more detailed flow chart, showing an example method of implementing the first stage 35 algorithm, including the first and second inner

optimisation loops 6.3, 6.4. The Figure 9 flow chart corresponds with the more general flow chart of Figure 7, and includes the abovementioned parameters and the iterative loops. For example, steps 9.1 - 9.13 comprise the initial steps of selecting a current channel, setting the input vectors X m = 1 and determining the Vector of Costs for each CBSDm. These correspond with steps 7.1 to 7.5 of Figure 7. For example, steps 9.14 to 9.18 comprise steps of the first inner optimisation loop corresponding to steps 7.6 to 7.10 of Figure 7. For example, steps 9.22 - 9.34 comprise steps of the second inner optimisation loop corresponding to steps 7.12 - 7.17 of Figure 7. For example, steps 9.35, 9.36, 9.37 and 9.38 respectively correspond with steps 7.18, 7.19, 7.21 and 7.20 of Figure 7.

Second Stage 36 - Multiple Channel Allocation

Having allocated each CBSD to a single channel, the second stage 36 of the RAS application 29 is configured to determine if one or more additional channels may be allocated to one or more CBSDs.

Figure 10 is a flow chart indicating steps of the second stage algorithm performed by the RAS application 29.

In a first step 10.1 the CBSD m s are sorted into either descending or ascending order based on the values of V m previously determined, i.e. the total interference each CBSD m causes all neighbouring CBSDs. This order will determine the outcome of this second stage 36 and either option may be used.

For example, an ascending order means that CBSDs that cause least total interference to all other CBSDs will be considered first in the second stage 36. This will increase the probability that these CBSDs will be allocated additional channels than CBSDs causing the most interference. It may be assumed, however, that CBSDs causing the least total interference are near the edge of the geographic area and therefore may not require additional channels from a traffic load point of view. A descending order approach favours CBSDs causing the highest total interference, which CBSDs are statistically more likely to be in the middle of the geographic area and may therefore serve more data traffic than those on the edge. Therefore, it may be more beneficial to apply the descending order for step 10.1.

In a second step 10.2, the first, or next, CBSD m in the order is selected. In a third step 10.3, a first channel I = 1 is selected. In a fourth step 10.4, it is determined if the CBSD m will cause interference above an acceptable threshold for all other CBSDs already allocated to the first channel, unless CBSD m has been already allocated to the channel I = 1 during stage one. If not, in step 10.5, the CBSD m is allocated to the channel I = 1, on top of the channel allocated to CBSD m during stage one, and in steps 10.6 and 10.7 the next channel I + 1 is selected and the process repeated. If the interference is greater than the

predetermined threshold, the process moves to steps 10.6 and 10.7 without allocating the CBSDm to the current channel. When all channels have been analysed in step 10.6, the next CBSD m+ i in the ordered sequence is selected, and the process repeats from step 10.2.

Note that for a subsequent iteration, CBSD m+ i will be examined for interference with

CBSDm from the previous iteration.

In step 10.8, when all CBSDs have been analysed, the second stage 36 is complete.

The second stage 36 therefore aims to allocate at least some CBSDs one or more additional channels by determining the effect of their interference with other CBSD already allocated those channels.

For completeness, Figure 11 is a more detailed flow chart showing an example method of implementing the second stage 36 algorithm. The Figure 11 flow chart corresponds with the more general flow chart of Figure 10, and in this case includes the abovementioned parameters and the iterative loops.

Third Stage 37 - Primary Channel Allocation

Having allocated each CBSD one or more channels in an optimised manner, the third stage 37 of the RAS application 29 re-allocates one or more channels in a way which allocates a common primary channel to CBSDs associated with a particular entity, e.g. a network provider. This functionality may be advantageous to mobile operators, for example, because using a common primary channel allows for easier mobility / handover for user equipment between CBSDs of the same operator. Further, it may give the operator confidence that at least one part of the shared spectrum is constantly available for this operation. The third stage 37 is an algorithm for achieving this.

Figure 12 is a flow chart indicating in overview steps performed in the third stage 37.

A first step 12.1 selects an operator J, i.e. so that the subsequent steps are performed for each operator J in turn. In a second step 12.2, a common primary channel for each operator is determined. In a third step 12.3, a re-allocation order is determined. In a fourth step 12.4, re-allocation of one or more channels is performed based on the determined common primary channel and the re-allocation order. Figure 13 is a flow chart indicating an example implementation of the third stage 37. A first step 13.1 selects an operator J so that the subsequent steps are performed for each operator J in turn. A second step 13.2 determines a parameter Xj max indicative of the channel having the most allocations for the operator J. This is set as the common primary channel. In a third step 13.3, the difference Aj between Xj max and the number Mj of all CBSDs for the operator J is determined, as:

In a fourth step 13.4, an auxiliary factor Fj is determined, as:

The value of the auxiliary factor Fj determines the order in which the operators are reallocated or re-optimised in subsequent steps. This order is required because reallocation of channels for one operator will influence reallocation for another, subsequent, operator. The process therefore needs to start from an optimal point, which in the present embodiment is the operator having the highest value of Fj, and the process continues in descending order. In some embodiments, if two or more operators have the same value of Fj then the operator having, for example, the lowest identifier may be selected first. The auxiliary factor Fj also helps determine which channel is the optimal common primary channel for a given operator, which in the present embodiment is the channel with the greatest number of allocations, i.e. Xj max , If this channel has already been selected as the common primary channel for another operator, e.g. with a greater value of Fj, then the channel with the next-greatest number of allocations is selected, and so on.

Referring to Figure 14, a table 50 is shown indicating example values for three network operators, where J = 3, andj = 1, 2, 3.

The values of Δ,· and Fj are determined as follows.

Ai = Mt - Xt max = 25 - 14 = 11;

A 2 = M 2 - X 2 max = 37 - 24 = 13;

F 2 = A 2 . M 2 = 13 - 37 = 481; A 3 = M 3 - X 3 max = 38 -28 = 10;

F 3 = A 3 . M 3 = 10 . 38 = 380.

Hence, the operator j = 2 has the highest position in the order, i.e. first or J #1 , and is allocated channel ID = 2 as the common primary channel. Next in the order is the operator j = 3, which is allocated channel ID = 3 as the common primary channel. Finally, the operator j = 1 is last in the order and is allocated channel ID = 4 as the common primary channel.

Figure 15 is a flow chart indicating in greater detail steps performed in the re-allocation stage 13.6 of the third stage 37.

A first step 15.1 selects the operator J #1 based on the re-allocation order. A second step 15.2 determines if all CBSDs for that operator J #1 have, as one of their allocated channels, the common primary channel previously determined. If so, then the next operator J# 2 is selected in step 15.11 and the process repeats. If not, then the process moves to step 15.3. In step 15.3, each CBSD m for the operator J #1 , which does not have, as one of its allocated channels, the common primary channel previously determined is considered in sequence as follows. In step 15.4 it is determined if the CBSD m will cause harmful interference with any neighbouring device CBSD n , including those not associated with the operator J #1 . If not, in step 15.7 the first channel of the CBSD m is replaced by the allocated CPC of the operator J #1 because there is no limitation in terms of interference caused to the neighbouring device CBSD n and it does not matter if this neighbouring device has a channel which is the CPC. If, so for each of those neighbouring devices CBSD n , in step 15.6 it is determined if any of said neighbouring devices has the common primary channel for J #1 . If so. then in step 15.8 given channels are exchanged and the process moves to step 15.9. If not, then the process moves to step 15.7 and then to step 15.9. In step 15.9, the next neighbouring CBSD n is selected and the process returns to step 15.4. When all neighbouring CBSD n s have been examined, in step 15.10 the process is repeated for each CBSDm of J When all CBSD m s have been examined, in step 15.11 the next operator J #2 is selected and the process repeats until each CBSD m is allocated the common primary channel of its associated operator.

The output from stage 15.11 is an update set of channel allocations. In some

embodiments, a final coexistence check 15.12 is performed when all operators have been considered, as will be described below.

For completeness, Figure 16 is a more detailed flow chart showing an example method of implementing the third stage 37 algorithm. The Figure 16 flow chart corresponds with the more general flow chart of Figure 15, and in this case includes the abovementioned parameters and the iterative loops.

Steps between 16.20 and 16.25 are not directly illustrated in Figure 15. The aim of these steps is to identify initial channels of CBSD m and CBSD n which are optimal for the exchange of channels between CBSD m and CBSD n . This exchange needs to ensure that CBSDm is allocated its CPC, and potentially also CBSD n is allocated its CPC if CBSD m initially included a channel which is the CPC for CBSD n . Step 16.21 examines if CBSD m is allocated a channel which is the CPC for CBSD n . If so, in stage 16.24 or in stage 16.26 this channel is replaced at the CBSD m by the CPC of CBSD m . If not, in stage 16.24 or in stage 16.26 the first channel on the channels' list of CBSD m is replaced at CBSD m by CPC of CBSDm. Whether the exchange should take place in stage 16.24 or in stage 16.26 is decided in stage 16.25, and depends on whether CBSD n is already allocated its CPC or not. If so, stage 16.24 is executed. If not, stage 16.25 is executed. Figure 17 is a flow chart indicating in greater detail steps performed in the final coexistence check 15.12. In a first step 17.1 the process starts by receiving the channel allocations from the previous step. In a second step 17.2, it is determined, e.g. on a channel-by-channel basis, if there are mutually interfering CBSDs in the same channel. If so, in step 17.3, one or more of said devices are removed from said channel. The process repeats for all channels.

For completeness, Figure 18 is a more detailed flow chart showing an example method of implementing the final coexistence check 15.2. The Figure 18 flow chart corresponds with the more general flow chart of Figure 17, and in this case includes the abovementioned parameters and the iterative loops.

Steps between 18.10 and 18.17 are particularly important for the final co-existence check. Step 18.10 checks if a given pair of CBSDs (CBSD m and CBSD n ), which exhibit mutual interference, are allocated at least one same channel. If so, step 18.13 checks if the given channel is the CPC of CBSD n and if so, the given channel is removed from the list of channels of CBSD m in step 18.16. If not, step 18.14 checks if the given channel is the CPC of CBSDm. If so, the given channel is removed from the list of channels of CBSD n in step 18.17. If not, step 18.15 checks which CBSD, from the pair of CBSD m and CBSD n , has the higher number of channels and the given channel is removed from the list of channels of the CBSD which has higher number of channels in step 18.16 or 18.17, respectively, for the CBSDm or CBSDn.

The generated output from the final coexistence check is therefore one or more channels allocated to each CBSD that utilises efficiently the shared spectrum by minimising the number of channels required to transmit and/or receive data whilst maintaining interference within allowable limits, i.e. within the threshold(s).

The channel allocations, as updated, may be transmitted periodically from the RAS 12 to each of the CBSDs, e.g. CBSDs 2 - 10 shown in the Figure 1 example. Each CBSD 2 - 10 will maintain a local look up table (LUT) defining which channels it may employ, and which of those channels is its common primary channel. The RAS 12 may itself store one or more LUTs in any data representation and send the LUTs to the CBSDs 2 - 10.

For completeness, an Appendix is provided showing MATLAB code used in modelling the algorithm disclosed herein and as a proof of concept. The model, when run, generates M CBSDs at random positions in the area of d x d [km 2 ]. Free Space Path Loss propagation has been used in the model. The transmit power of all CBSDs is set by the parameter P [dBm] and the maximum allowed interference is set by the parameter Y [dBm] for all CBSDs. The number of assumed networks/operators is set by the parameter N. The number of CBSDs per network/operator is generated randomly. All calculations and algorithms used in the MATLAB model are as disclosed herein. The values of these parameters can be changed in the first part/ section of the code.

Figure 19 is a graphical representation of modelled results from the first stage 35 of the algorithm. The Figure shows a geographic area 52 comprising multiple CBSDs 53, in respective positions which are indicated with an 'x'. The input parameters to the simulation were as follows:

Geographical area size = 25 km 2 (5 km x 5 km);

- Number of CBSDs M = 20;

Number of networks/ operators N = 3;

Equivalent Isotropically Radiated Power (EIRP) = 30 dBm;

Interference Threshold Y = -75 dBm;

Channel Model = Free space.

Each CBSD 53 is shown with an associated CBSD identifier 55, a network identifier 56 and a channel allocation 57. It will be seen that each CBSD 53 has a single channel allocation 57· Figure 20 is a graphical representation of the modelled results from the second stage 36. It will be seen that certain CBSDs 52 have received additional channel allocations, as indicated by the circles 58.

Figure 21(a) is a graphical representation of the modelled results from the third stage 37, prior to the final coexistence check 15.12. The common primary channel for network operators Ί', '2' and '3' are determined to be channels '2', '1' and '3', respectively. It will be seen that certain CBSDs 52, i.e. those indicated by the circles 59, do not have the required common primary channel or have the common primary channel of the neighbour CBSD. Figure 21(b) shows the process of exchanging channels so that said CBSDs 52 are allocated the appropriate common primary channel.

Figures 22a and 22b show tangible media, respectively a removable memory unit 65 and a compact disc (CD) 68, storing computer-readable code which when run by a computer perform methods according to embodiments described above. The removable memory unit 65 may be a memory stick, e.g. a USB memory stick, having internal memory 66 storing the computer-readable code. The memory 66 may be accessed by a computer system via a connector 67. The CD 68 may be a CD-ROM or a DVD or similar. Other forms of tangible storage media may be used. In summary, therefore, methods and systems for resource allocation are disclosed which may be implemented in any communications system where it is necessary or desirable to share the communications resource between multiple devices, e.g. a common frequency band. Embodiments have been disclosed in relation to CBSDs but may be modified to other systems, e.g. other types of base station, user devices of a company or individual's own network etc., and also to other resources, e.g. sub-carriers, time-slots, and codes.

The first stage 35 of the algorithm is based on the Kohonen neural network in the monitored variant of adapted learning. Other forms of machine learning algorithms may be used, however. The first stage 35 may assume the presence of the parameter k m n which enables adjustment of input conditions based on the respective identities of the network operators or radio access technologies (RATs). The first stage 35 may use a second inner optimisation loop which reduces or minimises the number of channels required to ensure coexistence between devices and helps to allocate channels to the strongest interferers when feasible. In the second stage 36 of the algorithm, by having the option of using either an ascending or descending order of devices at the input, the algorithm may allocate further channels to devices which are statistically likely to be, respectively, at the periphery or towards the middle of the geographic area. The third stage 37 allows allocation of a common primary channel for each network entity. As shown and described, the overall algorithm uses relatively basic mathematical operations which may not require significant computational power or time.

It will be appreciated that the above described embodiments are purely illustrative and are not limiting on the scope of the invention. Other variations and modifications will be apparent to persons skilled in the art upon reading the present application.

Moreover, the disclosure of the present application should be understood to include any novel features or any novel combination of features either explicitly or implicitly disclosed herein or any generalization thereof and during the prosecution of the present application or of any application derived therefrom, new claims may be formulated to cover any such features and/or combination of such features.

APPENDIX

"5 "5 Input parameters

clear all;

f = 3.5; Channel frequency [GHz] d = 5; Census Track Area size: dxd [km A 2]

M = 50; % Number of CBSDs

N = 3; % Number of operators NOTE: if more operators, check if every operator got his CBSD

%load iD8.mat;

iD = ceil (rand (1,M) N) ;

%L = 4; % Number of free radio channels %load PosX8.mat;

PosX = rand (1,M) d; Random positions of CBSDs

%load PosY8.mat;

PosY = rand (1,M) d;

P = 30; Tx power of CBSD [dBm]

Y = -75.0000; % Allowed interfernce level [dBm] (condition)

%% Calculation of distances between CBSD's positions

Pos = [PosX; PosY] ; % Matrix of CBSDs positions

Dist = dist(Pos); % Matrix of distances between CBSDs

%Dist = Dist + 0.00001; % Condition to avoide -Inf from PL formula

%% Optimization - allocation channels to CBSDs

x = ones(l,M); % Input vector

y = zeros (1,M) ;

xl = 0;

OptChannel = 0;

Int (1:M,1:M) = -Inf;

ww (1 :M, 1 :M) = -Inf ;

for mm = 1 : M % Loop for calculation of weight of single element m from vector x

for nn = 1 : M % Loop to calculate weigth of single element m in relation to other elements

if (nn ~= mm) % Condition for single element n clasification as useful (check if was not removed in previous steps)

if iD (mm) == iD (nn) %

Condition for interference kk (mm, nn) = 0.0001;

else kk(mm,nn) = 1;

end;

PL (mm,nn) = 20 * loglO ( Dist (mm, nn) ) + 20 * loglO (f) + 92.45; % Free Space Path Loss formula

ww(mm,nn) = P - PL (mm,nn) + 10 * loglO (kk (mm, nn) ) ; % Interferences [dBm]

end;

end;

W (mm) = sum ( (10. Λ (ww (mm, : ) . /10) ) ) ;

end;

while sum (sum (OptChannel ) ) < M Optimization for each channel

xl xl + 1;

for xm = 1 : M Main loop for optimalization per single channel w(l:M, 1:M) = -Inf; % Necessary condition needed to minimize interference of CBSD with itself

PL (1:M, 1:M) = -Inf;

k(l:M, 1:M) = -1;

V(1:M, 1:M) = -1;

for m = 1 : M % Loop for calculation of weight of single element m from vector x

if x (m) == 1 % Condition for element m clasification as useful

for n = 1 : M % Loop to calculate weigth of single element m in relation to other elements

if (x(n) == 1) && (n ~= m) % Condition for single element n clasification as useful (check if was not removed in previous steps)

if iD (m) == iD (n) % Condition for interference

k(m,n) = 0.0001;

else k(m,n) = 1;

end; PL (m,n) = 20 * loglO (Dist (m, n) ) + 20 * loglO (f) + 92.45; % Free Space Path Loss formula

w(m,n) = P - PL (m,n) + 10 * loglO (k(m,n));

% Interferences [dBm]

Int (m,n) = w(m,n);

end;

end;

V(xm,m) = sum( (10. Λ (w(m, :) ./10) ) ) ; %*

max ( (10. Λ (w (m, : ) . /10) ) ) ; % Cost for element m

end;

end;

W (xm, : ) = V (xm, : ) ;

for vv = 1 : 1 : M

[VVMax (xm, vv) , WMaxNum (xm, vv) ] = max (W (xm, : ) ) ;

W (WMaxNum (xm, vv) ) = -Intend;

[VMax (xl, xm) , MaxNum (xl, xm) ] = max (V (xm, : ) ) ; % Determination of element which has the highest cost

[IntMax (xl, xm) , IntMaxNum (xl, xm) ] = max (w (MaxNum (xl, xm) ,:)) ; for ff = 1 : 1 : M

if (max (w (WMaxNum (xm, ff) ,:) ) > Y) %&& (iD (MaxNum (xl , xm) ) ~ : iD ( IntMaxNum (xl , xm) ) ) % Checking if element with highest cost crosses interference limit

x (WMaxNum (xm, ff) ) = 0; % If crosses, its weight is zeroed

end;

end;

end;

OptChannel (xl,l:M) = x; % Saving numbers of CBSD assigned to channel number xl

Counter (1:M) = 0;

for ij = 1 : 1 : M

if (OptChannel (xl, WMaxNum ( 1 , ij ) ) == 0) && (sum

(OptChannel (:, WMaxNum (1, ij )) ) == 0)

for kl = 1 : 1 : M

if (OptChannel (xl,kl) == 1) && Int

(WMaxNum (1, ij ), kl) <= Y

Counter (ij) = Counter (ij) + 1; end;

end;

if Counter (ij) == sum (OptChannel (xl,:))

OptChannel (xl , WMaxNum ( 1 , ij ) ) = 1;

end;

end;

end;

y(xl,l:M) = OptChannel (xl, 1 :M) ;

for u = 1 : 1 : M

x (u) = xor ((sum (OptChannel (:, u) )), 1 ) ; % Condition to exclude already allocated CBSDs from optimization for next channels

end;

end;

%% Taggig CBSDs to channels

L = xl;

for xc = 1 : 1 : L

ii = 0;

for xo = 1 : 1 : M

if OptChannel (xc,xo) == 1

ii = ii + 1 ;

StationNum (xc, ii) = xo;

end;

end;

end;

%% Ploting of CBSD positions in Census Track Area with channel allocations

Tag = 1 : 1 : M;

figure (3) ;

plot (PosX, PosY, ' * ' ) ;

xlim ( [0 d] ) ;

ylim ( [0 d] ) ;

grid on; for om = 1 : 1 : M text (PosX (om) , PosY (om) , num2str (Tag (om) ) , ' HorizontalAlignment ' , ' left ' , ' VerticalAlignment ' , ' cap ' )

text (PosX (om) , PosY ( om) , num2 str ( iD (om) ) , ' HorizontalAlignment ' , ' right ' , 'VerticalAlignment ' , ' cap ' , ' Color ' , ' blue ' )

end;

display (L) ;

pos = zeros (M) ; for op = 1 : 1 : numel ( StationNum (:, 1 ) ) % number of used channels sz (op) = numel ( StationNum (op, : ) ) ; % number of stations in channel

for om = 1 : 1 : sz (op)

if StationNum (op,om) ~= 0

% text (PosX (StationNum (op, om) ) , PosY (StationNum

(op, om) ) , [num2str (op) , ' , ' ] , ' HorizontalAlignment ' , ' right ' , ' VerticalAli gnment ' , ' bottom ' , 'Color ' , ' red ' )

CbsdCh (StationNum (op,om)) = op;

end;

end;

end;

for mno = 1 : 1 : M

pos (iD(mno) ) = pos (iD(mno) ) + 1;

OpCh (iD (mno), pos (iD(mno) ) ) = CbsdCh (mno) ;

end;

Nhist (1:M) = 0;

histCounter (1:N) = 0;

OpChPrim (1:N) = 0;

for nn = 1 : 1 : N

for mm = 1 : 1 : numel (OpCh (nn, : ) )

if OpCh (nn,mm) ~= 0

histCounter (nn) = histCounter (nn) + 1;

end;

end; [Nhist, Edge] = histcounts (OpCh (nn, 1 : histCounter (nn) ) )

[OpChMaxDens (nn) , OpChMaxPos (nn) ] = max (Nhist) ;

OpChMaxVelue (nn) = mean ( [Edge (OpChMaxPos (nn) )

Edge (OpChMaxPos (nn) +1) ] ) ;

end;

%% Further optimization - addition of next channels to CBSDs

W_ = W;

W = W;

Counter_2 (1:L,1:M) = 0;

OptChannel_2 = OptChannel;

for v = 1 : 1 : M

[VVMin (v) , WMinNum (v) ] = min (W_) ; % change to min (W_) granting low intererence and area edge

W_ (WMinNum (v) ) = Inf; % change to Inf if granting low intererence and area edge

end;

iii = 1 ;

CbsdCh (2:L,1:M) = 0;

OptChannel_2 = OptChannel; for iii = 1 : 1 : L%while iii == numel (CbsdCh (:,1))

Counter_2 (1:L,1:M) = 0;

%OptChannel_2 = OptChannel;

for g = 1 : 1 : M

for t = 1 : 1 : M

if WMinNum (g) ~=t %&& CbsdCh (l,t) ~= CbsdCh ( 1 , WMinNum (g) ) if Int (WMinNum (g) , t) <=Y

for c = 1 : 1 : L

if CbsdCh (c,t)~=0;

Counter_2 (CbsdCh ( c, t ), WMinNum ( g) ) = Counter_2 (CbsdCh ( c, t) , WMinNum (g) ) + 1;

end;

end;

end;

end;

end;

for ch = 1 : 1 : L

if ch~=CbsdCh ( 1 , WMinNum (g) ) && Counter_2

(ch, WMinNum (g) ) ==sum (0ptChannel_2 (ch, :))

0ptChannel_2 ( ch, WMinNum (g) ) = 1; end;

end;

CounterCh (1:M) = 1;

for si = 1 : 1 : L

for s = 1 : 1 : M

if OptChannel ( si , s ) ~=OptChannel_2 (sl,s)

CounterCh (s) = CounterCh (s) + 1;

CbsdCh (CounterCh (s),s) = si;

end;

end;

end;

end; for xc = 1 : 1 : L

ii = 0;

for xo = 1 : 1 : M

if 0ptChannel_2 (xc,xo) == 1

ii = ii + 1 ;

StationNum 2 (xc, ii) = xo;

end;

end;

end;

%CounterCh (1:M) = 1;

%for si = 1 : 1 : L

% for s = 1 : 1 : M

% if OptChannel (sl,s) ~= 0ptChannel_2 (sl,s)

% CounterCh (s) = CounterCh (s) + 1;

% CbsdCh (CounterCh (s),s) = si;

% end;

% end;

% end;

%iii = iii + 1;

end for om = 1 : 1 : M text (PosX (om) , PosY (om) , num2str (Tag (om) ) , ' HorizontalAlignment ' , ' left ' , ' VerticalAlignment ' , ' cap ' ) text ( PosX (om) , PosY ( om) , num2 str ( iD (om) ) , ' HorizontalAlignment ' , ' right ' , ' VerticalAlignment ' , ' cap ' , ' Color ' , ' blue ' )

end;

for t = 1 : 1 : M

if CbsdCh (:,t)~=0

ChDisp = num2str (CbsdCh (:, t) ) ;

else

for z = 1 : 1 : L

if CbsdCh (z, t) ==0

ChDisp = num2str (CbsdCh (1 : z-1, t) ) ;

break

end;

end;

end;

text (PosX (t) , PosY

(t) , ChDisp, ' HorizontalAlignment ' , ' right ' , ' VerticalAlignment ' , ' bottom ' , 'Color' , 'red' )

end;

OpChList (1:L+2,1:N) = 0;

for in = 1 : 1 : N

for il = 1 : 1 : L

for im = 1 : 1 : M

if iD (im) == in

OpChList (L+2,in)= OpChList (L+2,in) + 1/L;

end;

if iD (im) == in && OptChannel_2 (il,im) == 1;

OpChList (il,in) = OpChList (il,in) + 1;

end;

end;

end;

end;

OpChList2=OpChList;

for in2 = 1 : 1 : N

OpChList2 (L+2, in2) =round (OpChList (L+2,in2));

end; %% Common primary channel per operator optimization

PrimLackStatus (1 :N) =0;

for 1 = 1 : 1 : N

if max (OpChList2 (1 :L, l) ) ~=OpChList2 (L+2, l)

PrimLackStatus (jl)=l;

end;

[PrimChan ( l) , PrimChanNum ( 1 ) ] = max (OpChList2 ( 1 : L, j 1) ) ; PrimChanDiff ( 1 ) =OpChList2 (L+2, 1) -PrimChan ( 1 ) ;

PrimOrderFactor

( jl) =ceil (PrimChanDiff ( jl) *OpChList2 (L+2, jl) ) ; end;

OpChList3=OpChList2 ;

for jk = 1 : 1 : N

for kj = 1 : 1 : L

[ PrimChan2 ( k , k) , PrimChanNum2 ( k , k) ] = max

(OpChList3 (1 :L, jk) ) ;

OpChList3 (PrimChanNum2 ( kj , j k) , j k) =0 ;

end;

end;

PrimOrderFactor2 = PrimOrderFactor;

for 11 = 1 : 1 : N

%if PrimLackStatus (11) ==1;

[ PrimOrderValue ( 11 ) , PrimOrder ( 11 ) ] = max ( PrimOrderFactor2 ) ; PrimOrderFactor2 ( PrimOrder ( 11 ) ) = -1;

%end;

end;

PrimChanNum3 = PrimChanNum;

LL = numel (CbsdCh (:, 1) ) ;

for km = 1 : 1 : LL

count (1 :N) =1;

for lk = 2 : 1 : N

for lk2 = 1 : 1 : lk-1

if PrimChanNum3 (PrimOrder (lk) ) ==PrimChanNum3 (PrimOrder (lk2) ) count ( lk) =count ( lk) +1 ;

end;

end;

PrimChanNum3 (PrimOrder (lk) ) =PrimChanNum2 (count (lk) , PrimOrder (lk) ) ; end;

end; count2 (1 :LL, 1 :M) =0;

CbsdCh_=CbsdCh;

CbsdCh2=CbsdCh;

if sum (PrimLackStatus) ~=0

for fn = 1 : 1 : N

for fm = 1 : 1 : M

Indicator (fm) =0;

%for fl = 1 : 1 : numel (:,1)

if iD (fm) ==PrimOrder (fn) &&

PrimLackStatus (PrimOrder ( fn) ) ==1

for fl = 1 : 1 : LL

if CbsdCh (fl, fm) ==PrimChanNum3 (PrimOrder (fn) ) count2 (f1, fm) =1;

end;

end;

end;

%end; %for fm = 1 : 1 : M

if sum ( count2 ( : , fm) ) ==0 && iD ( fm) ==PrimOrder ( fn)

CbsdPrimLack ( 1 , fm) =1 ;

CbsdPrimLack ( 2 , fm) =PrimChanNum3 (PrimOrder ( fn) ) ; % LegSize ( fm) =numel (CbsdCh ( : , fm) ) ;

CbsdCh_ (LL+1, fm) =PrimChanNum3 ( PrimOrder ( fn) ) ; IdSwich=l ;

for nf = 1 : 1 : M

IdSwich=l ;

if Int (fm, nf) >Y %&&

iD (nf) ~=PrimOrder (1 : fn) %&& iD (fm) ~=iD (nf)

for nfl = 1 : 1 : LL

IdSwich=l ;

if

CbsdCh (nfl, nf) ==PrimChanNum3 (PrimOrder (fn) ) | | CbsdCh2 (nf1 , nf) ==PrimCha nNum3 (PrimOrder (fn) )

%Indicator=l ;

for fml = 1 : 1 : LL

if

CbsdCh (fml, fm) ==PrimChanNum3 (iD (nf) )

IdSwich=fml ;

end;

end;

if

CbsdCh2 (nfl, nf) ==PrimChanNum3 (iD (nf) )

CbsdCh2 ( IdSwich, fm) =PrimChanNum3 ( PrimOrder ( fn) ) ;

else

CbsdCh2 (nfl , nf) =CbsdCh ( IdSwich, fm) ;

CbsdCh2 (IdSwich, fm) =PrimChanNum3 (PrimOrder (fn) ) ;

break

end;

%elseif

CbsdCh (nf1, nf) ==PrimChanNum3 (PrimOrder (fn) ) ;

%break%CbsdCh2 (IdSwich, fm) =PrimChanNum3 ( PrimOrder ( fn) ) ;

end;

%CbsdCh2 (IdSwich, fm) =PrimChanNum3 (PrimOrder (fn) ) ;

end;

% if lndicator==0;

CbsdCh2 (IdSwich, fm) =PrimChanNum3 (PrimOrder (fn) ) ;

% end; end; end;

for ili = 1 : 1 : LL

if

CbsdCh2 (ili, fm) ~=PrimChanNum3 (PrimOrder (fn) ) ;

Indicator ( fm) =Indicator ( fm) +1 ;

end;

end;

if Indicator ( fm) ==LL

CbsdCh2 (IdSwich, fm) =PrimChanNum3 (PrimOrder (fn) ) ; end;

end;

end;

end;

end;

CbsdCh3=CbsdCh2;

for cm = 1 : 1 : M

for cl = 1 : 1 : LL

if CbsdCh3 (cl, cm) ~=CbsdCh (cl, cm)

for cn = 1 : 1 : M

if Int(cm,cn)>Y

for cln = 1 : 1 : LL

if CbsdCh3 (cln, cn) ==CbsdCh3 (cl, cm)

CbsdCh3 (cl, cm) =0;

end;

end;

end;

end;

end;

end;

end;

CbsdCh4=CbsdCh3;

for ell = 1 : 1 : L

for cm2 = 1 : 1 : M

for cl2 = 2 : 1 : LL

if CbsdCh (cl2, cm2) ~=0 && CbsdCh (cl2-l, cm2) ==0

CbsdCh4 (cl2-l, cm2) =CbsdCh4 (cl2, cm2) ;

CbsdCh4 (cl2, cm2) =0;

end;

end;

end;

end;

%CbsdCh3 ( 1 : LL, 1 : M) =0 ; %for llx = 1 : 1 : LL

% for mmx = 1 : 1 : M

% if CbsdCh2 (llx, mmx) ~=CbsdCh (llx, mmx) for tt = 1 : 1 : M

if CbsdCh4 (:,tt)~=0

ChDisp2 = num2str (CbsdCh4 ( : , tt) ) ;

else

for z = 1 : 1 : L

if CbsdCh (z, tt) ==0

ChDisp2 = num2str (CbsdCh4 (1 : z-1, tt) ) ; break

end;

end;

end; text (PosX (tt) , PosY

( tt ) , ChDisp2 , ' HorizontalAlignment ' , ' left ' , ' VerticalAlignment ' ' , ' Color ' , ' green ' )

end;