CHO-FAM · CASE STUDY ④ · 2026.10.10

RAG · Search · Structured Output · Optimization
근거에서 최적 결정까지

공식 공개 사례에 적용한 설계, 실제 실행 과정, 독립 검증 결과를 한 페이지로 기록합니다.

실측 결과Markdown 다운로드연구 커리큘럼

적용 사례와 범위

Google OR-Tools 공식 공개 knapsack 예제에 기존 네 도구를 연결했습니다. 50개 항목에서 단일 예산을 넘지 않으면서 가치 합계를 최대화합니다.

공개 예제 검증입니다. 실제 제조 현장 데이터, 외부 LLM 품질, 해커톤 규정 적합성을 검증한 결과로 표현하지 않습니다.

전체 테스트64 / 64실패·건너뜀 0
공개 사례 목적값7,534독립 최적값 일치
선택 항목32 / 50비용 850 / 한도 850

적용 설계

전체 흐름은 공식 근거 확보 → 검색 → citation 확인 → 구조 검증 → 제약 최적화 → 독립 비교입니다.

Generator는 deterministic literal extractor입니다. 다운로드한 Python 코드를 실행하지 않고 AST literal을 읽습니다. RAG status는 generated_unverified로 유지하며, citation membership만으로 의미적 정답을 보장하지 않습니다.

  1. 공식 sourcecommit 고정 · SHA-256 확인 · 원본 유지
  2. Searchvalues / weights / capacities literal 문서 검색
  3. RAG검색 근거 3개 · citation ID 검사
  4. Structured Outputtop-level schema · 중복 키·비유한 값 거부
  5. Optimization Solver정수 예산의 0/1 knapsack 동적계획법
  6. 독립 검증·보고HiGHS MILP · feasibility · JSON 근거

실행 과정

기록된 순서를 보여줍니다. 단계별 실행 시간은 측정하지 않았으므로 시간축 길이로 표현하지 않습니다. 보고서는 기록된 결과를 읽으며 solver나 테스트를 재실행하지 않습니다.

순서작업실행 근거
1기존 구현·테스트 확인main 기준 기존 56개 통과
2실패 입력 재현중복 JSON 키·NaN 통과 확인
3공개 사례 연결네 도구 연결·문서 순서 반전 결과 일치
4보완·회귀 검증추가 8개 포함 최종 64개 통과
5독립 최적성 검증HiGHS status 0, gap 0; 목적값 일치
6결과 동결·병합PR #5 병합; 원본 해시·로그·JSON 보존

실측 결과

동적계획법과 별도의 HiGHS MILP가 같은 최적 목적값을 얻었습니다. 동일한 항목 집합을 선택해야 한다는 조건은 두지 않았습니다.

Runner 시간은 Python 프로세스 시작 시간을 제외하고 SciPy import와 독립 검증을 포함합니다. 검색·LLM latency나 대규모 서비스 성능으로 해석하지 않습니다.

지표측정값
항목 수50
예산 한도 / 사용850 / 850
Kit 목적값7,534
독립 HiGHS 목적값7,534
HiGHS status / gap0 / 0
기록된 runner 시간0.386095초
Kit · 7,534HiGHS · 7,534예산 850 / 850 · 두 방법 모두 feasible
목적값을 최대화하는 두 독립 방법의 결과가 일치했습니다.
가치비용 →0100900ID 0: cost 7, value 360, selected TrueID 1: cost 0, value 83, selected TrueID 2: cost 30, value 59, selected FalseID 3: cost 22, value 130, selected TrueID 4: cost 80, value 431, selected TrueID 5: cost 94, value 67, selected FalseID 6: cost 11, value 230, selected TrueID 7: cost 81, value 52, selected FalseID 8: cost 70, value 93, selected FalseID 9: cost 64, value 125, selected FalseID 10: cost 59, value 670, selected TrueID 11: cost 18, value 892, selected TrueID 12: cost 0, value 600, selected TrueID 13: cost 36, value 38, selected FalseID 14: cost 3, value 48, selected TrueID 15: cost 8, value 147, selected TrueID 16: cost 15, value 78, selected TrueID 17: cost 42, value 256, selected TrueID 18: cost 9, value 63, selected TrueID 19: cost 0, value 17, selected TrueID 20: cost 42, value 120, selected FalseID 21: cost 47, value 164, selected TrueID 22: cost 52, value 432, selected TrueID 23: cost 32, value 35, selected FalseID 24: cost 26, value 92, selected TrueID 25: cost 48, value 110, selected FalseID 26: cost 55, value 22, selected FalseID 27: cost 6, value 42, selected TrueID 28: cost 29, value 50, selected TrueID 29: cost 84, value 323, selected TrueID 30: cost 2, value 514, selected TrueID 31: cost 4, value 28, selected TrueID 32: cost 18, value 87, selected TrueID 33: cost 56, value 73, selected FalseID 34: cost 7, value 78, selected TrueID 35: cost 29, value 15, selected FalseID 36: cost 93, value 26, selected FalseID 37: cost 44, value 78, selected FalseID 38: cost 71, value 210, selected TrueID 39: cost 3, value 36, selected TrueID 40: cost 86, value 85, selected FalseID 41: cost 66, value 189, selected TrueID 42: cost 31, value 274, selected TrueID 43: cost 65, value 43, selected FalseID 44: cost 0, value 33, selected TrueID 45: cost 79, value 10, selected FalseID 46: cost 20, value 19, selected FalseID 47: cost 65, value 389, selected TrueID 48: cost 52, value 276, selected TrueID 49: cost 13, value 312, selected True
비용–가치 분포. 채운 점: 선택 · 빈 점: 제외. 아래 표에서 모든 값을 확인할 수 있습니다.

