Ingress Maxfield (v4.0)
Ingress Linking and Fielding Strategy GeneratorAn
This is for Ingress. If you don't know what that is, you're lost.
Maxfield is a tool that generates a linking and fielding plan for a group of portals and a group of cooperating agents. Maxfield attempts to maximize AP, minimize the number of keys required for any one portal, and minimize to total time required to complete the fielding operation.
Although generating an ideal (i.e. max AP) fielding plan is fairly straightforward, identifying the optimal order to create the links to minimize walking is a computationally challenging problem. Maxfield simplifies the problem by approximating the ideal linking order: it generates many possible solutions and picks the best.
Since Maxfield generates random, nearly-ideal linking plans, you will likely get a new plan every time you run the tool. Each plan will almost certainly have the maximum possible AP, but the linking order and walking distance may be different.
This version (v4.0) is a nearly complete re-write of the original Maxfield code (based originally off of work by J. Peter Baker), which brings Maxfield into the future with Python 3, fixes many bugs, and improves the algorithm dramatically. Previous users of Maxfield will notice that plans are now much more efficient in that they require fewer keys from any individual portal, and the link order is more sensible for multi-agent operations.
You can download this tool and run it locally on your computer by following the instructions below. Or, you can use the on-line version of this tool: http://www.ingress-maxfield.com
Maxfield is written in Python 3 and is easy to install assuming
you have a Python environment on your computer. The
package depends on
gifsicle, so you will need to install
Instructions can be found here.
Once that's done, installing Maxfield (tested on Linux) is as easy as:
python setup.py install
Now you can run Maxfield using the command
maxfield-plan at the
I am not too familiar with Python on Windows, but here is how I tested
an installation on Windows 10 in a virtual environment. I downloaded
this repository as a
.zip and extracted the contents to
cd C:\Users\username\Documents\maxfield "C:\Program Files\Python38\python.exe" -m venv env env\Scripts\activate pip install numpy networkx scipy ortools matplotlib imageio pygifsicle python setup.py install
Then, Maxfield can be launched on Windows from any folder via
C:\Users\username\Documents\maxfield\env\Scripts\activate python C:\Users\username\Documents\maxfield\bin\maxfield-plan
example directory includes the Maxfield output for the portal
example/example_portals.txt. These results were generated
with the following command:
maxfield-plan example_portals.txt --num_agents 3 --num_cpus 0 --verbose --output_csv --google_api_key <REDACTED> --google_api_secret <REDACTED>
Here was the output from this command:
Found 18 portals in portal file: example_portals.txt Starting field generation with 8 CPUs. Field generation runtime: 17.1 seconds. ============================== Maxfield Plan Results: portals = 18 links = 45 fields = 40 max keys needed = 5 AP from portals = 31500 AP from links = 14085 AP from fields = 50000 TOTAL AP = 95585 ============================== Optimizing agent link assignments. Route optimization runtime: 24.5 seconds Total plan build time: 16.6 minutes Generating key preparation file. File saved to: ./key_preparation.txt CSV File saved to: ./key_preparation.csv Generating ownership preparation file. File saved to: ./ownership_preparation.txt Generating agent key preparation file. File saved to: ./agent_key_preparation.txt CSV File saved to: ./agent_key_preparation.csv Generating agent link assignments. File saved to ./agent_assignments.txt CSV File saved to ./agent_assignments.csv Generating link assignment for agent 1. File saved to ./agent_1_assignment.txt Generating link assignment for agent 2. File saved to ./agent_2_assignment.txt Generating link assignment for agent 3. File saved to ./agent_3_assignment.txt Generating portal map. File saved to: ./portal_map.png Generating link map. File saved to: ./link_map.png Generating step-by-step plots. Frames saved to: ./frames/ gifsicle: warning: huge GIF, conserving memory (processing may take a while) GIF saved to ./plan_movie.gif Total maxfield runtime: 87.5 seconds
Get information about the maxfield parameters via
usage: maxfield.py [-h] [--version] [-n NUM_AGENTS] [--num_field_iterations NUM_FIELD_ITERATIONS] [-c NUM_CPUS] [--max_route_solutions MAX_ROUTE_SOLUTIONS] [--max_route_runtime MAX_ROUTE_RUNTIME] [-o OUTDIR] [--skip_plots] [--skip_step_plots] [-r] [--google_api_key GOOGLE_API_KEY] [--google_api_secret GOOGLE_API_SECRET] [--output_csv] [-v] filename Ingress Maxfield: An Ingress Linking and Fielding Strategy Generator. positional arguments: filename The properly formatted portal file. optional arguments: -h, --help show this help message and exit --version show program's version number and exit -n NUM_AGENTS, --num_agents NUM_AGENTS The number of agents in the operation. (default: 1) --num_field_iterations NUM_FIELD_ITERATIONS The number of random field plans to generate before selecting the best. (default: 1000) -c NUM_CPUS, --num_cpus NUM_CPUS The number of CPUs used to generate field plans. If <1, use maximum. (default: 1) --max_route_solutions MAX_ROUTE_SOLUTIONS The maximum number of agent routes to generate before selecting the best. (default: 1000) --max_route_runtime MAX_ROUTE_RUNTIME The maximum runtime of the agent routing algorithm in seconds. (default: 60) -o OUTDIR, --outdir OUTDIR The directory where results are saved. Created if necessary. (default: .) --skip_plots Skip generating plots. (default: False) --skip_step_plots Skip generating step-by-step linking plots. (default: False) -r, --res_colors Use Resistance color scheme. (default: False) --google_api_key GOOGLE_API_KEY A Google Maps API key. If set, make plots on top of Google Maps background. (default: None) --google_api_secret GOOGLE_API_SECRET A Google Maps API signature secret. If not set, do not use signature. (default: None) --output_csv Output machine-readable CSV files. (default: False) -v, --verbose Print information along the way. (default: False)
Portal list format
The input to Maxfield is a file containing a list of portals and parameters about those portals. The portal file is semi-colon delimited, with the following format:
Portal 1 Name; Portal 1 Intel URL; (optional) Number of Keys in Hand; (optional) SBUL
The file must contain one line with this format for each portal. The first item on each line must be a portal name, and it must not contain a semi-colon.
The second item must be the Intel URL for the portal, which looks like:
To obtain the Intel URL for a portal, navigate to the portal on the Intel map, click on the portal to open the portal information frame, then click on the "link" button at the top-left of the website. This will open a pane with the portal URL, which contains the "pll=" bit. Simply copy and paste this URL into your portal file.
Following the URL, there are two optional items which can appear in any order or not at all. One is a number, which is interpreted as the number of keys you already have in hand for this portal. The other is the string SBUL which indicates that the portal is fully deployed with SBULs, and thus the maximum number of out-going links is 40 instead of the normal 8.
A correctly formatted line in the portal file will look like one of these:
Catholic Church of the Holy Comforter; https://www.ingress.com/intel?ll=38.031745,-78.478592&z=18&pll=38.031796,-78.479439 Catholic Church of the Holy Comforter; https://www.ingress.com/intel?ll=38.031745,-78.478592&z=18&pll=38.031796,-78.479439; 3 Catholic Church of the Holy Comforter; https://www.ingress.com/intel?ll=38.031745,-78.478592&z=18&pll=38.031796,-78.479439; 3; SBUL Catholic Church of the Holy Comforter; https://www.ingress.com/intel?ll=38.031745,-78.478592&z=18&pll=38.031796,-78.479439; SBUL Catholic Church of the Holy Comforter; https://www.ingress.com/intel?ll=38.031745,-78.478592&z=18&pll=38.031796,-78.479439; SBUL; 3
key_preparation.txt, key_preparation.csv List of portals, their numbers on the map, and how many keys are needed agent_key_preparation.txt, agent_key_preparation.csv How many keys each agent will need for each portal ownership_preparation.txt Which portals must be fully deployed pre-operation agent_assignments.txt, agent_assignments.csv The master list of the link order for all agents. agent_N_assignment.txt The subset of links made by agent N. portal_map.png A map showing the locations of the portals link_map.png A map showing the locations of portals and links frames/ plan_movie.gif The directory contains images of each step of the plan, which are compiled into the GIF. The location of each agent is highlighted by the magenta box, new fields are in red, and the paths of the agents are the magenta dashed lines.
Issues and Contributing
Anyone is welcome to submit issues or contribute to the development of Maxfield via Github.
License and Warranty
GNU Public License http://www.gnu.org/licenses/
Maxfield is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
Maxfield is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with Maxfield. If not, see http://www.gnu.org/licenses/