Challenge Overview
Challenge Overview
Welcome to the Plan Optimizer Validation Tool Challenge - goal is to implement a tool that will validate the calculations and output performance metrics for the plan optimizer tool.
Background
We have a CLI tool called Plan Optimizer that is used for optimizing well trajectory based on various inputs. We can input well parameters and optimization constraints from the input file into CLI tool and has two modes of operation:
-
Calculation - calculate all the possible combinations(These can run into several possible combinations) for well trajectory based on the user choices
-
Optimization - Out of the several, find the optimal well plan(Based on the criteria)
Finally, the tool writes all the results to the output file
This project has a few goals:
-
Improve the performance of the tool by improving the Code- improve the runtime speed for optimization
-
Expose the optimization tool as a microservice
Currently,Optimization mode supports several different optimization criterias:
-
Torque and drag minimization
-
Time and cost minimization
-
Collision avoidance (ie anticollision)
-
Minimum well plan depth value
Optimization tool is developed in C++ with a custom simulated annealing implementation.
Task Details
Your task is to build a tool that will run the original cli tool and an updated tool on the same inputs, validate the results and provide the performance comparisons.
Update the existing tool to read the input, output and results file paths from CLI arguments and add an argument that specifies weather to run optimization or calculation.
Build a validation tool that will run both optimization and calculation on a set of inputs - time measurements should be done in the validation tool (separately for optimization and calculation workflow). Once the timing info is captured, validate that the optimization result is correct - see Wellopt.cpp#ObjectiveFunction - optimized solution should return same or smaller value from the objective function. Finally, validate that all the values for the calculations are the same in both solutions (within a small configurable threshold, default to 0.001).
Submission Guidelines
Submit the full validation tool codebase along with a readme with build run and verification instructions.