Skip to content

orxfun/orxfun

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

60 Commits
Β 
Β 
Β 
Β 

Repository files navigation

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 πŸ”Ž).

knapsack

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.

miscellaneous side quests

I also work on various side topics which are either relevant to efficient computation, or to improve ergonomics, or related to rust patterns. Some examples are:

  • orx-iterable βž› Defines and implements Iterable, Collection and CollectionMut traits to represent types that can be iterated over multiple times.
  • orx-tree βž› A beautiful, convenient and efficient 🌳.
  • orx-v βž› Traits to unify all vectors!
  • orx-priority-queue βž› Priority queue traits and high performance d-ary heap implementations.
  • orx-meta βž› Meta structures such as statically typed queues of heterogeneous elements.

Finally, I write articles on this journey at orxfun-notes.

Connect

If you are interested in what I aim, feel free to email, open an issue or contribute to the repos on github, or share your ideas at discord, or sponsor.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published