검증과 개선

기존 56개 + 추가 8개 = 총 64개 테스트가 실제 통과했습니다. 100개의 seeded 소형 합성 문제는 완전탐색 oracle과 일치했습니다. 이 100개는 공개 사례와 별도 검증입니다.

최종 병합 때 GitHub CI check/status 실행 기록은 없었습니다. 로컬 suite 결과와 CI를 구분합니다. HTML 구조·다운로드·수치 일관성은 확인했으며 브라우저 픽셀 QA는 미완료입니다.

실패 경로보완·검증된 동작
근거 없음generator 호출 없이 insufficient_evidence
잘못된 citationValueError로 거부
구조 불일치schema에서 거부; solver 입력으로 사용하지 않음
중복 키·NaN·Infinity모호하거나 비유한 payload 거부
잘못된 limit·비용·중복 ID입력 검증 실패
목적값 overflow최적값으로 기록하지 않고 거부

항목별 결정

선택 집합의 비용과 가치 합계를 원본 literal에서 다시 계산해 기록값과 비교했습니다.

전체 50개 항목 보기
ID비용가치결정
07360선택
1083선택
23059제외
322130선택
480431선택
59467제외
611230선택
78152제외
87093제외
964125제외
1059670선택
1118892선택
120600선택
133638제외
14348선택
158147선택
161578선택
1742256선택
18963선택
19017선택
2042120제외
2147164선택
2252432선택
233235제외
242692선택
2548110제외
265522제외
27642선택
282950선택
2984323선택
302514선택
31428선택
321887선택
335673제외
34778선택
352915제외
369326제외
374478제외
3871210선택
39336선택
408685제외
4166189선택
4231274선택
436543제외
44033선택
457910제외
462019제외
4765389선택
4852276선택
4913312선택

해석과 남은 검증

검증 완료: lexical Search, 근거/citation contract, strict top-level payload, 단일 정수 예산 solver, 독립 최적값 비교.

미검증: 외부 LLM 답변 품질, semantic retrieval, 한국어 검색 품질, prompt injection 내성, 실제 생산 데이터, 대규모 runtime·memory.

재사용률은 측정하지 않았으며 70% 달성을 주장하지 않습니다. 단일 예산 solver를 일반 MILP나 routing solver로 표현하지 않습니다. CHO-FAM 정규 학습 일정은 변경하지 않습니다.

근거와 다운로드

공식 source SHA-256: 8c51a495028e63eb423964092fa12118db019c0f4ff045e1598cf32ba1dfba09

공식 source commit: 100f66e6242ab8bf8d32feb8f3bf086db66ae2b5

Python 3.12.14 · SciPy 1.17.0 · 독립 엔진: SciPy/HiGHS

HTML과 Markdown은 같은 기록된 JSON과 테스트 로그를 사용합니다. 실행 중 원본을 바꾸거나 신규 성능을 생성하지 않습니다.

공식 공개 source · Markdown 다운로드 · 집계 근거 JSON