AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
CP‑SAT 검색 로그를 읽어 각 섹션을 설명하고 진행 상황을 그래프로 표시하며 매개변수를 검토하고 모든 주장에 원본 라인을 연결합니다
Read CP-SAT's search log: every section explained, the progress plotted, the parameters reviewed, and every claim linked to the line it came from.
개발 도구Python · TypeScriptGitHub @d-krupke온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기A webapp that visualizes and annotates your ortools' CP-SAT logs. Partially inspired by gurobi-logtools.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
CP-SAT's search log is dense, long, and full of information that only makes sense if you know
the solver's internals. This tool turns it into something you can read: parsed, explained,
plotted, and annotated with what the numbers actually mean for your model.
Paste a log, upload a file, or click one of the bundled examples. Nothing is stored - your log
is processed in memory for the duration of the request and then gone. No database, no account,
no cookies, no tracking.
This project is not affiliated with Google.README 전문 보기 ↗CP-SAT's search log is dense, long, and full of information that only makes sense if you know the solver's internals. This tool turns it into something you can read: parsed, explained, plotted, and annotated with what the numbers actually mean for your model.
Try it: https://cpsat-loganalyzer.krupke-algorithms.de/
Paste a log, upload a file, or click one of the bundled examples. Nothing is stored - your log is processed in memory for the duration of the request and then gone. No database, no account, no cookies, no tracking.
This project is not affiliated with Google.
Explains every section of the log. Solver header, initial and presolved model, presolve
passes, search events, statistics tables, response summary - each gets a text that says what it
is and what to look for. Tables and their columns, constraint kinds (kNoOverlap2D,
kAllDiff, ...), solver messages and every response field are documented too.
Points out what matters. An Overview card scores the run - OR-Tools version, worker count, final gap, presolve share of the wall time, solutions and bound improvements, and whether a solution hint was given and used - and colors a tile when something deserves attention. On top of that, two dozen insight triggers look for specific situations and say what they imply, for example:
Says what became of your hint. Whether a solution hint reached the solver, whether it was
complete and feasible, and whether CP-SAT actually started from it (the complete_hint
solution) - including the trap that CP-SAT prints "The solution hint is complete and is
feasible." for runs that were given no hint at all.
Plots the progress. Incumbent objective and proven bound over time, interactive, and every point links back to the log line that produced it.
Attributes the work. Which subsolver found the solutions, which raised the bound, and what
each of the ~20 workers in CP-SAT's portfolio (default_lp, core, fs_random_no_lp,
graph_arc_lns, shared_tree, ...) is actually for.
Reviews your parameters. Every overridden parameter is shown with its official
documentation, practical advice, and a warning when it quietly disables part of the portfolio -
interleave_search, use_lns_only, linearization_level, FIXED_SEARCH and friends have
consequences that the log alone does not spell out.
Copes with broken logs. A run that was killed, a log clipped by a terminal, one prefixed by a logging framework, your own prints mixed in, or the wrong file entirely: nothing crashes, the parts that could not be read are marked in the raw log and listed, and the analysis says up front that it is looking at an incomplete log.
Keeps the evidence. Every parsed value knows the line it came from, so the analysis and the raw log sit side by side, linked in both directions - no claim without the line that supports it.
Speaks CP-SAT 9.3 to 9.15, including the older log formats, and is checked against 295 real logs from public instance libraries on every test run.
Open https://cpsat-loganalyzer.krupke-algorithms.de/ - that instance runs this repository, and needs nothing installed.
To run your own, so that logs never leave your machine or your network:
git clone https://github.com/d-krupke/CP-SAT-Log-Analyzer.git
cd CP-SAT-Log-Analyzer
docker compose up --build
# open http://localhost:8080
Deploying it for others, configuration, sizing and operations: docs/deployment.md.
The earlier Streamlit implementation - the one behind
https://cpsat-log-analyzer.streamlit.app/ - lives on the legacy branch and is
feature-frozen.
| Read this | For |
|---|---|
| docs/deployment.md | running it for other people |
| docs/development.md | local setup, tests, editing the explanations |
| docs/architecture.md | how the parser, backend, knowledge base and UI fit together |
| docs/README.md | index, including the per-component READMEs |
The repository is the analyzer: backend/ the FastAPI app,
frontend/ the React UI, knowledge/ the TOML
texts and corpus/ the 295 logs the tests run against. Reading the log
itself is the job of cpsat-logutils, a separate package developed for this tool -
pip install cpsat-logutils if you want the parsed model without the UI.
Issues and pull requests are welcome. Two things are easy to contribute without touching much code:
knowledge/ - texts, parameter advice, subsolver descriptions,
table columns. Correcting or sharpening a text needs no Python.backend/app/insights/triggers/: it gets the parsed log and
either stays quiet or writes its sentence. base.py shows the shape.Before opening a pull request, run the suites listed in
docs/development.md. If you changed something visible, regenerate the
screenshots on this page with npm run screenshots in frontend and commit them with the
change.
Developed by Dominik Krupke. There is no funding for this project; it is mainly developed in spare time. If you want to support it, contribute or get in touch.
MIT, see LICENSE.