Skip to content

feat: no additional variables during constraint construction #131

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jan 22, 2025
Merged

feat: no additional variables during constraint construction #131

merged 1 commit into from
Jan 22, 2025

Conversation

RobbinBaauw
Copy link
Contributor

There are three spots in the flatzinc parser & constraint constructors that I believe to contain unnecessary variable creation:

  • create_domains for BooleanLessThanOrEqual and BooleanEqual
  • compile_bool2int

It seems like we can directly used the parsed literals instead of creating a new variable and a linking clause. It only requires access to the underlying integer_variable of the literal, but I don't see that as a problem. Is there any reason for doing it this way, or is it because of the legacy structure?

@ImkoMarijnissen ImkoMarijnissen merged commit e80e73d into ConSol-Lab:develop Jan 22, 2025
4 checks passed
@RobbinBaauw RobbinBaauw deleted the feat/no-additional-variables branch January 27, 2025 08:52
maartenflippo pushed a commit that referenced this pull request Apr 11, 2025
There are three spots in the flatzinc parser & constraint constructors
that I believe to contain unnecessary variable creation:
- `create_domains` for `BooleanLessThanOrEqual`  and `BooleanEqual`
- `compile_bool2int`

It seems like we can directly used the parsed literals instead of
creating a new variable and a linking clause. It only requires access to
the underlying `integer_variable` of the literal, but I don't see that
as a problem. Is there any reason for doing it this way, or is it
because of the legacy structure?
maartenflippo pushed a commit that referenced this pull request Apr 11, 2025
There are three spots in the flatzinc parser & constraint constructors
that I believe to contain unnecessary variable creation:
- `create_domains` for `BooleanLessThanOrEqual`  and `BooleanEqual`
- `compile_bool2int`

It seems like we can directly used the parsed literals instead of
creating a new variable and a linking clause. It only requires access to
the underlying `integer_variable` of the literal, but I don't see that
as a problem. Is there any reason for doing it this way, or is it
because of the legacy structure?
ImkoMarijnissen added a commit that referenced this pull request Apr 11, 2025
🤖 I have created a release *beep* *boop*
---


##
[0.2.0](pumpkin-solver-v0.1.4...pumpkin-solver-v0.2.0)
(2025-04-11)


### Features

* Add logging for branchers
([#135](#135))
([d8814f1](d8814f1))
* Add method for retrieving relevant brancher events
([#138](#138))
([8253580](8253580))
* Adding lower-bounding search to the solver
([#132](#132))
([57bde78](57bde78))
* Adding random variable selector + sparse_set fixes
([#139](#139))
([1c4b85f](1c4b85f))
* Debug clone does not synchronise at level 0 + random splitter edge
cases ([#146](#146))
([bba1abb](bba1abb))
* Enable proof logging in appropriate test cases
([#154](#154))
([914f1bc](914f1bc))
* Expose the optimisation API in the python wrapper
([#148](#148))
([ab9a463](ab9a463))
* Flatzinc parse boolean & negative int arrays as well
([#142](#142))
([68aef75](68aef75))
* Improve element propagator
([#140](#140))
([b9bcfd3](b9bcfd3))
* Lazy explanation context
([#123](#123))
([0781357](0781357))
* No additional variables during constraint construction
([#131](#131))
([19dd45b](19dd45b))
* Nemove explicit literals
([#115](#115))
([ab74e20](ab74e20))
* Stateful integer
([#125](#125))
([eb01ed3](eb01ed3))


### Bug Fixes

* Addressing clippy warnings
([#143](#143))
([20c76bb](20c76bb))
* Allow reification of lazy reasons
([#152](#152))
([c7418ec](c7418ec))
* Also log the inference that led to an empty domain
([#165](#165))
([7799119](7799119))
* Alternating brancher did not call the methods correctly
([#128](#128))
([6019d86](6019d86))
* Disjunctive scheduling example had incorrect negation constraint
([#114](#114))
([fd007a0](fd007a0))
* Don't debug propagate deleted nogoods
([#147](#147))
([e3a6527](e3a6527))
* Explain root-level assignments in the proof log during conflict
analysis ([#163](#163))
([c877b06](c877b06))
* Fixing erronous conflict check when using incrementality
([#137](#137))
([07c253f](07c253f))
* Give reason to root-level propagation in nogood propagator
([#124](#124))
([14868d5](14868d5))
* Identify more places where root-level facts need to be logged to the
proof ([#153](#153))
([3ac5019](3ac5019))
* Issue with integer multiplication + correct path in msc file
([#117](#117))
([ce25710](ce25710))
* Post process new domain
([#129](#129))
([26a3b46](26a3b46))
* Print statistics at the end of solving process + make pumpkin-solver
default bin ([#162](#162))
([7d30ac8](7d30ac8))
* Remove paste dependency
([#159](#159))
([ea53fed](ea53fed))
* Root level assignments are properly explained in the proof when
logging inferences
([#158](#158))
([857f84c](857f84c)),
closes [#118](#118)
[#119](#119)
[#156](#156)

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

---------

Co-authored-by: ImkoMarijnissen <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants