Look at it this way: I am arguing against "No Free Lunch theorem says an optimization algorithm cannot solve all problems because for some problems it performs worse than other algorithms"; I am arguing approximate…
I personally disagree with "no free lunch"; (for the uninitiated, "no free lunch" refer to the fact for any deterministic algorithm, there exist a problem that will force the algorithm to go through the entire solution…
It seems to just be a wrapper over or-tools and other solvers from their landing page, with the difference being it run on their servers versus your hardware. Their website does not mention what hardware is allocated…
Think of WASM as a kinda universal library target. You can compile C, Rust, C#, Java to WASM, and then you can use it in a different language from the source. This way, Java can run C or Rust code without going through…
You can find a list of quickstarts at https://github.com/TimefoldAI/timefold-quickstarts. Examples include: - School Timetabling - Employee Scheduling - Conference Scheduling - Flight Crew Scheduling Metaheurstics are…
Currently, no language ports of Timefold Solver are planned. Unfortunately, FFI (foreign function interface) have a terrible performance penalty, and since we would be doing multiple FFI calls for moves, it can easily…
Although this post discusses Constraint Programming - Satisfiability (CP-SAT) Solvers and Mixed Integer Problem (MIP) Solvers, it does not discuss Metaheuristic Solvers. Metaheuristic solvers are different in that you…
I haven't; from a quick reading, InfoBax is for when you have an expensive function and want to do limited evaluations. Timefold works with cheap functions and does many evaluations. Timefold does this via Constraint…
I thought "No Free Lunch Theorem" was a joke from its name (although I should know better since "Hairy Ball Theorem" exists). So if I understand correct, it states that all optimization algorithm must choose an order to…
By 1% of optimal, I was giving an example percentage to clarify there are solutions that exists, that are almost as good as optimal, that can be found in reasonable amount of time. There cannot be a guarantee to find a…
That depends; do you want the optimal solution? If so, I agree it is impossible for a fully general problem solver to find the optimal solution to a problem in a reasonable amount of time (unless P = NP, which is…
Some additional optimization resources (for metaheuristics, where you only have the objective/score function and no derivative): - "Essentials of Metaheuristics" by Sean Luke…
Games on old consoles such as Nintendo 64 and the Playstation One use a variety of tricks to be playable on limited hardware. For the specific example of Final Fantasy VII, there is one trick that allows you to skip…
Related: Archipelago (https://archipelago.gg/), a framework that randomizes multiple games, across multiple clients. For example, Player A is playing Mario 64, and Player B is playing Pokemon Red. Some items from Player…
CPython bytecode changes behaviour for no reason and very suddenly, so you will be vulnerable to changes in Python language versions. A few from the top of my head: - In Python 3.10, jumps changed from absolute indices…
The primary reason, in my opinion, is the vast majority of Python libraries lack type annotations (this includes the standard library). Without type annotations, there is very little for a non-JIT compiler to optimize,…
As someone who did a CPython Bytecode → Java bytecode translator (https://timefold.ai/blog/java-vs-python-speed), I strongly recommend against the CPython Bytecode → PySM Assembly step: - CPython Bytecode is far from…
JNI/the new Foreign FFI communicate with CPython via CPython's C API. The primary issue is getting the garbage collectors to work with each other. The Java solver works by repeatedly calling user defined functions when…
I had to deal with a lot of FFI to enable a Java Constraint Solver (Timefold) to call functions defined in CPython. In my experience, most of the performance problems from FFI come from using proxies to communicate…
I had the misfortune of translating CPython bytecode to Java bytecode, and I do not wish that experience on anyone: - CPython's bytecode is extremely unstable. Not only do new opcodes are added/removed each release, the…
John Walker built a virtual machine for the Babbage's instruction set, and it has a web emulator: https://fourmilab.ch/babbage/emulator.html. I don't think Ada program is available as an example though, so you'll need…
Great overview on the structure of the CPython's Virtual Machine (as well as an introduction to stack based virtual machines). I am unfortunately very familiar with CPython's bytecode [1], and do not recommend trying to…
Does constraint_factory.create_from_chain( ForEach(Shift) | Filter(lambda shift: shift.required_skill not in shift.employee.skills) | Penalize(HardSoftScore.ONE_HARD) | AsConstraint("Missing required skill") ) Feel more…
Let us know how we can improve! Feel free to start a discussion (https://github.com/TimefoldAI/timefold-solver/discussions) or submit an issue (https://github.com/TimefoldAI/timefold-solver-python/issues). We aim to…
Well, you still write code. The difference is the code is written either in ordinary Python or Java and not as mathematical equations. For example, to do the "Some employees are qualified to do either role, but others…
Look at it this way: I am arguing against "No Free Lunch theorem says an optimization algorithm cannot solve all problems because for some problems it performs worse than other algorithms"; I am arguing approximate…
I personally disagree with "no free lunch"; (for the uninitiated, "no free lunch" refer to the fact for any deterministic algorithm, there exist a problem that will force the algorithm to go through the entire solution…
It seems to just be a wrapper over or-tools and other solvers from their landing page, with the difference being it run on their servers versus your hardware. Their website does not mention what hardware is allocated…
Think of WASM as a kinda universal library target. You can compile C, Rust, C#, Java to WASM, and then you can use it in a different language from the source. This way, Java can run C or Rust code without going through…
You can find a list of quickstarts at https://github.com/TimefoldAI/timefold-quickstarts. Examples include: - School Timetabling - Employee Scheduling - Conference Scheduling - Flight Crew Scheduling Metaheurstics are…
Currently, no language ports of Timefold Solver are planned. Unfortunately, FFI (foreign function interface) have a terrible performance penalty, and since we would be doing multiple FFI calls for moves, it can easily…
Although this post discusses Constraint Programming - Satisfiability (CP-SAT) Solvers and Mixed Integer Problem (MIP) Solvers, it does not discuss Metaheuristic Solvers. Metaheuristic solvers are different in that you…
I haven't; from a quick reading, InfoBax is for when you have an expensive function and want to do limited evaluations. Timefold works with cheap functions and does many evaluations. Timefold does this via Constraint…
I thought "No Free Lunch Theorem" was a joke from its name (although I should know better since "Hairy Ball Theorem" exists). So if I understand correct, it states that all optimization algorithm must choose an order to…
By 1% of optimal, I was giving an example percentage to clarify there are solutions that exists, that are almost as good as optimal, that can be found in reasonable amount of time. There cannot be a guarantee to find a…
That depends; do you want the optimal solution? If so, I agree it is impossible for a fully general problem solver to find the optimal solution to a problem in a reasonable amount of time (unless P = NP, which is…
Some additional optimization resources (for metaheuristics, where you only have the objective/score function and no derivative): - "Essentials of Metaheuristics" by Sean Luke…
Games on old consoles such as Nintendo 64 and the Playstation One use a variety of tricks to be playable on limited hardware. For the specific example of Final Fantasy VII, there is one trick that allows you to skip…
Related: Archipelago (https://archipelago.gg/), a framework that randomizes multiple games, across multiple clients. For example, Player A is playing Mario 64, and Player B is playing Pokemon Red. Some items from Player…
CPython bytecode changes behaviour for no reason and very suddenly, so you will be vulnerable to changes in Python language versions. A few from the top of my head: - In Python 3.10, jumps changed from absolute indices…
The primary reason, in my opinion, is the vast majority of Python libraries lack type annotations (this includes the standard library). Without type annotations, there is very little for a non-JIT compiler to optimize,…
As someone who did a CPython Bytecode → Java bytecode translator (https://timefold.ai/blog/java-vs-python-speed), I strongly recommend against the CPython Bytecode → PySM Assembly step: - CPython Bytecode is far from…
JNI/the new Foreign FFI communicate with CPython via CPython's C API. The primary issue is getting the garbage collectors to work with each other. The Java solver works by repeatedly calling user defined functions when…
I had to deal with a lot of FFI to enable a Java Constraint Solver (Timefold) to call functions defined in CPython. In my experience, most of the performance problems from FFI come from using proxies to communicate…
I had the misfortune of translating CPython bytecode to Java bytecode, and I do not wish that experience on anyone: - CPython's bytecode is extremely unstable. Not only do new opcodes are added/removed each release, the…
John Walker built a virtual machine for the Babbage's instruction set, and it has a web emulator: https://fourmilab.ch/babbage/emulator.html. I don't think Ada program is available as an example though, so you'll need…
Great overview on the structure of the CPython's Virtual Machine (as well as an introduction to stack based virtual machines). I am unfortunately very familiar with CPython's bytecode [1], and do not recommend trying to…
Does constraint_factory.create_from_chain( ForEach(Shift) | Filter(lambda shift: shift.required_skill not in shift.employee.skills) | Penalize(HardSoftScore.ONE_HARD) | AsConstraint("Missing required skill") ) Feel more…
Let us know how we can improve! Feel free to start a discussion (https://github.com/TimefoldAI/timefold-solver/discussions) or submit an issue (https://github.com/TimefoldAI/timefold-solver-python/issues). We aim to…
Well, you still write code. The difference is the code is written either in ordinary Python or Java and not as mathematical equations. For example, to do the "Some employees are qualified to do either role, but others…