Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 10 additions & 2 deletions src/main/java/edu/kit/provideq/toolbox/ProblemSolverInfo.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
package edu.kit.provideq.toolbox;

public record ProblemSolverInfo(String id, String name, String description) {
import edu.kit.provideq.toolbox.meta.SolverCharacteristic;
import java.util.List;

}
public record ProblemSolverInfo(
String id,
String name,
String description,
List<SolverCharacteristic> characteristics
) {

}
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ private Mono<ServerResponse> handleSolversRouteForManager(ProblemManager<?, ?> m
private static List<ProblemSolverInfo> getAllSolverInfos(ProblemManager<?, ?> manager) {
return manager.getSolvers().stream()
.map(solver -> new ProblemSolverInfo(solver.getId(), solver.getName(),
solver.getDescription()))
solver.getDescription(), solver.getCharacteristics()))
.toList();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import edu.kit.provideq.toolbox.Solution;
import edu.kit.provideq.toolbox.circuit.processing.solvers.executor.ExecutionResult;
import edu.kit.provideq.toolbox.circuit.processing.solvers.executor.ExecutorConfiguration;
import edu.kit.provideq.toolbox.meta.SolverCharacteristic;
import edu.kit.provideq.toolbox.meta.SolvingProperties;
import edu.kit.provideq.toolbox.meta.SubRoutineDefinition;
import edu.kit.provideq.toolbox.meta.SubRoutineResolver;
Expand All @@ -29,6 +30,11 @@ public String getDescription() {
return "Move QASM input to the executors";
}

@Override
public List<SolverCharacteristic> getCharacteristics() {
return List.of(SolverCharacteristic.REFORMULATION);
}

