2017-04-09 14 views
0

Choco 솔버에서 프로젝트를 얻었지만 검색하는 동안 외부 효과에 대해 질문이 있습니다.Choco에서 검색하는 동안 제약 조건을 생성/게시하고 삭제/게시 취소하는 방법

저는 BoolVars가 레이어로 구성되어있는 플래닝 그래프가 있고 레이어에 지정된 기간이 있습니다. 즉, 액션이 시작되고 끝나는 것을 의미합니다. 변수 선택은 계획 끝에서 계획 시작까지 정적입니다 (계층의 작업 선택은 임의 임).

나는 시작과 작업 우리가 N에 해당하는 기간을 가질 필요가의 끝 사이로서, 지속 시간 할당에 도움이 심플 렉스 알고리즘을 사용하는 솔루션을 연구하고있다. 그 사이에 몇 가지 제약이 더 있습니다.

추가 제약 조건은 BoolVars의 인스턴스화를 기반으로 생성되지만 외부 매트릭스에 구성되므로 A 액션의 끝 동작이 추가되면 효과에 추가 행이 추가됩니다. 행렬 및 전류 제약 조건이 재구성됩니다. 역 추적에서 우리는 역순으로 행렬을 수정하고자합니다. 즉, 행을 제거하고 제약 조건을 게시 취소합니다.

초코에서 복잡한 동작을 실현하는 방법이 있습니까?

답변

0

부울을 true로 설정하면 어떤 제약 조건이 트리거되는지 미리 알고 있습니까? 그렇다면 구체화를 사용하십시오 (처음에는 제약 조건을 만들지 만 게시하는 대신 boolvars와 연결하십시오).

초코 찾기에 전문적인 지원을 위해

, 당신은 https://www.cosling.com/

+0

구체화 불행히도, 그것을 해결하지 않습니다에 문의 할 수 있습니다. 내 모델을 통해 광범위하게 사용하지만 이는 다른 것입니다. 인스턴스화시 외부 동작을 트리거하고 역 추적시 역 동작을 트리거합니다. – Eramol

+0

1) solver._post (false, c)를 사용하여 동적으로 제약 조건을 생성 및 게시 할 수 있어야하므로 역 추적시 제거됩니다 (javadoc 참조). 2) IOperation : 을 사용하여 사용자 지정 작업을 트리거 할 수도 있습니다 (빨간색으로 단추를 색칠하고 백 트랙에서 다시 녹색으로 바꾼다) - 수행해야하는 작업 (빨간색으로 stuf를 말하십시오) - 환경을 수행하십시오. save (new IOperation (color in ref)) ... lamda를 사용할 수 있습니다 ... 역 추적시 코드가 호출됩니다 색칠 대신 행을 추가/제거하고, 실제로는 뭐든지해라. 나는 맑습니까? :-) –