インデックス付きの数値とそのバイナリ値を持つサブリストのリストがあります。たとえば:Cで番号のリストを作成する#
Variable Value
route.x[0,0] 0
route.x[0,1] 1
route.x[0,2] 0
route.x[0,3] 0
route.x[1,0] 0
route.x[1,1] 0
route.x[1,2] 0
route.x[1,3] 1
route.x[2,0] 0
route.x[2,1] 0
route.x[2,2] 0
route.x[2,3] 0
route.x[3,0] 0
route.x[3,1] 0
route.x[3,2] 1
route.x[3,3] 0
route.x[i,j]
の値が1
である場合には、順番にその番号を含む新しいリストを作ります。その例えば、新たなリストは次のようになります。
route = 0 1 3 2
はこれまでのところ、私はこのコードを作っています
//find optimal route
var route = new List<List<int>>();
for (int j = 0; j < C+1; ++j)
{
if (routeopt.x[0, j] != 1)
continue;
List<int> subroute = new List<int>();
subroute.Add(0);
subroute.Add(j);
route.Add(subroute);
}
このコードの結果はroute = 0 1
です。その後、このコードを使用して新しい番号(3
と2
)を追加します。
for (int i = 1; i < C+1; ++i)
{
for (int j = 1; j < C+1; j++)
{
if (routeopt.x[i, j] == 1)
{
List<int> targetlist = route.Single(r => r.Contains(i));
targetlist.Add(j);
}
}
}
このコードは、注文番号に値1のroute.x [i、j]がある場合にのみ機能します。しかし、それは(私は唯一の値1を持つ変数を表示)例えば、注文されていない場合:
Variable Value
route.x[0,4] 1
route.x[0,3] 1
route.x[4,1] 1
route.x[1,2] 1
それはroute = 0 3
とroute = 0 4 1 2
でなければなりません。しかし、Sequence contains no matching element
と表示されたのは、1
がroute = 0 3
またはroute = 0 4
に含まれていないためです。どのようにその問題を処理する?ありがとう