or-tools
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
exact
-
New release
Version 1.0.0 of Exact is released.
-
Ask HN: Where to run embarrassingly parallel, Integer, no SIMD workloads?
>> The workload is memory bound not compute bound.
> I don't think so? How many gigabytes per second per core are you processing?
That's what the Intel VTune profiler tells me. 39.2% Memory bound = 21,7% of clock ticks L1 bound (execution stalled for data that was in L1) + 12.4% L3 bound on a Haswell 4 core Xeon.
> If for some reason you can talk about this problem to random SIMD programmers online privately but you cannot post about this problem publicly
I can talk about it publicly. I just did not want to distracted from the actual hardware question. I recently started to contribute to this https://gitlab.com/JoD/exact open source project. The algorithm tries to find a valid assignment for a bunch of equations of this form 4x1 -3x57 +1* not(x1232) <= 4 (there are special cases already accelerated). We guess an assignment for a certain variable, check all constraints, sometimes constraints imply other assignments to other variables (if x1 is true and x1232 is false x57 has to be true) then those get propagated to. One technique is called watch propagation and can be done for the SAT family of clauses. This technique is in incompatible with branching along assignments. I find SIMD over clauses dubious, as they are mostly random accessed of different length and sparse. The embarrassing parallelization comes from being able to work one different parts of the parameter space and exchange clauses learned from conflicts. We are currently not doing that yet but plan to do something HordeSAT like over MPI (there is different slightly cleverer tree exchange variant over MPI all to all but i do not have that reference handy).
We have some horrible sins (such a virtual method table look ups in loops, no -march=native compiler flags in main branch, ...) which the main developer created and we have not cleaned up. If i could nerd snipe you to run some experiments with that codebase and contribute some SIMD loops (with -march=native -mtune=native only 4 functions are currently SIMD, none are significant to the performance) that be great. For all the divisibilty checking i currently plan this: https://www.reddit.com/r/exact/comments/wokfhl/resource_on_f... (we spend 3% of compute time in the standard libraries modulo)
-
Ask HN: Do you use an optimization solver? Which one? Why? Do you like it?
I use JuMP as modeling language. For MILP i am usually using Gurobi or SCIP. For ILP problems have have been looking in to the exact solver https://gitlab.com/JoD/exact which seems quiet promising.
For NLP i usually go with either https://worhp.de/ or just IpOpt.
or-tools
-
or-tools VS timefold-solver - a user suggested alternative
2 projects | 4 Jan 2024
-
A* Tricks for Videogame Path Finding
Small NP-hard problems aren't actually that bad. You can usually formulate them as eg a integer programming problem or a SMT problem, and throw an off-the-shelf solver at them.
You only need to learn the solver once, and you can re-use it for all kinds of problems. (Assuming that your instances don't have to be solved with low latency. Eg only as part of your level generation process, or at most when loading a randomly generated level, but not every frame or so.)
https://developers.google.com/optimization has a decent collection of tools.
-
Ask HN: Comment here about whatever you're passionate about at the moment
Just saw that it looks like an upcoming release of OR-Tools might include reified tables: https://github.com/google/or-tools/commit/94f3d9b46870e7ea04...
-
[P] Advice needed for what tool/algorithm is appropriate
Google OR - Tried to represent a solution to be a 5 dimensional matrix with an hour granularity. Dimensions are stations, program, project manager, day and time. If matrix[station][program][project manager][day][time] = 1, then that set is assigned, otherwise not. The main issue encountered here is about time slots, as they are not necessarily on a per hour basis. We tried time slots to be in a 5-minute interval. However, constructing the constraints that would adhere to each programs duration was proven to be difficult.
- What software is used in the field these days?
-
Sudoku solver
If you are just interested in getting a solution or for having a reference solver: There is a sudoku example in the OR-Tools package that uses constraint programming.
- Matrix / 2d Array Puzzle-Like Problem
-
Linear Programming
Not sql, but check out google’s OR-Tools. Hardly ever gets mentioned but looks very capable for some applications. https://developers.google.com/optimization
-
Would anyone know how to auto schedule tasks based on certain constraints?
Then there's also the Google's solution: https://developers.google.com/optimization/
-
Assignment to at most K groups from distance matrix?
start enumerating the properties you think the solution to your problem should have. once you have this, you should be able to reformulate those properties as constraints and then you can just plug this into a combinatorial solver such as https://developers.google.com/optimization
What are some alternatives?
HiGHS - Linear optimization software
OptaPlanner - Java Constraint Solver to solve vehicle routing, employee rostering, task assignment, maintenance scheduling, conference scheduling and other planning problems.
python-mip - Python-MIP: collection of Python tools for the modeling and solution of Mixed-Integer Linear programs
optapy - OptaPy is an AI constraint solver for Python to optimize planning and scheduling problems.
osqp - The Operator Splitting QP Solver
pyomo - An object-oriented algebraic modeling language in Python for structured optimization problems.
csips - A pure-python integer programming solver
SciPy - SciPy library main repository
clpz - Constraint Logic Programming over Integers
optaplanner-quickstarts - Mirror of https://github.com/apache/incubator-kie-optaplanner-quickstarts
golomb-solver - Create Golomb rulers with constraint programming
SWIG - SWIG is a software development tool that connects programs written in C and C++ with a variety of high-level programming languages.