SatSolverA.ts 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import { JavaObject, cast_java_lang_Object } from '../../../java/lang/JavaObject';
  2. export abstract class SatSolverA extends JavaObject {
  3. public static readonly RESULT_UNSATISFIABLE : number = -1;
  4. public static readonly RESULT_UNKNOWN : number = 0;
  5. public static readonly RESULT_SATISFIABLE : number = 1;
  6. public constructor() {
  7. super();
  8. }
  9. /**
  10. * Erzeugte eine neue Variable. Den zurückgegebenen Integer-Wert darf man nun in Klauseln (auch negiert)
  11. * benutzen. Eine Variable hat niemals den Wert 0, da dieser Wert nicht negiert werden kann.
  12. *
  13. * @return Die Nummer der neuen Variablen.
  14. */
  15. public abstract createNewVar() : number;
  16. /**
  17. * Hinzufügen einer Klausel. Eine Klausel ist eine Menge von Variablen, die mit einem logischen ODER verknüpft
  18. * sind. Die Variablen dürfen negiert sein.<br>
  19. * {@code Beispiel: [-3, 8, 2] bedeutet (NOT x3) OR x8 OR x2}<br>
  20. * Die Menge aller Klauseln sind mit einem AND verknüpft.
  21. *
  22. * @param pVars Die Variablen (auch negiert) der Klausel mit den zuvor generierten Variablen. Ist das Array
  23. * leer, wird es ignoriert.
  24. */
  25. public abstract addClause(pVars : Array<number>) : void;
  26. /**
  27. * Gibt den Wert TRUE oder FALSE der angefragten Variable zurück. Das Verhalten dieser Methode ergibt nur dann
  28. * Sinn, wenn der Solver mit SATISFIABLE nach Aufruf der Methode {@link #solve } geantwortet hat.
  29. *
  30. * @param pVar Die angefragte Variable (kann auch negativ sein, aber nicht 0).
  31. * @return TRUE, falls die angefragte Variable nach der Berechnnung TRUE ist.
  32. */
  33. public abstract isVarTrue(pVar : number) : boolean;
  34. /**
  35. * Startet die Berechnung für maximal {@code maxTimeMillis} Millisekunden und liefert einen der drei möglichen
  36. * Werte {@link #RESULT_SATISFIABLE}, {@link #RESULT_UNKNOWN} oder {@link #RESULT_UNSATISFIABLE}.
  37. *
  38. * @param maxTimeMillis Die maximale Berechnungszeit (in Millisekunden).
  39. *
  40. * @return Liefert einen der drei möglichen Werte {@link #RESULT_SATISFIABLE}, {@link #RESULT_UNKNOWN} oder
  41. * {@link #RESULT_UNSATISFIABLE}.
  42. */
  43. public abstract solve(maxTimeMillis : number) : number;
  44. /**
  45. * Liefert die interne Anzahl an erzeugten Variablen.
  46. *
  47. * @return Die interne Anzahl an erzeugten Variablen.
  48. */
  49. public abstract getVarCount() : number;
  50. /**
  51. * Liefert die interne Anzahl an erzeugten Klauseln.
  52. *
  53. * @return Die interne Anzahl an erzeugten Klauseln.
  54. */
  55. public abstract getClauseCount() : number;
  56. isTranspiledInstanceOf(name : string): boolean {
  57. return ['de.nrw.schule.svws.core.kursblockung.satsolver.SatSolverA'].includes(name);
  58. }
  59. }
  60. export function cast_de_nrw_schule_svws_core_kursblockung_satsolver_SatSolverA(obj : unknown) : SatSolverA {
  61. return obj as SatSolverA;
  62. }