2017-11-27 4 views
-2

Ich versuche, ein Modell in minizinc zu machen, die in Arrays unten mit dem maxsum, 3 Zahlen in Folge findet:minizinc aufeinanderfolgende Zahlen in Array suchen

[2,3,4,**10,22,11**,17]). 
[1,2,3,4,**10,22,11**,11,10,24]). 
[2,3,4,5,10,23,**10,22,11**,17]). 

ich mein Modell ausgegeben werden soll, diese Zahlen, deren Indizes und ihre Summe.

Ich versuchte dies:.

array[int] of int : list1 = [2,3,4,10,22,11,17]; 
array[int] of int : list2 = [1,2,3,4,10,22,11,11,10,24]; 
array[int] of int : list3 = [2,3,4,5,10,23,10,22,11,17]; 

array[1..3] of var int: values; 
array[1..3] of var int: indices; 

constraint forall(i in 1..3, j in list1)(
        values[i]=list1[j] 
       ); 
constraint exists (i in 1..length(list1)-2)(
         exists(j in 1..length(list2)-2)(
         exists(k in 1..length(list3)-2) 
          (list1[i]=list2[j]/\list2[j]=list3[k] /\ 
          list1[i+1]=list2[j+1]/\list2[j+1]=list3[k+1]/\ 
          list1[i+2]=list2[j+2]/\list2[j+2]=list3[k+2] 
          /\values[1]=list1[i]/\values[2]=list1[i+1]/\values[3]=list1[i+2] 
          /\indices[1]=i/\indices[2]=j/\indices[3]=k 
       ))); 
var int: max_sum; 
constraint max_sum=sum(values); 
solve maximize max_sum; 

aber unerfüllbar :(

+3

Sie sollten klare Informationen darüber geben, was Sie erwarten und was Sie für diesen Moment erhalten. Bitte überlegen Sie, die Frage zu bearbeiten. –

+0

natürlich ... ich erhalte dies: WARNUNG: Modellinkonsistenz erkannt C:/Benutzer/ /Desktop/ /bebee.mzn: 8: im Aufruf "forall" in Array Verständnis Ausdruck mit i = 1 mit j = 3 C:/Benutzer/ /Desktop/ /bebee.mzn:9: binär '=' Operator Ausdruck bebee.mzn Lauf ===== ===== unerfüllbar Finished in 77msec Ich erwarte dies: Werte = [10, 22, 11]; Indizes = [4, 5, 7]; Summe = 43; ---------- – Kotsos

Antwort

0

Hier sind zwei Hinweise

Tipp 1: Der Fehler besagt, dass 8 etwas falsch an der Linie gibt es, wobei j = 3. Wenn Sie diese Einschränkung auskommentieren, gibt es keinen Syntaxfehler.Weil ich den Zweck dieser Einschränkung nicht verstehe, kann ich Ihnen dort nicht helfen.

Tipp 2: Auch wenn yo Wenn Sie diese Einschränkung auskommentieren (in Zeile 8), kann es - abhängig vom Solver - eine lange Zeit dauern, bis eine Lösung gefunden wird, da Sie die Entscheidungsvariablen values und indices auf var int gesetzt haben. Es ist viel besser, eine positive Domäne für diese beiden Entscheidungsvariablen anzugeben.

Verwandte Themen