선형 하이브리드 오토 마톤의 연결 가능성 문제를 해결하기 위해 z3을 사용하고 있습니다. 나는 제한된 환경에서 실험을한다. 나는 메모리 사용법에 대해 혼란 스럽다. 제한된 메모리에서 z3을 해결할 수있는 경우가 있습니다. 그러나 제한이 2000 인 경우 z3의 메모리 사용량이 최대 허용량을 초과합니다. 이유는 무엇입니까?z3의 메모리 사용
답변
SMT2 파일의 제약 조건 수가 적을수록 반드시 Z3이 문제를 해결하는 데 더 적은 메모리를 사용한다는 의미는 아닙니다. 예를 들어 작지만 만족스럽지 않은 문제는 큰 만족스러운 문제보다 훨씬 많은 메모리가 필요할 수 있습니다.
오토 마톤을 푸는 것에 대한 하한을 설정하면 만족스런 문제 (bound 2500)가 만족스럽지 않은 문제 (bound 2000)로 바뀌고 Z3에서 문제가 훨씬 더 어려워 질 수 있습니다 제약은 더 적지 만. 따라서 Z3은 더 많은 시간 및/또는 메모리를 사용합니다.
이 문제를 해결하려면 문제의 인코딩을 다르게하거나 해결 방법을 사용하여 더 쉽게 "행운의"길을 찾고 해결책을 더 빨리 찾을 수 있습니다.
답장을 보내 주셔서 감사합니다. 사실,이 오토 마톤은 도달 할 수 없습니다. bound 2500 아래의 automaton의 동작은 bound 2000 아래의 것을 포함합니다. 만족할 수없는 bounded model checking 문제에 대해, 더 작은 bound는 더 적은 해결 시간을 의미합니까? –
자주는 아니지만 항상 그렇습니다. 이것은 솔버의 휴리스틱에 크게 의존합니다. 그 차이가 얼마나 큰지 알 수 있습니까? –
예를 들어 문제 A는 a -> b, a 또는 b이고 큰 문제 B는 a -> b, b -> c, a 또는 b 또는 c입니다. –
- 1. Z3의 통계
- 2. Z3의 호른절
- 3. z3의 기호 변수
- 4. z3의 교차 곱
- 5. SMTLIB2/Z3의 다형 함수
- 6. Z3의 해결 전략을 제어하십시오.
- 7. bitvector Z3의 VS 정수
- 8. Z3의 Get-assignment
- 9. Z3의 소프트/하드 구속
- 10. Z3의 배열에 대한 제약
- 11. Z3의 FOL 정의 이론
- 12. Z3의 반올림 출력 예
- 13. Z3의 심플 렉스 솔버
- 14. z3의 함수 선언
- 15. 메모리 사용
- 16. Z3의 만족스러운 할당에서 균일하게 샘플
- 17. Z3의 데이터 로그 입력 형식
- 18. SMTLIB 배열 이론 Z3의 기이성
- 19. Z3의 함수에 대한 제약 추가
- 20. Z3의 초기 모델 값 지정
- 21. Z3의 바운드 변수 인덱싱 이해
- 22. 오래된 버전과 Z3의 새로운 버전
- 23. Z3의 문서화되지 않은 삼각 함수가 복구 가능합니까?
- 24. Z3의 C++ API를 사용하여 긴 disjunction을 만드시겠습니까?
- 25. 푸시 명령을 사용하여 Z3의 점진적 해결
- 26. 메모리 관리 논리의 사용 가능한 총 메모리
- 27. 코어 데이터 메모리 사용 및 메모리 경고
- 28. MATLAB에 HDD 메모리 사용
- 29. WCF 메모리 사용
- 30. 메모리 사용 공간은 무엇입니까?
자세한 내용을 입력하십시오. 이 문제를 일으키는 사례/문제는 무엇입니까? 그것에 대한 링크를 제공 할 수 있습니까? 그 경계를 어떻게 세웠습니까? API 또는 명령 줄 도구를 사용하고 있습니까? –
이 경우는 온도 제어 시스템 오토 마톤의 접근 가능성 분석입니다. 먼저 automata의 한정된 동작을 SMT 문제로 인코딩 한 다음 z3을 사용하여이를 해결합니다. 사실 2,500 이하의 오토마타에 대한 제약 조건의 수는 2000 년의 제약 조건보다 큽니다. 저는 z3을 명령 줄에 사용합니다 : 'z3 -st tcs_2000.smt2'. 바운드 2000 및 2500에서이 자동 장치에 대한 smt2 파일은 다음과 같습니다. http : //seg.nju.edu.cn/BACH/Demo/tcs_2000.smt2 http://seg.nju.edu.cn/BACH/Demo/tcs_2000 .smt2 –