All Projects → dwave-examples → satellite-placement

dwave-examples / satellite-placement

Licence: Apache-2.0 license
Group satellites into constellations such that their average observation coverage is maximized

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to satellite-placement

nurse-scheduling
A demo of a nurse scheduling model
Stars: ✭ 24 (+20%)
Mutual labels:  constraint-satisfaction-problem, hybrid-solution, intermediate, bqm
sudoku
Solve a Sudoku puzzle with a quantum computer
Stars: ✭ 20 (+0%)
Mutual labels:  constraint-satisfaction-problem, hybrid-solution, intermediate
clustering
Using a quantum computer to cluster data points
Stars: ✭ 20 (+0%)
Mutual labels:  constraint-satisfaction-problem, intermediate, bqm
structural-imbalance
Demo for analyzing the structural imbalance on a signed social network.
Stars: ✭ 22 (+10%)
Mutual labels:  defense, intermediate
job-shop-scheduling
Determine a schedule for running a set of jobs.
Stars: ✭ 34 (+70%)
Mutual labels:  constraint-satisfaction-problem, bqm
circuit-fault-diagnosis
Find possible failing components on a circuit.
Stars: ✭ 18 (-10%)
Mutual labels:  constraint-satisfaction-problem, bqm
knapsack
Implementation of knapsack problem, set up for scaling to large problem size
Stars: ✭ 17 (-15%)
Mutual labels:  constraint-satisfaction-problem, hybrid-solution
pymae
Materials for the book "Python for Mechanical and Aerospace Engineering"
Stars: ✭ 56 (+180%)
Mutual labels:  aerospace
pyuavcan
Python implementation of the Cyphal protocol stack.
Stars: ✭ 91 (+355%)
Mutual labels:  aerospace
Optaplanner
AI constraint solver in Java to optimize the vehicle routing problem, employee rostering, task assignment, maintenance scheduling, conference scheduling and other planning problems.
Stars: ✭ 2,454 (+12170%)
Mutual labels:  constraint-satisfaction-problem
factoring
Factor numbers using a quantum computer
Stars: ✭ 30 (+50%)
Mutual labels:  constraint-satisfaction-problem
specification
The Cyphal specification documents are maintained here.
Stars: ✭ 38 (+90%)
Mutual labels:  aerospace
QFlightinstruments
QFlightInstruments is a Qt library containing flight instruments widgets including: Airspeed Indicator, Altimeter, Vertical Speed Indicator, Turn Coordinator, Attitude Indicator, Heading Indicator, Electronic Attitude Direction Indicator (EADI) and Electronic Horizontal Situation Indicator (EHSI).
Stars: ✭ 65 (+225%)
Mutual labels:  aerospace
yakut
Simple CLI tool for diagnostics and debugging of Cyphal networks
Stars: ✭ 29 (+45%)
Mutual labels:  aerospace
EAD Attack
EAD: Elastic-Net Attacks to Deep Neural Networks via Adversarial Examples
Stars: ✭ 34 (+70%)
Mutual labels:  defense
Stanford Cs 221 Artificial Intelligence
VIP cheatsheets for Stanford's CS 221 Artificial Intelligence
Stars: ✭ 1,923 (+9515%)
Mutual labels:  constraint-satisfaction-problem
awesome-spacehackers
A curated list of aerospace/space related data and code resources for a community of independent hackers dedicated to furthering humanity's knowledge of the universe through open collaboration.
Stars: ✭ 36 (+80%)
Mutual labels:  aerospace
alldaydevops-aism
All Day DevOps - Automated Infrastructure Security Monitoring and Defence (ELK + AWS Lambda)
Stars: ✭ 21 (+5%)
Mutual labels:  defense
Astro.IQ
Machine Learning + Spacecraft Trajectory Optimisation
Stars: ✭ 20 (+0%)
Mutual labels:  aerospace
Deep-Learning-and-Computer-Vision-for-Structural-Crack-Detection-And-Classification
Incorporating Inductive Bias into Deep Learning: A Perspective from Automated Visual Inspection in Aircraft Maintenance
Stars: ✭ 27 (+35%)
Mutual labels:  aerospace

Linux/Mac/Windows build status

Satellite Placement

Suppose you have a set of N satellites and k targets on Earth that you want to observe. Each of your satellites has varying capabilities for Earth observation; in particular, the amount of ground that they can observe for a set amount of time is different. Since there are k targets, you would like to have k constellations to monitor said targets. How do you group your satellites into k constellations such that the coverage of each constellation is maximized? This is the question that we will be addressing in this demo!

There are two versions available. The first version has N=12 and k=4. The larger version has N=39 and k=13.

Note: in this demo we are assuming that N is a multiple of k.

Usage

To run the smaller demo, using D-Wave's Simulated Annealing package (Neal), run the command:

python satellite.py small.json neal

To run the larger demo, using D-Wave's Hybrid Solver Service (HSS), run the command:

python satellite.py large.json hss

It will print out a set of satellite constellations and create an image to visualize the scores for each constellation, as shown below. Satellites closer to the center (grey star) have a higher score.

Example Output

Note: the larger demo is memory-intensive. It may use more than 10 GB of RAM.

Code Overview

The idea is to consider all possible combinations of satellites, eliminate constellations with particularly low coverage, and encourage the following type of solutions:

  • Constellations that have better coverage
  • Satellites to only join one constellation
  • A specific number of constellations in our final solution (i.e. encourage the solution to have k constellations)

Code Specifics

We add weights to each constellation such that we are favoring constellations with a high coverage (aka high score). This is done with bqm.add_variable(frozenset(constellation), -score). Note that frozenset is used to convey the concept that each variable in the model is a set of individual satellites, and the ordering does not matter. Incidentally, the code that defines the variables iterates over only the combinations (not the permutations), so defining the variables as tuples would work just as well (however, set cannot be used because the variables must be immutable).

References

G. Bass, C. Tomlin, V. Kumar, P. Rihaczek, J. Dulny III. Heterogeneous Quantum Computing for Satellite Constellation Optimization: Solving the Weighted K-Clique Problem. 2018 Quantum Sci. Technol. 3 024010. https://arxiv.org/abs/1709.05381

License

Released under the Apache License 2.0. See LICENSE file.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].