Also known as NORCE Geosteering Game 2019 or Project Geobanana or geosteering.net
The project allows to compare the decision skills of people and robots for a synthetic multi-target geosteering scenario.
Here is an example of trajectories taken from the results of the Geosteering Competition 2019. Read Alyaev et al. (2021) for details.
- Server
- Client
- Ensemble-Based Decision Support System
which comprise the Interactive Sequential-decision Geosteering Benchmark Platform.
The server project is located in the folder /server/GameServer2.
Server description and features:
- Dotnet Kestrel Server
- Cookie-based identification
- JSON-based get/post requests (including send angle and timestamp, get points (4x80x100 parameters))
- Get-again request
- The same data twice does not change anything
- Logging all user actions on the backend
The folder /server/ServerObjectives2 contains the implementation of objective functions used for the benchmark; see Alyaev et al. (2021) cited below.
Note, server/GameServer2/Controllers/GeoController.cs contains a non-encrypted string private const string ADMIN_SECRET_USER_NAME
.
It is recommended to change them if you want to keep this information from the users. Fixing it is an open issue.
See server/GameServer2/README for details.
The client web files are served by the Server and are located in the folder /server/GameServer2/wwwroot.
Client description and features:
- Written in javascript using the p5.js client-side library
- Visualization of ensemble-based uncertainty
- Visualization of the tool's depth of detection
- Ability to evaluate the objective function within the predicted uncertainty
The client interface is complicated at first glance. User instructions are available in a PowerPoint or as graphical instruction. The latter are accessible from the client by pressing the (i) button on top.
Ensemble-Based Decision Support System components (and corresponding project folders):
- Custom multi-layer toy geomodel and a simplified electromagnetic sensing tool (/server/ResistivitySimulator)
- Ensemble Kalman Filter implementation (in C#) to reduce uncertainty (/server/EnKFLib2)
- Novel automated decision-support-system (DSS) bot with discrete dynamic programming for global and robust optimization under uncertainty (/server/TrajectoryOptimization)
The default DSS is integrated into the backend, but third-party bots are supported via REST API.
Other directories contain utility libraries.
The current solution and project files are configured for .NET 8.0 SDK.
.NET 8.0 SDK is available for many platforms and can be installed from its official site following the instructions:
https://dotnet.microsoft.com/en-us/download/dotnet/8.0
On many Ubuntu distros, one can install dotnet-sdk-8.0
using the package manager. However, instructions get outdated often.
As of 2024-01-25, the easiest is to install dotnet-sdk-8.0
from Microsoft package repository.
Build and publish the Server project server/GameServer2/GameServer2.csproj by running:
dotnet publish server/GameServer2/GameServer2.csproj -c Release --self-contained true
The self-contained folder should now be located at server/GameServer2/bin/Release/net8.0/<Target-OS>/publish/, where Target-OS is the identifier of your operating system.
To start the server, run the "published" executable in publish directory.
Here are some examples depending on your OS:
Go to directory:
cd server/GameServer2/bin/Release/net8.0/osx-arm64/publish
Run:
./GameServer2
Go to directory:
cd server\GameServer2\bin\Release\net8.0\win-x64\publish\
Run:
.\GameServer2.exe
Go to directory:
cd server/GameServer2/bin/Release/net8.0/linux-x64/publish
Run:
./GameServer2
Use a debugger tool in Microsoft Visual Studio (Windows only) or Microsoft VS Code for debugging and developing.
In Visual Studio open server/GameServer.sln
In VS Code open the project root directory.
The repository contains the results of two software projects:
- Web-based Interactive Sequential-decision Geosteering Platform and Benchmark
- Back-end system that represents and reduces uncertainties using Ensemble Kalman Filter paired with fully automated Decision Support System
Below are details of two papers describing these components:
Sergey Alyaev, Sofija Ivanova, Andrew Holsaeter, Reidar Brumer Bratvold, Morten Bendiksen, An interactive sequential-decision benchmark from geosteering, Applied Computing and Geosciences, Volume 12, 2021, 100072, ISSN 2590-1974, https://doi.org/10.1016/j.acags.2021.100072
@article{alyaev2021interactive,
title = {An interactive sequential-decision benchmark from geosteering},
journal = {Applied Computing and Geosciences},
volume = {12},
pages = {100072},
year = {2021},
issn = {2590-1974},
doi = {https://doi.org/10.1016/j.acags.2021.100072},
author = {Sergey Alyaev and Sofija Ivanova and Andrew Holsaeter and Reidar Brumer Bratvold and Morten Bendiksen},
keywords = {Interactive benchmark, Sequential geosteering decisions, Uncertainty quantification, Expert decisions, Experimental study, Decision support system}
}
Sergey Alyaev, Erich Suter, Reider Brumer Bratvold, Aojie Hong, Xiaodong Luo, Kristian Fossum, A decision support system for multi-target geosteering, Journal of Petroleum Science and Engineering, Volume 183, 2019, 106381, ISSN 0920-4105, https://doi.org/10.1016/j.petrol.2019.106381
@article{ALYAEV2019106381,
title = {A decision support system for multi-target geosteering},
journal = {Journal of Petroleum Science and Engineering},
volume = {183},
pages = {106381},
year = {2019},
issn = {0920-4105},
doi = {https://doi.org/10.1016/j.petrol.2019.106381},
author = {Sergey Alyaev and Erich Suter and Reider Brumer Bratvold and Aojie Hong and Xiaodong Luo and Kristian Fossum},
keywords = {Geosteering, Sequential decision, Dynamic programming, Statistical inversion, Well placement decision, Multi-objective optimization},
}
- Sergey Alyaev (aka alin256: lead developer of all components)
- Morten Bendiksen (aka mortalisk: server, GUI, and client-server interaction development)
- Andrew Holsaeter (aka holsaeter: front-end and GUI refinement)
- Erich Suter (decision-support-system contributions)
- Sofija Ivanova (user-experience design)
For useful advice to NORCE colleagues: Kristian Fossum, Robert Ewald, and Rolf Johan Lorentzen.
The development of this software was supported by the research project Geosteering for IOR (NFR-Petromaks2 project no. 268122) hosted by NORCE and funded by the Research Council of Norway, Aker BP, Equinor, Vår Energi, and Baker Hughes Norge.
The open-source release of the code is supported by the research project DISTINGUISH (NFR-Petromaks2 project no. 344236) hosted by NORCE and funded by the Research Council of Norway, Aker BP, and Equinor.
For details, visit the project website geosteering.no.