Register
Submit a solution
The challenge is finished.

Challenge Overview

Challenge Overview

Welcome to the Plan Optimizer Performance Optimizations Challenge - goal is to implement the suggested performance optimizations or introduce your own.

 

NOTE: This challenge is a long sprint - submission phase will be active for 10 days.

 

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:

  1. Improve the performance of the tool by improving the Code- improve the runtime speed for optimization

  2. Expose the optimization tool as a microservice

Currently,Optimization mode supports several different optimization criterias:

  1. Torque and drag minimization

  2. Time and cost minimization

  3. Collision avoidance (ie anticollision)

  4. Minimum well plan depth value

 

Optimization tool is developed in C++ with a custom simulated annealing implementation.

Task Details

Your task is to update the provided codebase to improve the performance of both calculation and optimization modes. Sample inputs, outputs and benchmark results of the existing tool are posted in the challenge forums.

 

We ran an ideation challenge to analyze the current codebase and get ideas on what sections are worth optimizing - these submissions are available in the forums. You can implement any of those ideas, but you’re not limited to just those ideas - use them as a starting point for analysis of the codebase.

Ideas that we were looking for in the previous challenge are:

  • Can the objective function be implemented to be more performant

  • What results can be achieved by parallelizing the execution

  • Can we use any specific optimization libraries

  • Effects of vectorized code

  • Does it make sense to introduce some caching for objective function calculation

  • Is there a more suitable algorithm than simulated annealing (only for the optimization mode)

 

CLI tool should still be implemented in c++, we aren’t looking to change the base programming language.

 

NOTE: We are not looking to change the calculations of the physical processes modeled by the objective function.

 

A tester tool will be posted to challenge forums (with some delay) that will run the original cli tool and your updated tool on the same inputs, validate the results and provide the performance comparisons.

 

Submission Guidelines

Submit the updated codebase and a short document with a short summary of improvements you implemented other performance optimizations you believe would be viable for future work.


 

Final Submission Guidelines

See above

ELIGIBLE EVENTS:

2021 Topcoder(R) Open

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30159638