Über Optionstypen, die specification von Minizinc sagt (sec 6.6.3.):Was ist eine Instanz des Optionstyps beim Parsing?
Übersicht. Optionstypen, die mit dem Konstruktor opt definiert wurden, definieren Typen, die vorhanden sein können oder nicht. Sie ähneln vielleicht Haskell-Typen, die dem Typ einen neuen Wert
<>
hinzufügen.[...]
Initialisation. Eine opt-Typ-Variable muss nicht zur Instanzzeit initialisiert werden. Eine nicht initialisierte opt-type-Variable wird automatisch auf
<>
initialisiert.
würde Ich mag die folgende Einschränkung mit zwei opt
Typen analysieren und zu verarbeiten:
predicate alternative(var opt int: s0, var int: d0,
array[int] of var opt int: s,
array[int] of var int: d);
Aber ich bin nicht sicher, was soll ich als Werte für Argumente erwarten s0
und s
beim Parsen diese Einschränkung.
Kann ich das Vorhandensein des opt
Modifizierers einfach ignorieren und davon ausgehen, dass die Bedingung Signatur gleich der folgenden ist?
predicate alternative(var int: s0, var int: d0,
array[int] of var int: s,
array[int] of var int: d);
Wenn nicht, wie soll ich damit umgehen?
'var opt' kann ziemlich schwierig zu verwenden sein, und ich denke, es ist noch schlimmer zu analysieren und dann weiter zu behandeln. Vielleicht sollten Sie dies unter http://www.minizinc.org/forum.html fragen. Es ist ein bisschen näher an den MiniZinc-Entwicklern. (Implementieren Sie einen FlatZinc-Solver für OptiMatSAT? Ich hoffe, Sie stellen ihn öffentlich zur Verfügung.) – hakank
@hakank Ich werde an diesem Board versuchen, danke.OptiMathSAT verfügt bereits seit Version 1.4 über eine Schnittstelle für eine Teilmenge der FlatZinc-Sprache. Gegenwärtig erweitern wir diese Schnittstelle, um einige weitere globale Einschränkungen zu berücksichtigen, aus Leistungsgründen und zum Testen verschiedener Codierungen. –
Ah, das habe ich verpasst. Wird es so schnell wie möglich testen. :-) – hakank