2017-01-26 3 views
0

문제점은 M 하위 문제입니다. 각 하위 문제에는 x (double array)와 각 반복 m에 대해 다른 값을 갖는 비용이 포함됩니다. 나는 모든 하위 문제들 중에서 비용을 최소화 한 x를 보여주고 싶다. 여기 내 수업입니다 :인덱스 C에서 서브리스트 값 표시

public class Subproblem 
{ 
    public double[,] x { get; set; } 
    public double ReducedCost { get; set; } 
} 

지금까지 나는 이미 최소 비용 절감 및 색인을 얻을 수 있습니다. 이제 해당 인덱스에 x 값 (double 배열)을 표시하려고합니다. 나는 다음과 같은 코드를했습니다 :

var sub = new List<Subproblem>(); 
for (int m = 0; m < M; ++m) 
{ 
Subproblem s = new Subproblem(); 
s.x = new double[DC1, DC1];  
s.ReducedCost = model.ObjVal; 
    for (int i = 0; i < DC1; ++i) 
    { 
     for (int j = 0; j < DC1; ++j) 
     { 
      s.x[i, j] = x[i, j].X; 
     } 
    } 
    sub.Add(s); 
} 
double minRC = sub.Min(a => a.ReducedCost); 
int minRCIndex = sub.FindIndex((i) => i.ReducedCost == minRC); 
Console.WriteLine(sub.x(minRCIndex)); 

마지막 줄 (Console.WriteLine(sub.x(minRCIndex));) 여전히 가지고 빨간색 밑줄, 나는 그것이

+1

Console.WriteLine (sub.x [minRCIndex]); – rraszewski

+0

@rraszewski,'sub'는'List'이고'x'를 포함하지 않습니다. – Andrew

+0

'sub'는'sub.x'가 이중 배열이기 때문에 m 번 – Eric

답변

1

그것은

var objWithMinReduceCost = sub[minRCIndex]; 
//Now you have the object of Subproblem derived from your logic. 
//You can access x property of it have further logic to process it. 
for (int i = 0; i < DC1; ++i) 
{ 
    for (int j = 0; j < DC1; ++j) 
    { 
     Console.WriteLine(objWithMinReduceCost.x[i, j]); 
    } 
} 
+0

에 대해 동일한 객체를 참조하는 목록 일뿐입니다. 'minRCIndex'의 요소는 다시 배열이됩니다. 그러므로이 진술은 가치를주지 않을 것입니다. 그럴 거니? –

+0

rraszewski는 이미 같은 대답을 덧붙였다. – tdog

+0

DC1의 가치가 될 수있는 것이 명확하지 않습니다. 따라서 최종 sub.x []에서 다음 색인으로 전달 된 값이 무엇인지 확실하지 않습니다. 따라서 저자에게 어떻게 접근 할 수 있는지에 대한 안내를하기 위해서 나는 0을 두 번째 색인으로 두었습니다. 또한 rraszewski의 대답은 이제 내 것과 다릅니다. –

2

당신이 만약해야 작성하는 방법을 모른다 최소 비용 절감 하위 문제를 얻으려는 것입니다.

Subproblem minimumReducedCostedSubproblem = sub[minRCIndex]; 

그리고 yo u는 다음과 같이 매트릭스를 인쇄 할 수 있습니다.

for (int i = 0; i < DC1; ++i) 
{ 
    for (int j = 0; j < DC1; ++j) 
    { 
     Console.Write(minimumReducedCostedSubproblem.x[i, j] + "\t"); 
    } 
    Console.Write("\n"); 
} 

약간 혼란스러워 보입니다. 동일한 문제가있는 sub 목록에 하위 문제를 M 번 푸시합니다. model.ObjVal은 첫 번째 for 루프를 따라 변경되지 않기 때문에. 거기에 뭔가 이상한 일이 있습니다.

당신이 double 배열을 취득에 관심이 있다면
+0

내 문제는 M 하위 문제입니다. 각 하위 문제는 x (double array)와 각 반복 m에 대해 다른 값을 갖는 감소 된 비용을 포함하는 목록입니다. 나는 모든 하위 문제들 중에서 비용을 최소화 한 x를 보여주고 싶다. 지금까지 나는 이미 그것의 최소 감소 된 비용과 지수를 발견 할 수있다. 이제 그 색인에 x를 표시하고 싶습니다. –

+0

어떻게'x '를 보여줄 계획입니까? 'x'는 행렬입니다. 여러분이 그것을 쓰기 위해 콘솔에 커스텀 작가가 필요합니다. 너가 원하는게 그거야? –

+0

네, 실제로 그렇습니다. 그러나 지금은 단지 그 가치를 보여주고 싶습니다. Chetan은 이미 내가 원하는 것을 알고있다. –

0

, 당신은 단지이 작업을 수행 할 수 있습니다 :

double[,] result = sub.First(i => i.ReducedCost == minRC).x; 

톨가가 언급 한 바와 같이, 모든 요소가 현재 코드 같은 ReducedCost이되지만

.

+0

나는 내 코드를 이미 수정했다. –