This position will be located in our Lexington, MA headquarters. We are seeking a Software Engineer with a specialization in Combinatorial Optimization. Software Engineers work collaboratively within the software team and across all engineering functions. The candidate would be responsible for designing and implementing algorithms for solving multi-agent assignment and scheduling problems. Due to the nature of our solutions which combine both software and robotic hardware, this is an excellent opportunity for software engineers to experience the physical manifestations of their code beyond the traditional user interface.
Required Skills and Experience
BS degree in Computer Science or similar field.
3+ years experience in software development.
Proven experience in designing and implementing solutions for combinatorial optimization problems.
A strong background in algorithmic theory.
Programming experience: Python and C++
Linux experience: Ubuntu
VCS experience: Git
Experience designing and implementing algorithms for one or more of the following categories: Multi-agent path planning; Routing; Scheduling; Assignment
Experience using one or more of the following techniques to solve a combinatorial optimization problems: Linear Programming; Integer Programming; Mixed Integer Programming; Constraint Programming
MS or PhD in Computer Science or similar field.
5+ years experience in software development.
Experience solving combinatorial optimization problems using heuristic techniques, such as greedy algorithms, simulated annealing, Tabu search, genetic algorithms.
Experience with robotics and robotic solutions.