[Q] Callback 함수 내에서 solution value 표시
안녕하세요. CPLEX7.0 concert tech.를 사용 중인 KAIST 전자과 박인순입니다.
지난 번에 답변주셔서 감사합니다.
그런데 또 문제가 생겨서요.
일단 callback 함수는 만들었습니다.
함수 안에서 feasible solution의 값들을 저장하고 싶은데요...
cplex.getValue()라는 함수를 사용하는데,
\"0x101b352c에 있는 명령이 0x00000004의 메모리를 참조했습니다.
메모리는 written될 수 없엇습니다.\"
라는 응용 프로그램 오류 메시지가 뜨는군요...
어떻게 해야 오류 메세지 없이 solution의 값을 얻을 수 있을까요?
제가 만든 callback 함수는 다음과 같습니다.
====
#define MIPCALLBACK2(name, type1, x1, type2, x2) \\
class name : public IloCplex::MIPCallback {\\
type1 x1;\\
type2 x2;\\
public:\\
name(type1 xx1, type2 xx2) : x1(xx1), x2(xx2) {}\\
void main();\\
};\\
void name::main()
IloNum newObj, oldObj=100000;
MIPCALLBACK2(MyCallback, IloCplex, cplex, IloNumVarArray, var) {
newObj=getIncumbentObjValue();
if (oldObj>newObj){
IloInt i=1;
if ( var[i].getName() ) cout << var[i].getName() << cplex.getValue(var[i]) << endl;
oldObj=newObj;
}
}