2013-05-23 3 views
0

나는 작업중인 모델에 일부 상처를 추가하는 사용자 잘라 내기 콜백을 만들었습니다. 이것은 완벽하게 작동합니다. 이 상처를 검색 트리의 최상위 노드에만 추가하고 싶습니다. 문제는 현재 노드의 깊이를 검색하는 방법을 알 수 없다는 것입니다. 나는 그것이 호출 될 때마다 정수 변수를 증가시키는 노드 콜백을 만들었다. 이것은이 정수가 어떤 숫자를 초과 할 때 cut 콜백에서 아무 것도 할 수 없다는 것을 의미합니다. 그러나 cplex가 fx이면 지금은하지 않습니다. 왼쪽 브랜치에서만 노드를 생성 했으므로 오른쪽 브랜치의 노드에 잘라내기를 추가하지 않거나 그 반대의 경우도 있습니다.
노드 콜백에 ​​대한 문서를 보면
http://pic.dhe.ibm.com/infocenter/cosinfoc/v12r4/index.jsp?opic=%2Filog.odms.cplex.help%2Frefpythoncplex%2Fhtml%2Fcplex.callbacks.NodeCallback-class.html
나는 노드 식별자를 인수로 취하는 getDepth() 메소드가 있음을 알 수 있습니다. 그러나이 식별자를 얻는 방법을 간단히 알 수는 없습니다. 호출 가능한 라이브러리를 사용현재 노드의 노드 깊이 얻기

답변

-1

:

CPXgetcallbacknodeinfo(env, cbdata, wherefrom, 0, CPX_CALLBACK_INFO_NODE_DEPTH, &depth); 

미안 해요, 콘서트 기술에 대해 잘 모른다.

0

나는 C++에서 같은 것을 시도했다.

getDepth() 함수로 작업하려고했는데, 인수로 노드 식별자를 취합니다. 그러나 노드 식별자를 얻는 방법을 알 수 없었습니다.

그것은 문서에서 명확하지 않지만 : 노드 콜백이 호출 될 때, 처리 할 다음 노드는 인덱스 0

에있는 노드가 현재 노드의 깊이를 알고, 그 다음입니다, 식별자로 인덱스 0을 사용해야합니다.