0

IBM CPLEX で混合整数モデルを作成しようとしていますが、問題があります。問題は次のとおりです。

学生が受講できるさまざまなコースがいくつかあり、学生がコースから得られる効用は、学生とコースの両方に依存します。難しい部分は次のとおりです。一部のコースの効用は、同じ学生がまとめて履修した場合、個々の効用の合計と異なる場合があります。この共同効用がゼロの場合、個々の効用を考慮する必要があります。この時点で私がやろうとしているのは、モデルがその 2 つのコースの個別の値ではなく、学生が取得した場合に共同の効用値を取るようにする条件を作成することですが、うまくいきませんでした。非線形性なし。

ご協力いただきありがとうございます。

4

1 に答える 1

1

まず第一に、あなたの質問には非常に重要な情報、つまり目的が欠けています。

目的は、学生がコースを受講することによって得られる総効用が最大になるように学生をコースに割り当てることだと思います。この場合、任意のコースを受講することによって任意の学生が得ることができるすべての効用が知られています。あなたの質問から、共同効用も知られていることも理解しています。したがって、損失という名前の新しい「パラメーター」を定義して、損失(k,l)が、学生がコースklを同時に受講した場合の「失われた効用」の量を意味するようにすることができます。これらの値は、与えられたデータを使用して簡単に計算できます。次に、次の方法で問題を解決できます。

  • w (i,k)を、コースkを受講することによって学生iが得る効用の量を決定するパラメーターとします

  • x (i,k)を、生徒iがコースkを受講するかどうかを決定する整数バイナリ変数とします。

  • u (i,k)を、学生がコースを受講することで得られる実際の効用を決定する変数とします。

目的関数:

  • すべての学生とコースのsumof(u(i,k))を最大化します。

条件:

  • x(i,k) * w(i,k) >= u(i,k) (すべての学生とコース)

    これにより、コース k の学生 i の最大効用が、想定された (与えられた、可能な最大の) 効用を超えることができないことが保証されます。これにより、 x(i,k)がゼロのときにu(i,k)がゼロに設定されることも保証されます。

  • x(i,k) w(i,k) + x(i,l) w(i,l) ) >= u(i,k) + u(i,l) - すべての損失(k,l) 「コースペア」と全学生

    これにより、学生が 2 つのコースを同時に受講することで得られる効用の合計が、結合効用を超えることができないことが保証されます。

于 2016-02-17T12:07:21.110 に答える