2016-08-30 2 views
2

변수에 많은 제약이 있으며이 제한된 공간을 효율적으로 샘플링 할 방법을 찾고 있습니다. 나는 Z3을 시험해 보았다. 그리고 그것이 공간이 사소한 지 (즉, 제약이 만족 스럽다면) 말할 수있을 것 같다. 그러나 나는 공간에서 예제를 얻는 방법을 보지 않는다. 내가 최소화하거나 최대화하지 않는 한. .제한된 공간에서 샘플링하기 위해 Z3 사용하기

나는 뭔가를 놓치고 있습니까, 아니면 Z3이 아닌 것입니까?

답변

2

Z3은 모델을 제공 할 수 있습니다. 즉, 제약 조건을 충족하는 변수에 대한 할당의 한 예입니다 (.NET API의 SMT2 또는 Solver.Model (및 다른 API의 이름이 비슷한 것과 비슷 함) (get-model) 명령을 사용하십시오) . 그런 다음 모델의 부정을 선언하여 해석자가 다음 쿼리에 대해 다른 할당을 생성하도록 할 수 있습니다. 이러한 종류의 구성표는 많은 응용 프로그램에서 사용되지만 반드시 "효율적"이라고는 할 수 없지만 실제로 어떤 종류의 샘플링을 수행 할 것인가에 달려 있습니다 (예 : Z3 모델이 검색 공간에 임의로 배포되지 않음).

+0

예, 무작위 샘플링을 찾고있었습니다. 나는 다른 것을 사용해야 할 것이다. 어떤 제안? – syzygy

+0

유클리드 거리 (euclidean distance)에 관한 전략을 사용하려고 생각했습니다. 첫 번째 점을 생성 한 후 상수와 기존 솔루션 간의 거리를 최대화하기위한 최적화를 시작하십시오. 나는 자바 스택에 https://www.github.com/groostav/sojourn-cvg에서 이것을하기를 바라고있다. 문제는 말입니다 : SMT2 리스프와 같은 것이 자바 API보다 훨씬 좋네요. 탐색하는데 문제가 있습니다. 그 결과는 느릴 수 있지만 실현 가능한 지역 주변에 일종의 완전한 요인 테두리 상자를 만들 수 있기를 바랄뿐입니다. 균일 분포는 아니지만 나에게 충분합니다. – Groostav