@Override
public List<SubRoutineDefinition<?, ?>> getSubRoutines() {
return List.of(EXECUTOR_SUBROUTINE);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import edu.kit.provideq.toolbox.Solution;
import edu.kit.provideq.toolbox.circuit.processing.solvers.mitigation.ErrorMitigationConfiguration;
import edu.kit.provideq.toolbox.meta.SolverCharacteristic;
import edu.kit.provideq.toolbox.meta.SolvingProperties;
import edu.kit.provideq.toolbox.meta.SubRoutineDefinition;
import edu.kit.provideq.toolbox.meta.SubRoutineResolver;
Expand All @@ -28,6 +29,11 @@ public String getDescription() {
return "Move QASM input to the error mitigators";
}

@Override
public List<SolverCharacteristic> getCharacteristics() {
return List.of(SolverCharacteristic.REFORMULATION);
}

@Override
public List<SubRoutineDefinition<?, ?>> getSubRoutines() {
return List.of(MITIGATOR_SUBROUTINE);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import edu.kit.provideq.toolbox.Solution;
import edu.kit.provideq.toolbox.circuit.processing.solvers.optimization.OptimizationConfiguration;
import edu.kit.provideq.toolbox.meta.SolverCharacteristic;
import edu.kit.provideq.toolbox.meta.SolvingProperties;
import edu.kit.provideq.toolbox.meta.SubRoutineDefinition;
import edu.kit.provideq.toolbox.meta.SubRoutineResolver;
Expand All @@ -28,6 +29,11 @@ public String getDescription() {
return "Move QASM input to the optimizers";
}

@Override
public List<SolverCharacteristic> getCharacteristics() {
return List.of(SolverCharacteristic.REFORMULATION);
}

@Override
public List<SubRoutineDefinition<?, ?>> getSubRoutines() {
return List.of(OPTIMIZER_SUBROUTINE);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import edu.kit.provideq.toolbox.circuit.processing.solvers.CircuitProcessingSolver;
import edu.kit.provideq.toolbox.meta.ProblemSolver;
import edu.kit.provideq.toolbox.meta.ProblemType;
import edu.kit.provideq.toolbox.meta.SolverCharacteristic;
import edu.kit.provideq.toolbox.meta.SolvingProperties;
import edu.kit.provideq.toolbox.meta.SubRoutineDefinition;
import edu.kit.provideq.toolbox.meta.SubRoutineResolver;
Expand Down Expand Up @@ -57,6 +58,11 @@ public String getDescription() {
+ "Tket compilation passes (e.g. removing redundancies).";
}

@Override
public List<SolverCharacteristic> getCharacteristics() {
return List.of(SolverCharacteristic.REFORMULATION);
}

@Override
public List<SubRoutineDefinition<?, ?>> getSubRoutines() {
return List.of(CircuitProcessingSolver.CIRCUIT_PROCESSING_SUBROUTINE);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import edu.kit.provideq.toolbox.format.cnf.dimacs.Variable;
import edu.kit.provideq.toolbox.meta.ProblemSolver;
import edu.kit.provideq.toolbox.meta.ProblemType;
import edu.kit.provideq.toolbox.meta.SolverCharacteristic;
import edu.kit.provideq.toolbox.meta.SolvingProperties;
import edu.kit.provideq.toolbox.meta.SubRoutineDefinition;
import edu.kit.provideq.toolbox.meta.SubRoutineResolver;
Expand Down Expand Up @@ -45,6 +46,11 @@ public String getDescription() {
+ " It uses a SAT solver to solve each formula per feature.";
}

@Override
public List<SolverCharacteristic> getCharacteristics() {
return List.of(SolverCharacteristic.DECOMPOSITION);
}

@Override
public List<SubRoutineDefinition<?, ?>> getSubRoutines() {
return List.of(SAT_SUBROUTINE);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import edu.kit.provideq.toolbox.format.cnf.dimacs.DimacsCnfSolution;
import edu.kit.provideq.toolbox.meta.ProblemSolver;
import edu.kit.provideq.toolbox.meta.ProblemType;
import edu.kit.provideq.toolbox.meta.SolverCharacteristic;
import edu.kit.provideq.toolbox.meta.SolvingProperties;
import edu.kit.provideq.toolbox.meta.SubRoutineDefinition;
import edu.kit.provideq.toolbox.meta.SubRoutineResolver;
Expand Down Expand Up @@ -37,6 +38,11 @@ public String getName() {
return List.of(SAT_SUBROUTINE);
}

@Override
public List<SolverCharacteristic> getCharacteristics() {
return List.of(SolverCharacteristic.REFORMULATION);
}

@Override
public String getDescription() {
return "This solver builds SAT formulae to determine void features in a feature model. "
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,15 @@ default String getId() {
*/
String getDescription();

/**
* Return the list of characteristics for the solver.
*
* @return list of characteristics
*/
default List<SolverCharacteristic> getCharacteristics() {
return List.of(SolverCharacteristic.SOLVE);
}

/**
* Returns the sub problems used to solver this problem.
*
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package edu.kit.provideq.toolbox.meta;

public enum SolverCharacteristic {
SOLVE,
REFORMULATION,
DECOMPOSITION
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import edu.kit.provideq.toolbox.exception.ConversionException;
import edu.kit.provideq.toolbox.format.cnf.dimacs.DimacsCnf;
import edu.kit.provideq.toolbox.format.cnf.dimacs.DimacsCnfSolution;
import edu.kit.provideq.toolbox.meta.SolverCharacteristic;
import edu.kit.provideq.toolbox.meta.SolvingProperties;
import edu.kit.provideq.toolbox.meta.SubRoutineDefinition;
import edu.kit.provideq.toolbox.meta.SubRoutineResolver;
Expand Down Expand Up @@ -57,6 +58,11 @@ public String getDescription() {
+ "from the SharpSAT solver.";
}

@Override
public List<SolverCharacteristic> getCharacteristics() {
return List.of(SolverCharacteristic.SOLVE);
}

@Override
public List<SubRoutineDefinition<?, ?>> getSubRoutines() {
return List.of(SHARPSAT_SUBROUTINE);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import edu.kit.provideq.toolbox.ResourceProvider;
import edu.kit.provideq.toolbox.Solution;
import edu.kit.provideq.toolbox.meta.SolverCharacteristic;
import edu.kit.provideq.toolbox.meta.SolvingProperties;
import edu.kit.provideq.toolbox.meta.SubRoutineDefinition;
import edu.kit.provideq.toolbox.meta.SubRoutineResolver;
Expand Down Expand Up @@ -60,6 +61,11 @@ public String getDescription() {
+ "with a QUBO solver.";
}

@Override
public List<SolverCharacteristic> getCharacteristics() {
return List.of(SolverCharacteristic.REFORMULATION);
}

@Override
public List<SubRoutineDefinition<?, ?>> getSubRoutines() {
return List.of(QUBO_SUBROUTINE);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package edu.kit.provideq.toolbox.unsplittablemcf.solvers;

import edu.kit.provideq.toolbox.Solution;
import edu.kit.provideq.toolbox.meta.SolverCharacteristic;
import edu.kit.provideq.toolbox.meta.SolvingProperties;
import edu.kit.provideq.toolbox.meta.SubRoutineDefinition;
import edu.kit.provideq.toolbox.meta.SubRoutineResolver;
Expand Down Expand Up @@ -57,6 +58,11 @@ public String getDescription() {
+ "QUBO problem and solving with a QUBO solver.";
}

@Override
public List<SolverCharacteristic> getCharacteristics() {
return List.of(SolverCharacteristic.REFORMULATION);
}

@Override
public List<SubRoutineDefinition<?, ?>> getSubRoutines() {
return List.of(QUBO_SUBROUTINE);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@


import edu.kit.provideq.toolbox.Solution;
import edu.kit.provideq.toolbox.meta.SolverCharacteristic;
import edu.kit.provideq.toolbox.meta.SolvingProperties;
import edu.kit.provideq.toolbox.meta.SubRoutineDefinition;
import edu.kit.provideq.toolbox.meta.SubRoutineResolver;
Expand Down Expand Up @@ -50,6 +51,11 @@ public String getDescription() {
return "Clusters a VRP problem into a set of VRP problems using k-means clustering.";
}

@Override
public List<SolverCharacteristic> getCharacteristics() {
return List.of(SolverCharacteristic.DECOMPOSITION);
}

@Override
public List<SubRoutineDefinition<?, ?>> getSubRoutines() {
return List.of(VRP_SUBROUTINE);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package edu.kit.provideq.toolbox.vrp.clusterer;

import edu.kit.provideq.toolbox.Solution;
import edu.kit.provideq.toolbox.meta.SolverCharacteristic;
import edu.kit.provideq.toolbox.meta.SolvingProperties;
import edu.kit.provideq.toolbox.meta.SubRoutineDefinition;
import edu.kit.provideq.toolbox.meta.SubRoutineResolver;
Expand Down Expand Up @@ -32,6 +33,11 @@ public TwoPhaseClusterer(
super(binaryPath, context);
}

@Override
public List<SolverCharacteristic> getCharacteristics() {
return List.of(SolverCharacteristic.DECOMPOSITION);
}

@Override
public List<SubRoutineDefinition<?, ?>> getSubRoutines() {
return List.of(TSP_SUBROUTINE);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package edu.kit.provideq.toolbox.vrp.solvers;

import edu.kit.provideq.toolbox.Solution;
import edu.kit.provideq.toolbox.meta.SolverCharacteristic;
import edu.kit.provideq.toolbox.meta.SolvingProperties;
import edu.kit.provideq.toolbox.meta.SubRoutineDefinition;
import edu.kit.provideq.toolbox.meta.SubRoutineResolver;
Expand Down Expand Up @@ -29,6 +30,11 @@ public String getDescription() {
+ "first.";
}

@Override
public List<SolverCharacteristic> getCharacteristics() {
return List.of(SolverCharacteristic.REFORMULATION);
}

@Override
public List<SubRoutineDefinition<?, ?>> getSubRoutines() {
return List.of(CLUSTER_SUBROUTINE);
Expand Down
Loading