In dense areas, such as crowded city blocks with multiple apartments, there are typically multiple residences that each have its own Wi-Fi access point (AP). Wi-Fi communication uses radio channels for providing communication. Based on current Wi-Fi protocol, any device, such as an AP or client device, needs to wait until the radio channel is available before sending a packet. In these dense areas, devices in one home can sense the Wi-Fi signals from many devices in neighboring homes, which may act as interference for that home. Thus, in these dense areas, one home's Wi-Fi network needs to share airtime with the neighboring homes that use the same radio channel. This causes a decrease in the quality of service of a home's internet experience resulting in such issues as an increased latency in loading web pages and buffering video streams. Allocating the radio channels of the Wi-Fi APs in the dense areas in an efficient manner may provide a means for reducing the interference caused by neighboring Wi-Fi APs and increase the quality of service for each home's internet experience.
It is to be understood that both the following general description and the following detailed description are examples and explanatory only and are not restrictive. Methods, systems, and apparatuses for interference management are disclosed.
A frequency allocation configuration associated with multiple network devices may be determined. The network devices may be in a dense area (e.g., many network devices), such as an apartment building. Interference data may be generated based on signal measurements associated with each AP within a predetermined area. The interference data may be used to cause one or more of the APs to use a specified frequency.
This summary is not intended to identify critical or essential features of the disclosure, but merely to summarize certain features and variations thereof. Other details and features will be described in the sections that follow.
The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate embodiments and together with the description, serve to explain the principles of the methods and systems:
Before the present methods and systems are disclosed and described, it is to be understood that the methods and systems are not limited to specific methods, specific components, or to particular implementations. It is also to be understood that the terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting.
As used in the specification and the appended claims, the singular forms “a,” “an,” and “the” include plural referents unless the context clearly dictates otherwise. Ranges may be expressed herein as from “about” one particular value, and/or to “about” another particular value. When such a range is expressed, another embodiment includes from the one particular value and/or to the other particular value. Similarly, when values are expressed as approximations, by use of the antecedent “about,” it will be understood that the particular value forms another embodiment. It will be further understood that the endpoints of each of the ranges are significant both in relation to the other endpoint, and independently of the other endpoint.
“Optional” or “optionally” means that the subsequently described event or circumstance may or may not occur, and that the description includes instances where said event or circumstance occurs and instances where it does not.
Throughout the description and claims of this specification, the word “comprise” and variations of the word, such as “comprising” and “comprises,” means “including but not limited to,” and is not intended to exclude, for example, other components, integers or steps. “Exemplary” means “an example of” and is not intended to convey an indication of a preferred or ideal embodiment. “Such as” is not used in a restrictive sense, but for explanatory purposes.
Disclosed are components that can be used to perform the disclosed methods and systems. These and other components are disclosed herein, and it is understood that when combinations, subsets, interactions, groups, etc. of these components are disclosed that while specific reference of each various individual and collective combinations and permutation of these may not be explicitly disclosed, each is specifically contemplated and described herein, for all methods and systems. This applies to all aspects of this application including, but not limited to, steps in disclosed methods. Thus, if there are a variety of additional steps that can be performed it is understood that each of these additional steps can be performed with any specific embodiment or combination of embodiments of the disclosed methods.
The present methods and systems may be understood more readily by reference to the following detailed description of preferred embodiments and the examples included therein and to the Figures and their previous and following description.
As will be appreciated by one skilled in the art, the methods and systems may take the form of an entirely hardware embodiment, an entirely software embodiment, or an embodiment combining software and hardware aspects. Furthermore, the methods and systems may take the form of a computer program product on a computer-readable storage medium having computer-readable program instructions (e.g., computer software) embodied in the storage medium. More particularly, the present methods and systems may take the form of web-implemented computer software. Any suitable computer-readable storage medium may be utilized including hard disks, CD-ROMs, optical storage devices, magnetic storage devices, memresistors, Non-Volatile Random Access Memory (NVRAM), flash memory, or a combination thereof.
Throughout this application reference is made to block diagrams and flowcharts. It will be understood that each block of the block diagrams and flowcharts, and combinations of blocks in the block diagrams and flowcharts, respectively, may be implemented by processor-executable instructions. These processor-executable instructions may be loaded onto a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the processor-executable instructions which execute on the computer or other programmable data processing apparatus create a device for implementing the functions specified in the flowchart block or blocks.
These computer program instructions may also be stored in a computer-readable memory that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable memory produce an article of manufacture including computer-readable instructions for implementing the function specified in the flowchart block or blocks. The computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer-implemented process such that the instructions that execute on the computer or other programmable apparatus provide steps for implementing the functions specified in the flowchart block or blocks.
Accordingly, blocks of the block diagrams and flowchart illustrations support combinations of means for performing the specified functions, combinations of steps for performing the specified functions and program instruction means for performing the specified functions. It will also be understood that each block of the block diagrams and flowchart illustrations, and combinations of blocks in the block diagrams and flowchart illustrations, can be implemented by special purpose hardware-based computer systems that perform the specified functions or steps, or combinations of special purpose hardware and computer instructions.
This detailed description may refer to a given entity performing some action. It should be understood that this language may in some cases mean that a system (e.g., a computer) owned and/or controlled by the given entity is actually performing the action.
The user devices 102A-102B may comprise electronic devices such as a computer, a smartphone, a laptop, a tablet, a set top box, a display device, a printer, a telephone, a cordless phone, a network node, a network device, a communication terminal, a transmitter, or other device capable of communicating with the network devices 116A-116B. As an example, the user devices 102A-102B may comprise communication elements 106A-106B for offering an interface to a user to interact with the user devices 102A-102B and/or the computing device 104. The communication element 106A-106B can be any interface for presenting and/or receiving information to/from the user, such as media content. An example interface may be a communication interface such as a web browser (e.g., Internet Explorer®, Mozilla Firefox®, Google Chrome®, Safari®, or the like). Other software, hardware, and/or interfaces can be used to facilitate communication between the user and one or more of the user devices 102A-102B and the network devices 116A-116B. As an example, the communication elements 106A-106B can request or query various files from a local source and/or a remote source. As a further example, the communication element 106A-106B can transmit data to a local or remote device such as the network devices 116A-116B or the computing device 104 via the network devices 116A-116B.
The user devices 102A-102B may be associated with user identifiers or device identifiers 108A-108B. As an example, the device identifiers 108A-108B may be any identifier, token, character, string, or the like, for differentiating one user or user device (e.g., a user device 102A) from another user or user device. The device identifier 108A-108B can identify a user or user device as belonging to a particular class of users or user devices. As a further example, the device identifier 108A-108B may comprise information relating to the user device such as a manufacturer, a model or type of device, a service provider associated with the user device 102A-102B, a state of the user device 102A-102B, a locator, and/or a label or classifier. Other information can be represented by the device identifiers 108A-108B.
The device identifiers 108A-108B can comprise address elements 110A-110B and service elements 112A-112B. The address elements 110A-110B may comprise or make available an internet protocol address, a network address, a media access control (MAC) address, an Internet address, or the like. As an example, the address elements 110A-110B may be relied upon to establish a communication session between the user devices 102A-102B and the network devices 116A-116B or other devices and/or networks. As a further example, the address elements 110A-110B may be used as an identifier or locator of the user devices 102A-102B. The address elements 110A-110B may be persistent for a particular network.
The service elements 112A-112B may comprise identification of the service providers associated with the user devices 102A-102B and/or with the class of user devices 102A-102B. The class of the user devices 102A-102B may be related to a type of device, a capability of a device, a type of service being offered, and/or a level of service (e.g., a business class, a service tier, a service package, etc.). As an example, the service elements 112A-112B may comprise information relating to or made available by a communication service provider (e.g., an Internet service provider) that is offering or enabling data flow such as communication services to the user devices 102A-102B. As a further example, the service elements 112A-112B may comprise information relating to a preferred service provider for one or more particular services relating to the user devices 102A-102B. The address elements 110A-110B may be used to identify or retrieve data from the service elements 112A-112B, or vice-versa. As a further example, one or more of the address elements 110A-110B and the service elements 112A-112B can be stored remotely from the user devices 102A-102B and retrieved by one or more devices such as the user devices 102A-102B and the computing device 104. Other information can be represented by the service element 112A-112B.
A plurality of network devices 116A-116B may be in communication with a network, such as network 105. As an example, one or more of the network devices 116A-116B may be configured to facilitate the connection of a device, such as the user device 102A-102B, to the network 105. As a further example, the network devices 116A-116B may be configured as wireless access points (WAPs). The network devices 116A-116B may be configured to allow one or more wireless devices to connect to a wired and/or wireless network using Wi-Fi, Bluetooth®, Zigbee®, or any desired method or standard.
The network devices 116A-116B may be configured as a local area network (LAN). As an example, the network devices 116A-116B may comprise a dual band wireless access point. As an example, the network devices 116A-116 may be configured with a first service set identifier (SSID) (e.g., associated with a user network or a private network) to function as a local network for a particular user or users. As a further example, the network devices 116A-116 may be configured with a second service set identifier (SSID) (e.g., associated with a public/community network or a hidden network) to function as a secondary network or redundant network for connected communication devices.
The network devices 116A-116B may comprise identifiers 118A-118B. As an example, one or more identifiers can be or relate to an Internet Protocol (IP) Address IPV4/IPV6 or a media access control address (MAC address) or the like. As a further example, the identifiers 118A-118B may be unique identifiers for facilitating communications on the physical network segment. Each of the network devices 116A-116B may comprise an identifier 118 that is distinct. As an example, the identifiers 118A-118B may be associated with a physical location of the network devices 116A-116B.
Each device (e.g., the user devices 102A-102B or the network devices 116A-116B) may be configured to receive measurement data from one or more sources, such as from one or more user devices 102A-102B, one or more network devices 116A-116B, or one or more sensors configured to monitor and gather the measurement data associated with the radio signals of each network device 116A-116B. For example, the measurement data may comprise one or more of a percentage of time each network device 116A-116B uses each frequency of a plurality of frequencies, information indicative of each time period of a plurality of time periods each network device 116A-116B uses each frequency, an amount of time each network device 116A-116B uses each frequency, a signal strength associated with each radio signal of each network device 116A-116B, or information indicative of each network device 116A-116B that can detect a radio signal of another network device 116A-116B, and the like. The devices may be configured to receive the measurement data at predetermined time intervals and/or over a predetermined period of time. The devices may receive the measurement data through wireless links (e.g., a radio frequency, a satellite) and/or physical links (e.g., a fiber optic cable, a coaxial cable, an Ethernet cable, or a combination thereof). The devices may be configured to send the measurement data to the computing device 104 for further processing.
The computing device 104 may be a server, or a centralized device, for communicating with the network devices 116A-116B, or the user devices 102A-102B via the network devices 116A-116B. In an example, the computing device 104 may communicate with the user devices 102A-102B for offering data and/or services. For example, the computing device 104 may offer services such as network (e.g., Internet) connectivity, network printing, media management (e.g., a media server), interference management, content services, streaming services, broadband services, or other network-related services. The computing device 104 may be configured to generate interference data (e.g., pain, or interference, matrix) where given a number of apartment units and frequencies, the computing device 104 may determine an optimal allocation of frequencies to be used by the network devices 116A-116B. For example, the computing device 104 may be configured to receive measurement data associated with a plurality of radio signals used by the network devices 116A-116B and determine interference data (e.g., pain, or interference, matrix) based on the measurement data. The computing device 104 may the use the interference data to determine an allocation of frequencies for use by the network devices 116A-116B.
The computing device 104 may allow the user devices 102A-102B to interact with remote resources such as data, devices, and files. As an example, the computing device 104 may be configured as (or disposed at) a central location (e.g., a headend, or a processing facility), which can receive content (e.g., data, input programming) from multiple sources. The computing device 104 may be a separate/remote device from the headend for providing the frequency allocation services associated with a predetermined area, such as the use of a single computing device 104 for a single apartment building, for example. The computing device 104 can combine the content from the multiple sources and can distribute the content to user (e.g., subscriber) locations via a distribution system.
The computing device 104 may be configured to manage the communication between the user devices 102A-102B and a storage system 114 for sending and receiving data therebetween. As an example, the storage system 114 can store a plurality of files, user identifiers or records, or other information. As a further example, the user devices 102A-102B may request and/or retrieve one or more files from the storage system 114. The storage system 114 can store information relating to the user devices 102A-102B such as the address elements 110A-110B and/or the service elements 112A-112B. As an example, the computing device 104 may obtain the device identifiers 108A-108B from the user devices 102A-102B and retrieve information from the storage system 114 such as the address elements 110A-110B and/or the service elements 112A-112B. As a further example, the computing device 104 may obtain the address elements 110A-110B from the user devices 102A-102B and may retrieve the service elements 112A-112B from the storage system 114, or vice versa. The storage system 114 may comprise a database 124 configured for storing measurement data (e.g., interference data) received from the plurality of interference sources (e.g., network devices 116A-116B), storing interference patterns based on the interference data, storing interference signatures, and/or storing interference maps. For example, database 124 may store measurement data associated with a plurality of radio signals used by the plurality of network devices 116A-116B and/or the signal strengths associated with the radio signals of the plurality of network devices 116A-116B. The computing device 104 may search the database 124 to determine measurement data comprising one or more of a percentage of time each network device 116A-116B uses each frequency of the plurality of frequencies, information indicative of each time period of a plurality of time periods each network device 116A-116B uses each frequency, an amount of time each network device 116A-116B uses each frequency, a signal strength associated with a radio signal of each network device 116A-116B, or information indicative of each network device 116A-116B that can detect a radio signal of another network device 116A-116B. Any information can be stored in and retrieved from the storage system 114. The storage system 114 can be disposed remotely from the computing device 104 and accessed via direct or indirect connection. The storage system 114 can be integrated with the computing device 104 or some other device or system.
The computing device 104 may be configured to receive the measurement data from one or more sources, such as from one or more user devices 102A-102B, one or more network devices 116A-116B, or one or more sensors configured to monitor and gather the measurement data associated with the radio signals of each network device 116A-116B. For example, the measurement data may comprise one or more of a percentage of time each network device 116A-116B uses each frequency of a plurality of frequencies, information indicative of each time period of a plurality of time periods each network device 116A-116B uses each frequency, an amount of time each network device 116A-116B uses each frequency, a signal strength associated with each radio signal of each network device 116A-116B, or information indicative of each network device 116A-116B that can detect a radio signal of another network device 116A-116B, and the like. The computing device 104 may be configured to receive the measurement data at predetermined time intervals and/or over a predetermined period of time. The computing device 104 may receive the measurement data through wireless links (e.g., a radio frequency, a satellite) and/or physical links (e.g., a fiber optic cable, a coaxial cable, an Ethernet cable, or a combination thereof).
The computing device 104 may comprise a processor 122. The processor 122 may determine (e.g., calculate, create, generate) interference data (e.g., pain, or interference, matrix) based on the measurement data. The interference data may be indicative of AP utilization information and AP scan information. The AP utilization information may comprise a percentage of time each frequency of the plurality of frequencies is used by each network device 116A-116B of the plurality of network devices 116A-116B, and the AP scan information may comprise information indicative of each network device 116A-116B that can detect a radio signal of another network device 116A-116B of the plurality of network devices 116A-116B. The interference data may be further indicative of interferences caused by a network device 116A-116B detecting a radio signal of another network device 116A-116B and the percentage of time each network device 116A-116B uses the internet during at least one time period of a plurality of time periods. The computing device 104 may allocate the usage of the radio frequencies by each of the network devices 116A-116B based on the interference data. For example, the computing device may cause each network device 116A-116B to use an assigned frequency based on a comparison of a percentage of time each frequency of the plurality of frequencies used by each network device 116A-116B and information indicative of each network device 116A-116B that can detect a radio signal of another network device 116A-116B. The computing device 104 may be configured to cause at least two network devices 116A-116B to use the same frequency based on determining that the two network devices 116A-116B cannot detect each other's radio signal. The computing device 104 may be configured to cause each network device 116A-116B of the plurality of network devices 116A-116B to use the same frequency based on determining that a network device 116A-116B uses its frequency, or uses the internet a relatively high percentage of time, during a different time period than another network device 116A-116B regardless of whether both network devices 116A-116B may be able to detect each other's radio signals. The computing device 104 may cause two network devices 116A-116B to use different frequencies based on determining that they can detect each other's signals and that they tend to use a high amount of internet during similar time periods.
The measurement data may comprise location information (e.g., spatial coordinates) of a plurality of network devices (e.g., the network devices 116A-116B). The measurement data may be stored in the database 124. An interference pattern may be determined based on the measurement data. The interference data may be indicative of the interference pattern. The interference pattern can be plotted on an interference map.
The start of the updating procedure may start with a low value for the dummy input scalar (e.g. 1), which tends to generate soft-allocations that are closer to a uniform distribution over the optional frequencies. This allows the algorithm to start with a rough approximation of total pain and help it look for good global areas in the parameter space. In later update steps, the algorithm may use a higher value of the input scalar (e.g. 100), which tends to generate soft-allocations that are closer to a valid frequency-allocation (for each network device, only a single frequency will get a probability close to 1). This will allow the network to better approximate the total pain, and fine tune the parameters to a better local minimum. The frequency allocation may be optimized based on finding the frequency allocation C that minimizes the total interference (e.g., pain). The formula for the total interference may include a sum over network devices (over homes in the building/block). The interference may be minimized by minimizing the average-case home's pain.
The model may be adjusted to include the “worse-home-pain.” In addition to the quadratic term of the soft-frequency-allocation, the individual pain that each network device suffers may be added to the calculation and the maximum function with a soft version may be approximated (again, a parameter may be used to tune how closely this approximates max pain). Subsequently, the output of the model may be the weighted sum of the total pain and the approximate-max pain.
The interference matrix represents the “potential pain” matrix P (and Q, if needed). Q represents (for each network device and each frequency) what would be the added external-source of pain if the network device was using that frequency. P represents (for each pair of network devices) what would be the added pain that each network device caused the other network devices, if both devices use the same frequency. In order to determine the appropriate frequency allocation, the “potential pain” matrix P is estimated/calculated. The “potential pain” matrix P may then be used as a constant for the optimization problem. P is a square matrix that represents for each pair of network devices what would be the added pain if both network devices were on the same frequency. After solving the optimization (frequency-allocation) problem, only a subset of P's entries will influence the total pain. However, to solve the problem, the full matrix needs to be calculated by determining what would be the pain for each pair of network devices if they were on the same frequency, in order to decide which pairs should be on the same frequency. To calculate each entry <i,j> in matrix P, two components must be determined: “can network device i sense network device j?” and “how likely are the two network devices to use a lot of internet at the same time?” As shown in
The co-usage matrix may be estimated using finer time-resolution measurements, such as in the example shown in
The sensing matrix S (who can sense whom) may be estimated using similar options. The most recent scan report from each network device may be used, or all of the scan reports from the most recent day, week, or month may be used. In an example scenario, if the environment in the building/block is fast changing (e.g., every day someone moves in or out, people change their home furniture setup or network device location, there's construction of a new building nearby, etc.), then the more recent scan data may be used to estimate matrix S.
At step 504, interference data may be determined based on the measurement data. The interference data may be associated with AP utilization information and AP scan information. The AP utilization information may comprise a percentage of time each frequency of the plurality of frequencies is used by each network device, and the AP scan information may comprise information indicative of each network device that can detect a radio signal of another network device of the plurality of network devices. The interference data may be indicative of interferences caused by a network device detecting a radio signal of another network device of the plurality of network devices and the percentage of time each network device uses the internet during at least one time period of a plurality of time periods.
At step 506, the plurality of frequencies used by each network device of the plurality of network devices may be allocated. For example, each network device may be caused to use an assigned frequency based on a comparison of a percentage of time each frequency of the plurality of frequencies is used by each network device and information indicative of each network device that can detect a radio signal of another network device of the plurality of network devices. A Gradient Descent algorithm may be used to determine the frequency allocation. One or more input parameters may be provided to a network (e.g., neural network), wherein a soft allocation of a plurality of frequencies used by the plurality of network devices may be determined using the input parameters. The network may use the determined interference data and the soft allocation of the plurality of frequencies to determine an interference value associated with the plurality of network devices. The determined interference value may be used to determine the allocation of the frequencies to be used by the plurality of network devices. The interference value is associated with the total pain caused by the allocation of frequencies used by the network devices. The input parameters for the network may be iteratively updated using the Gradient Descent algorithm until the interference value converges to a local minimum. The input parameters may be iteratively updated until the interference value converges on a value associated with the worst case scenario. The frequency allocation is optimized according to a “worse-home-pain.”
The current frequency that each network is using may be analyzed and a frequency allocation may be determined that requires fewer network devices to switch frequencies (while most of the network devices in the neighborhood may keep their current frequency). For example, if there are multiple frequency allocation configurations that would achieve a similar total pain (e.g., total interference), the algorithm may indicate a preferred configuration that is closer to the current allocation of frequencies used by the network devices, and thus, requiring fewer network devices to switch frequencies. The algorithm may use the Gradient Descent procedure multiple times, wherein each time the procedure is started with a new random initialization of the parameters. The algorithm may compare the total pain that each iteration calculates with a measure of the number of network devices that need to switch frequencies if the new frequency allocation is selected (e.g., number of network devices that would switch a frequency, or a percentage of network devices that would switch a frequency). The algorithm may use both of these numbers (e.g., with a linear combination of both) to select a preferred frequency allocation. The neural network may be provided with another component indicating the currently used frequency allocation in the building as an input, and then compute the change from that frequency allocation to the new frequency allocation that the network generates. The neural network can then calculate a new output that is a combination of the approximated total pain and the measure of change of the new frequency allocation compared to the currently-used frequency allocation. The Gradient Descent algorithm will then automatically try to find a solution (e.g., frequency allocation) that is better in both the total pain and requiring fewer frequency switches.
At step 604, an interference data may be determined based on the measurement data. The interference data may be associated with AP utilization information and AP scan information. The AP utilization information may comprise a percentage of time each frequency of the plurality of frequencies is used by each network device, and the AP scan information may comprise information indicative of each network device that cannot detect a radio signal of another network device of the plurality of network devices. The interference data is indicative of interferences caused by a network device detecting a radio signal of another network device of the plurality of network devices and the percentage of time each network device uses the internet during at least one time period of a plurality of time periods. At step 606, at least two network devices may be caused to use the same frequency based on a determination that the at least two network devices cannot detect each other's radio signal.
At step 704, an interference data may be determined based on the measurement data. The interference data may be associated with AP utilization information and AP scan information. The AP utilization information may comprise information indicative of each time period of a plurality of time periods each network device uses the internet, and the AP scan information may comprise information indicative of each network device that can detect a radio signal of another network device of the plurality of network devices. The interference data is indicative of interferences caused by a network device detecting a radio signal of another network device of the plurality of network devices and the percentage of time each network device uses the internet during at least one time period of a plurality of time periods. At step 706, at least two network devices of the plurality of network devices may be caused to use the same frequency during different time periods based on determining that each network device of the at least two network devices uses the same frequency, or the internet a high percentage of time, during the different time periods regardless of whether each network device of the at least two network devices may be able to detect the other network device's signal.
The present methods and systems can be operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well-known computing systems, environments, and/or configurations that can be suitable for use with the systems and methods comprise, but are not limited to, personal computers, server computers, laptop devices, and multiprocessor systems. Additional examples comprise set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that comprise any of the above systems or devices, and the like.
The processing of the disclosed methods and systems can be performed by software components. The disclosed systems and methods can be described in the general context of computer-executable instructions, such as program modules, being executed by one or more computers or other devices. Generally, program modules comprise computer code, routines, programs, objects, components, data structures, and/or the like that perform particular tasks or implement particular abstract data types. The disclosed methods can also be practiced in grid-based and distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules can be located in local and/or remote computer storage media including memory storage devices.
Further, one skilled in the art will appreciate that the systems and methods disclosed herein can be implemented via a general-purpose computing device in the form of a computer 801. The computer 801 can comprise one or more components, such as one or more processors 803, a system memory 812, and a bus 813 that couples various components of the computer 801 including the one or more processors 803 to the system memory 812. In the case of multiple processors 803, the system can utilize parallel computing.
The bus 813 can comprise one or more of several possible types of bus structures, such as a memory bus, memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures. By way of example, such architectures can comprise an Industry Standard Architecture (ISA) bus, a Micro Channel Architecture (MCA) bus, an Enhanced ISA (EISA) bus, a Video Electronics Standards Association (VESA) local bus, an Accelerated Graphics Port (AGP) bus, and a Peripheral Component Interconnects (PCI), a PCI-Express bus, a Personal Computer Memory Card Industry Association (PCMCIA), Universal Serial Bus (USB) and the like. The bus 813, and all buses specified in this description can also be implemented over a wired or wireless network connection and one or more of the components of the computer 801, such as the one or more processors 803, a mass storage device 804, an operating system 805, interference processing software 806, measurement data 807, a network adapter 808, system memory 812, an Input/Output Interface 810, a display adapter 809, a display device 811, and a human machine interface 802, can be contained within one or more remote computing devices 814A-814C at physically separate locations, connected through buses of this form, in effect implementing a fully distributed system.
The computer 801 typically comprises a variety of computer readable media. Exemplary readable media can be any available media that is accessible by the computer 801 and comprises, for example and not meant to be limiting, both volatile and non-volatile media, removable and non-removable media. The system memory 812 can comprise computer readable media in the form of volatile memory, such as random access memory (RAM), and/or non-volatile memory, such as read only memory (ROM). The system memory 812 typically can comprise data such as measurement data 807 and/or program modules such as operating system 805 and interference processing software 806 that are accessible to and/or are operated on by the one or more processors 803.
The computer 801 can also comprise other removable/non-removable, volatile/non-volatile computer storage media. By way of example, the computer 801 can comprise a mass storage device 804 which can offer non-volatile storage of computer code, computer readable instructions, data structures, program modules, and other data for the computer 801. For example, a mass storage device 804 can be a hard disk, a removable magnetic disk, a removable optical disk, magnetic cassettes or other magnetic storage devices, flash memory cards, CD-ROM, digital versatile disks (DVD) or other optical storage, random access memories (RAM), read only memories (ROM), electrically erasable programmable read-only memory (EEPROM), and the like.
Optionally, any number of program modules can be stored on the mass storage device 804, including by way of example, an operating system 805 and interference processing software 806. One or more of the operating system 805 and interference processing software 806 (or some combination thereof) can comprise elements of the programming and the interference processing software 806. Measurement data 807 can also be stored on the mass storage device 804. Measurement data 807 can be stored in any of one or more databases known in the art. Examples of such databases comprise, DB2®, Microsoft® Access, Microsoft® SQL Server, Oracle®, mySQL, PostgreSQL, and the like. The databases can be centralized or distributed across multiple locations within the network 815.
The user can enter commands and information into the computer 601 via an input device (not shown). Examples of such input devices comprise, but are not limited to, a keyboard, pointing device (e.g., a computer mouse, remote control), a microphone, a joystick, a scanner, tactile input devices such as gloves, and other body coverings, motion sensor, and the like These and other input devices can be connected to the one or more processors 803 via a human machine interface 802 that is coupled to the bus 813, but can be connected by other interface and bus structures, such as a parallel port, game port, an IEEE 1394 Port (also known as a Firewire port), a serial port, network adapter 808, and/or a universal serial bus (USB).
A display device 811 can also be connected to the bus 813 via an interface, such as a display adapter 809. It is contemplated that the computer 801 can have more than one display adapter 809 and the computer 801 can have more than one display device 811. For example, a display device 811 can be a monitor, an LCD (Liquid Crystal Display), light emitting diode (LED) display, television, smart lens, smart glass, and/or a projector. In addition to the display device 811, other output peripheral devices can comprise components such as speakers (not shown) and a printer (not shown) which can be connected to the computer 801 via Input/Output Interface 810. Any step and/or result of the methods can be output in any form to an output device. Such output can be any form of visual representation, including, but not limited to, textual, graphical, animation, audio, tactile, and the like. The display 811 and computer 801 can be part of one device, or separate devices.
The computer 801 can operate in a networked environment using logical connections to one or more remote computing devices 814A, 814B, and 814C. By way of example, a remote computing device 814A-814C can be a personal computer, a computing station (e.g., a workstation), a portable computer (e.g., a laptop, a mobile phone, a tablet device), a smart device (e.g., a smartphone, a smart watch, an activity tracker, a smart apparel, a smart accessory), a security and/or monitoring device, a server, a router, a network computer, a peer device, an edge device or other common network node, and so on. Logical connections between the computer 801 and a remote computing device 814A-814C can be made via a network 815, such as a local area network (LAN) and/or a general wide area network (WAN). Such network connections can be through a network adapter 808. A network adapter 808 can be implemented in both wired and wireless environments. Such networking environments are conventional and commonplace in dwellings, offices, enterprise-wide computer networks, intranets, and the Internet.
For purposes of illustration, application programs and other executable program components such as the operating system 805 are illustrated herein as discrete blocks, although it is recognized that such programs and components can reside at various times in different storage components of the computer 801, and are executed by the one or more processors 803 of the computer 801. An implementation of interference processing software 806 can be stored on or transmitted across some form of computer readable media. Any of the disclosed methods can be performed by computer readable instructions embodied on computer readable media. Computer readable media can be any available media that can be accessed by a computer. By way of example and not meant to be limiting, computer readable media can comprise “computer storage media” and “communications media.” “Computer storage media” can comprise volatile and non-volatile, removable and non-removable media implemented in any methods or technology for storage of information such as computer readable instructions, data structures, program modules, or other data. Exemplary computer storage media can comprise RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by a computer.
The methods and systems can employ artificial intelligence (AI) techniques such as machine learning and iterative learning. Examples of such techniques include, but are not limited to, expert systems, case based reasoning, Bayesian networks, behavior based AI, neural networks, fuzzy systems, evolutionary computation (e.g., a genetic algorithms), swarm intelligence (e.g., an ant algorithms), and hybrid intelligent systems (e.g., expert inference rules generated through a neural network or production rules from statistical learning).
While the methods and systems have been described in connection with preferred embodiments and specific examples, it is not intended that the scope be limited to the particular embodiments set forth, as the embodiments herein are intended in all respects to be illustrative rather than restrictive.
Unless otherwise expressly stated, it is in no way intended that any method set forth herein be construed as requiring that its steps be performed in a specific order. Accordingly, where a method claim does not actually recite an order to be followed by its steps or it is not otherwise specifically stated in the claims or descriptions that the steps are to be limited to a specific order, it is no way intended that an order be inferred, in any respect. This holds for any possible non-express basis for interpretation, including: matters of logic with respect to arrangement of steps or operational flow; plain meaning derived from grammatical organization or punctuation; the number or type of embodiments described in the specification.
It will be apparent to those skilled in the art that various modifications and variations can be made without departing from the scope or spirit. Other embodiments will be apparent to those skilled in the art from consideration of the specification and practice disclosed herein. It is intended that the specification and examples be considered as exemplary only, with a true scope and spirit being indicated by the following claims.