2016-03-26 18 views
2

minizinc'i öğrenmeye çalışın fakat örnekler geçtikten sonra, birden fazla çıktı elde etmek istiyorsam veya bir "minizincin doğal olması için daha doğal bir yol varsa, bir prosedür dili yazmak zorunda olduğumu doğrulayabilir miyim?" o.minizinc altında çoklu çıktı

Örneğin

, ben olmalı tüm farklı rakam 3 cevapları kadar ekleyin istiyorum varsayalım 0 + 3 1 + 2 2 + 1 3 + 0 ...

burada

Benim mininzinc:

% how to generate more than one result meeting the constraints 

int: n=3; 

var 0..9: a; 
var 0..9: b; 

include "alldifferent.mzn"; 
constraint all_different([a, b]); 
constraint a + b = n; 

solve satisfy; 

output [ 
"a + b = n \t\n", 
show(a), " + ", 
show(b), " = ", 
show(n)]; 

sadece 3 + 0 üretir. Diğer cevaplara nasıl ulaşılır? Önceden herhangi bir tavsiye için teşekkürler.

minizinc 1.6 için bir gönderiye baktım ve çıktı çıktısının tüm çıktıyı üreteceği söylenmiş gibi görünüyordu (Easy way to print full solution (all decision variables) in minizinc). İşe yaramıyor. Sadece bir tane çıktı.

cevap

2

Her şeyden önce, tüm çözümler değil, tüm değişkenler ve bunların değerleri bir çözüm için yazdırılır.

Tüm çözümleri almak için -a seçeneğini kullanın. Tüm seçenekleri görmek için mzn-gecode --help. Varsayılan tüm çözümler yazdırmak gerektiğini konusunda karışıklığa hiçbir cevap beri

a + b = n 
3 + 0 = 3 
---------- 
a + b = n 
0 + 3 = 3 
---------- 
a + b = n 
2 + 1 = 3 
---------- 
a + b = n 
1 + 2 = 3 
---------- 
========== 
-1

Yapılandırmada, öntanımlı olarak ilk çözümü yazdırmak için varsayılanı değiştirme seçeneği vardır. Bunu kullanıcı tanımlı davranışa değiştirin: tüm çözümleri yazdırın ... Ayrıca, btw de çıkış ifadesine sahip olabilirsiniz.

+0

Aşağı oyu: verir senin durumunda mzn-gecode -a test.mzn yılında. Gerçek bir cevap olmalı ve dokümantasyonu nasıl bulacağınızı bile söylemediğiniz "belgelere bakın". – Kobbe

+0

Anlamıyor. Varsayılan 1 çözümdür. Ancak normalden farklı olarak yapılandırma bir sekmede bulunur. Parti için biri bana söyledi. –