Butuh Bantuan Dalam Memecahkan Masalah Kendala

Saya ingin menyelesaikan masalah berikut menggunakan kendala tetapi sebenarnya saya tidak tahu harus mulai dari mana, jadi saya memutuskan untuk mempostingnya di sini untuk mendapatkan bantuan.

*** Fitting squares ***

    Given the set of black squares of Figure 1 (a 2x2, 3x3, 4x4 and a 5x5 square),
    fit them all into the white rectangle of Figure 1 (a 7x9 rectangle), and this in
    such a way that there is no overlap between the squares.
    Note that the black squares can only be put on integer coordinates. 

    Formulate the problem above as a constraint problem. Come up with a useful
    representation of the problem in terms of the constraint processing tool.
   Provide an explanation of indices, variables and domains. Furthermore, 
   provide for every introduced constraint, 
    the meaning of the constraint in natural language.

Tolong ini bukan pekerjaan rumah, karena saya sendiri telah memecahkan masalah penjumlahan kotak dan lingkaran. tapi yang ini saya tidak tahu bagaimana dan harus mulai dari mana. Saya mempelajari kendala ini sebagai pemula dan tidak tahu bagaimana menyelesaikannya sama sekali dan membutuhkan bantuan. Saya seharusnya menggunakan sintaks berikut untuk mendefinisikan variabel dan batasan:

* VARIABEL*

1)

Nama harus dimulai dengan huruf besar [A-Z], dan hanya menggunakan [A-Za-z0-9_]. Contoh: X atau MyVar_1.

2)

Domain adalah himpunan semua bilangan bulat dalam rentang [dari,...,sampai]. Pastikan dari ≤ hingga.

3)

Indeks mengacu pada indeks (tunggal!) dari variabel yang diindeks. Misalnya, jika Anda memasukkan rentang indeks dari 1 hingga 8 untuk variabel "X", maka masing-masing "X(1)", "X(2)", ..., "X(8)" adalah variabel normal dengan domain yang sama. Tentukan rentang indeks sedemikian rupa sehingga dari ≤ hingga. Jika Anda mengosongkan kolom "Indeks", variabel Anda dianggap sebagai variabel yang tidak diindeks. (Catatan: menggunakan from = to dimungkinkan, meskipun tidak masuk akal: Anda bisa menggunakan variabel yang tidak diindeks.) Jangan gunakan nama yang sama dua kali, juga jangan gunakan nama yang sama untuk normal dan sekali untuk variabel normal. variabel yang diindeks! Juga jangan menggunakan kembali bagian dari nama variabel, mis. jika Anda sudah memiliki MyVar_1, jangan gunakan Var juga.

KENDALA

Anda dapat memasukkan batasan aritmatika, jika diperlukan dengan spesifikasi rentang untuk indeks yang telah digunakan. Batasan aritmatika berbentuk Expr ∼ Expr, dengan Expr adalah ekspresi yang menggunakan bilangan bulat, variabel yang dideklarasikan, dan beberapa aritmatika, dan ∼ adalah operator relasional.

1)

Saat menggunakan variabel yang diindeks, indeks harus diberikan

  • dalam format MyVar(index), yaitu menggunakan "(" dan ")" tepat di belakang nama variabel, dan tanpa spasi di antaranya.
  • Perhatikan bahwa indeks harus berupa variabel, jadi sesuatu seperti MyVar(37) tidak diperbolehkan. Tulis MyVar(i) sebagai gantinya, dan masukkan rentang i=37.
  • Selain itu, indeks harus muncul di bidang "rentang". Petunjuk: jika batasan Anda harus berlaku untuk seluruh rentang indeks, mis. i=1..10, lalu masukkan saja rentang yang terpenuhi secara sepele seperti i>0.
  • Nama indeks dapat muncul sebagaimana adanya dalam batasan, yaitu bukan sebagai indeks.
  • format MyVar(index+x) atau MyVar(index-x) juga diperbolehkan, dengan x adalah bilangan bulat. Jangan gunakan spasi sebelum atau sesudah '+' atau '-'! 2)

Aritmatika menggunakan operator '+', '-', '*', '/', 'mod', dimana 'X/Y' adalah hasil bagi dari X dan Y (dibulatkan ke bawah). Juga 'min(X,Y)', 'max(X,Y)', 'abs(X)' diperbolehkan.

3) Operator relasional yang tersedia adalah '=', '\=', '‹', '>', '=‹', '>=', dengan arti yang jelas.

4) Gunakan tanda kurung bulat untuk memperjelas! Contoh: X(i) + Y(j) ‹ 12 atau min(X(i),X(j)) \= Z atau X(i) * i = 20.

Ekspresi boolean juga dapat digunakan. Kata penghubung boolean yang diperbolehkan adalah '‹=>', '=>', '/\' dan '\/', masing-masing untuk kesetaraan, implikasi, konjungsi, dan disjungsi.

Rentang adalah ekspresi yang berisi setiap indeks yang digunakan dalam batasan. Contoh: i ‹ j atau i = j atau (i = j /\ k \= l). Ekspresi rentang tidak boleh berisi '‹=>', '=>', atau '\/'. Catatan: rentang adalah ekspresi logis (dikuantifikasi secara implisit secara universal), bukan ekspresi himpunan seperti i=1..10!

Contoh berikut menggunakan sintaks di atas:

You can solve, e.g., some linear integer equations using normal variables only:

Name: X, domain: 1..10000
Name: Y, domain: 1..10000
Name: Z, domain: 1..1000000
Constraint: 29*X + 43*Y = Z
Constraint: X * Y = Z

Another example is the N-queens problem which uses index variables:

Name: Q(i), i=1..4, domain: 1..4
Constraint: Q(i) \= Q(j), range: i < j
Constraint: abs(Q(i) - Q(j)) \= j - i, range: i < j

Terima kasih atas bantuan Anda.


person Kap    schedule 15.05.2011    source sumber


Jawaban (1)


Misalkan persegi ii (i=2, 3, 4, atau 5) diletakkan sedemikian rupa sehingga sudut kiri bawahnya berada di (X(i), Y(i)). Jadi persegi menempati daerah dari (X(i),Y(i)) di kiri bawah hingga (X(i)+i,Y(i)+i)) di kanan atas. Sekarang Anda ingin mengatakan bahwa persegi jj tidak tumpang tindih dengan persegi ini. Hal ini terjadi hanya jika letaknya seluruhnya di sebelah kanan, seluruhnya di kiri, seluruhnya di atas, atau seluruhnya di bawah persegi tersebut. Dengan demikian:

Name X(i), i=2..5, domain: 1..7
Name Y(i), i=2..5, domain: 1..9
Constraint: X(i)+i=<X(j) \/ X(j)+j=<X(i) \/ Y(i)+i=<Y(j) \/ Y(j)+j=<Y(i), range: i<j
person ShreevatsaR    schedule 15.05.2011
comment
Terima kasih banyak atas jawaban Anda - person Kap; 15.05.2011