2016-10-02 7 views
-5

私は10行10列の座席を持つオペラハウスを持っています(合計:100)。各座席には嗜好値Aijが割り当てられる。グループが同じ行に座席を持たない場合、嗜好値は半分になります。例:オペラハウスでの予約が5人で、2行のみが最上行に、3行が次行に対応できる場合、各席につき実際に半額になります。 'n'> 100席のn個の予約があります。顧客の嗜好を最大限に引き出す最良の方法は何ですか(n * Aij)。線形計画法で行うことができれば、方程式はどのように見えるのでしょうか。オペラハウスの座席割り当てを最適化するのにどのようなアルゴリズムが適していますか?

+2

恐ろしい質問(SOのルールに従う)。あなたは全く情報を提供しませんでした。私たちは、制約と目的(重要なもの)については何も知らない。事実にもかかわらず、この質問は、SOに尋ねられたbeeingには適さない:混合整数プログラミング、制約プログラミング、およびこれらのハイブリッドが一般に使用される。 – sascha

+0

...本を読んでください操作研究または類似の?あなたの答えは*広い*です。 – Bakuriu

+0

こんにちは、ありがとう。この問題に関する詳細を追加しました。 –

答えて

2

これはMIPとしてモデル化するのは簡単ではないと思います。

メインのバイナリ変数x(i,j,g,r)を使って試しました。ここで、(i,j)は、グループgに割り当てられた座席の行と列です。グループrは、グループが同じ行に座っているかどうかを示すために{singlerow,multiplerows}です。

これが特に優れた処方であるかどうかは不明ですが、うまくいくようです。以下私が使用式である:

enter image description here

Iはそれぞれのサイズを有するグループgの数があると仮定する。グループは必要なすべての座席を取得するか、座席を取得していません。 私は、制約プログラミング手法がより簡単になると考えています。

結論:これはMIP製剤を使用して行うことができますが、やや面倒です。

+0

あなたのご意見ありがとうございます。上の方程式で「カード(i)」とは何を指していますか?これらの制約を解くためにオンラインソルバーを使い試しましたか?もしそうなら、どちらを使いましたか教えてください。 –

+0

'card(i)'は、集合 'i'の要素数(基数)、つまり行数を示します。もちろん、私はそれを試しましたが、オンラインツールを使用していませんでした。 –