Add simple QLearning solver support

Still experimental, it covers very small subset of action domains (just removal from target).

Added a pending test that currently fails
This commit is contained in:
Ettore Di Giacinto
2020-02-10 17:16:35 +01:00
parent 33b442a832
commit 6d450d3af0
5 changed files with 396 additions and 30 deletions

View File

@@ -35,6 +35,8 @@ type PackageSolver interface {
Upgrade() ([]pkg.Package, PackagesAssertions, error)
SetResolver(PackageResolver)
Solve() (PackagesAssertions, error)
}
// Solver is the default solver for luet
@@ -230,6 +232,7 @@ func (s *Solver) Upgrade() ([]pkg.Package, PackagesAssertions, error) {
}
s2 := NewSolver(installedcopy, s.DefinitionDatabase, pkg.NewInMemoryDatabase(false))
s2.SetResolver(s.Resolver)
// Then try to uninstall the versions in the system, and store that tree
for _, p := range toUninstall {
r, err := s.Uninstall(p)
@@ -381,7 +384,7 @@ func (s *Solver) Solve() (PackagesAssertions, error) {
model, _, err = s.solve(f)
if err != nil && s.Resolver != nil {
model, err = s.Resolver.Solve(f, s)
return s.Resolver.Solve(f, s)
}
if err != nil {