Skip to content
View orxfun's full-sized avatar
🐟
🐟

Block or report orxfun

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don't include any personal information such as legal names or email addresses. Markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
orxfun/README.md

Uğur Arıkan

I am an operations research (OR) scientist, interested in optimization, algorithms and systems thinking & design; and a rust developer 🦀.

| 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 and concise 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.

Pinned Loading

  1. orx-parallel orx-parallel Public

    A performant and configurable parallel computing library for computations defined as compositions of iterator methods.

    Rust 278 3

  2. orx-concurrent-vec orx-concurrent-vec Public

    A thread-safe, efficient and lock-free vector allowing concurrent grow, read and update operations.

    Rust 11

  3. orx-tree orx-tree Public

    A beautiful tree 🌳 with convenient, efficient, parallelizable growth, mutation and traversal features.

    Rust 8

  4. orx-priority-queue orx-priority-queue Public

    Priority queue traits and efficient d-ary heap implementations.

    Rust 5 1

  5. orx-local-search orx-local-search Public

    placeholder: local search

    Rust 3

  6. orx-math-model orx-math-model Public

    placeholder

    Rust