나는 LP 반복 반올림 콘서트를 사용하여 C++. 내 ILP 및 LP 코딩이 제대로 작동합니다. 그러나 내가 LP를 반복 할 때 iterativly 나는 infeasible soulution을 얻을. 모든 반복에서 나는 결정 변수 x의 최대 값을 0-1 사이의 부동 소수점 수로 찾고 (실제로 나는 그것을 새로운 제약으로 더하고있다.) 1로 만든다. 그러나 때로는 내가 실제로 불가능한 실행 불가능한 솔루션을 얻습니다. 오류는 다음과 같습니다 : 실행 불가능한 표시기 제한 presolve 시간 : 3.53 초. 오류 : cplex 오류 1217 : 해결 방법이 없습니다.LP 반복적 인 반올림 콘서트 C++ 사용
그래프에서 작업 중이며 가장 짧은 경로를 찾으려고합니다. 내 ILP가 경로를 올바르게 찾습니다. 그러나 큰 그래프에 대한 LP 솔루션이 필요합니다. 그 목적을 위해 LP 수식을 썼습니다. 결과로 플로트 번호를 얻었습니다. 여기서 반복적으로 한 모서리를 1로 반올림합니다. 마지막으로 나는 경로를 얻으려고합니다.
그리고 내 코드는 다음과 같습니다 :do
{
max=0;
for(int i=0; i<edgesize*2;i++)
{
if(cplex.getValue(x[i])>0 && cplex.getValue(x[i])<1 && cplex.getValue(x[i])>max)
{
max = cplex.getValue(x[i]);
}
}
if(max !=0)
{
for(int i=0; i<edgesize*2;i++)
{
if(cplex.getValue(x[i])==max)
{
model.add(x[i]==1);
break;
}
}
}
cplex.extract(model);
cplex.solve();
cplex.out() << "Optimal value: " << cplex.getObjValue() << endl;
it++;
} while(max !=0);
는 여기에서 문제가 될 것인가? 어떻게 해결할 수 있습니까? 미리 감사드립니다.
을받은
MILP
내가 을 실행하면C
에 의해cplex concert technology
해결하기 위해 노력하고 있습니다. x [i]의 최적 값은 '최대'였습니다. 1로 강요하면 문제를 실행 불가능하게 만들 수 있습니다. 궁극적으로 무엇을하려고하는지 반영하기 위해 질문을 변경하는 것이 좋습니다. –그래프에서 작업 중이며 가장 짧은 경로를 찾으려고합니다. 내 ILP가 경로를 올바르게 찾습니다. 그러나 큰 그래프에 대한 LP 솔루션이 필요합니다. 그 목적을 위해 LP 수식을 썼습니다. 결과로 플로트 번호를 얻었습니다. 여기서 반복적으로 한 모서리를 1로 반올림합니다. 마지막으로 나는 경로를 얻으려고합니다. – Berkehan
최단 경로 문제에는 정수 속성이 있습니다. 어떤 모서리가 경로의 일부인지 알아야합니다. 따라서 반올림은 필요하지 않습니다. http://en.wikipedia.org/wiki/Shortest_path_problem#Linear_programming_formulation –