Become a sponsor to Ugur Arikan
UΔur ArΔ±kan
I am an operations research (OR) scientist, interested in optimization, algorithms and systems thinking & design; and a rust developer π¦.
Working on rust & OR and concurrency & parallelization in rust, and various exciting side topics.
| github | email | discord | linkedin | cv | crates |
β€οΈ I like
I am enthusiastic about all things OR: decision science, mathematical optimization, algorithms, networks, routing, multiobjective decision making and decision making under uncertainty. I enjoy computation a lot, working on efficient concurrent data structures and parallel computation. Least but not the least, I love rust β€οΈπ¦.
π― πΈ'π ππ ππ
OR & rust
Two of the big challenges in applying OR in practice might be (i) to explain complex solutions to decision makers and (ii) to address uniqueness or custom requirements of each real life problem. I am not yet actively working on (i) but I find using LLMs for this purpose very promising and watching the advances closely.
For the latter, we are seeking flexible tools which allow for conveniently representing different sets of real life constraints. Although speed is an important feature in optimization tools, we even consider sacrificing performance to be able to deliver faster.
Imo, speed and type system of rust makes it the perfect language for rich and flexible optimization algorithms. It allows us to compose real life constraints as if we are working with a dynamic high level language, while our solutions are performant and memory efficient. For more details on this fitness, you may see the following article and talk.
My work on OR & rust goal is currently split into two parallel streams:
- Composable, flexible and efficient local search algorithms (orx-local-search). I will probably branch from this to focus specifically on vehicle routing algorithms.
- An expressive, solver-agnostic, type-safe, macro-free, concise, performant and parallelized mathematical modeling tool (orx-math-model). You may see a prototype in c# below (zoom in π).
concurrency and parallel computing
I am working on a high performance, configurable and expressive parallel computation library in rust, orx-parallel. The crate is considerably mature, but also continuously improving with many new exciting challenges.
The journey to build a parallel computation crate involved developing pinned vectors (PinnedVec, SplitVec and FixedVec) and various concurrent data structures such as ConcurrentBag, ConcurrentOrderedBag, ConcurrentIter, ConcurrentRecursiveIter. While improving the parallel computation library, these data structures continue to evolve.
On the other hand, ConcurrentVec is developed without parallel computation in focus. It is designed to be the concurrent counterpart of the standard vec.
Connect
If you are interested in what I am interested, feel free to email, open an issue or contribute to the repos on github, or share your ideas at discord.
Featured work
-
orxfun/orx-priority-queue
Priority queue traits and efficient d-ary heap implementations.
Rust 5 -
orxfun/orx-tree
A beautiful tree π³ with convenient, efficient, parallelizable growth, mutation and traversal features.
Rust 8 -
orxfun/orx-concurrent-vec
A thread-safe, efficient and lock-free vector allowing concurrent grow, read and update operations.
Rust 11 -
orxfun/orx-parallel
A performant and configurable parallel computing library for computations defined as compositions of iterator methods.
Rust 279 -
orxfun/orx-local-search
placeholder: local search
Rust 3 -
orxfun/orx-closure
An explicit closure with absolute seperation of the captured data from the function.
Rust 35