Skip to content

Latest commit

 

History

History
217 lines (165 loc) · 6.65 KB

File metadata and controls

217 lines (165 loc) · 6.65 KB

아키텍처 문서

전체 구조

┌─────────────────────────────────────────────────────────────┐
│                        사용자 인터페이스                      │
│              (CLI, Jupyter Notebooks, API)                   │
└────────────────────┬────────────────────────────────────────┘
                     │
┌────────────────────┴────────────────────────────────────────┐
│                     문제 정의 계층                            │
│   - TSP          - SAT                                       │
│   - Graph Coloring - Knapsack                               │
│   (Problem 추상 클래스 구현)                                  │
└────────────────────┬────────────────────────────────────────┘
                     │
┌────────────────────┴────────────────────────────────────────┐
│                     솔버 계층                                │
│  ┌──────────────┬──────────────┬─────────────────┐          │
│  │ Traditional  │ ML/RL        │ LLM             │          │
│  │ - Greedy     │ - DQN        │ - GPT-4         │          │
│  │ - Genetic    │ - GNN        │ - Claude        │          │
│  │ - SA         │ - PPO        │ - Few-shot      │          │
│  └──────────────┴──────────────┴─────────────────┘          │
│                (Solver 추상 클래스 구현)                      │
└────────────────────┬────────────────────────────────────────┘
                     │
┌────────────────────┴────────────────────────────────────────┐
│                  평가 및 벤치마크                            │
│   - Benchmark       - Metrics                               │
│   - Visualization   - Reporting                             │
└─────────────────────────────────────────────────────────────┘

핵심 컴포넌트

1. Problem 클래스

책임: NP-complete 문제의 추상화

주요 메서드:

  • generate_instance(): 문제 인스턴스 생성
  • evaluate(solution): 해의 품질 평가
  • is_valid_solution(solution): 해 유효성 검증
  • get_state_representation(): ML용 상태 표현
  • to_text(): LLM용 텍스트 표현

구현 클래스:

  • TSPProblem: 외판원 문제
  • SATProblem: 충족 가능성 문제
  • GraphColoringProblem: 그래프 색칠 문제
  • KnapsackProblem: 배낭 문제

2. Solver 클래스

책임: 문제 해결 알고리즘의 추상화

주요 메서드:

  • solve(problem): 문제 해결
  • get_stats(): 통계 정보 반환

구현 클래스:

전통적 알고리즘

  • GreedySolver: 탐욕 알고리즘
  • GeneticAlgorithmSolver: 유전 알고리즘
  • SimulatedAnnealingSolver: 담금질 기법

머신러닝

  • DQNSolver: Deep Q-Network
  • GNNSolver: Graph Neural Network
  • PPOSolver: Proximal Policy Optimization

LLM 기반

  • LLMSolver: GPT-4/Claude 기반 해결

3. Solution 클래스

책임: 문제의 해 표현

속성:

  • value: 해의 값
  • cost: 해의 비용/품질
  • is_valid: 유효성 여부
  • metadata: 추가 정보

4. Benchmark 클래스

책임: 솔버 성능 평가 및 비교

주요 메서드:

  • run_benchmark(): 벤치마크 실행
  • plot_results(): 결과 시각화
  • generate_report(): 리포트 생성

데이터 흐름

1. 문제 생성
   Problem.generate_instance(seed) → Problem.data

2. 해 탐색
   Solver.solve(problem) → Solution

3. 해 평가
   Problem.evaluate(solution.value) → cost

4. 결과 수집
   Benchmark.run_benchmark() → DataFrame

확장성

새로운 문제 추가

from src.problems.base import Problem, Solution

class MyProblem(Problem):
    def generate_instance(self, seed):
        # 구현
        pass
    
    def evaluate(self, solution):
        # 구현
        pass
    
    def is_valid_solution(self, solution):
        # 구현
        pass
    
    def get_state_representation(self):
        # ML용
        pass
    
    def to_text(self):
        # LLM용
        pass

새로운 솔버 추가

from src.solvers.base import Solver

class MySolver(Solver):
    def __init__(self):
        super().__init__("MySolver")
    
    def solve(self, problem, **kwargs):
        # 구현
        solution_value = ...
        cost = problem.evaluate(solution_value)
        
        return Solution(
            value=solution_value,
            cost=cost,
            is_valid=problem.is_valid_solution(solution_value)
        )

성능 고려사항

1. 메모리 효율성

  • 대규모 문제: 희소 행렬 사용
  • 배치 처리: 제너레이터 패턴

2. 계산 효율성

  • NumPy 벡터화 연산
  • PyTorch GPU 가속
  • 병렬 처리 (multiprocessing)

3. 확장성

  • 모듈화된 설계
  • 플러그인 아키텍처
  • 설정 파일 기반 커스터마이징

의존성

Core:
  - NumPy, SciPy: 수치 계산
  - NetworkX: 그래프 연산

ML/RL:
  - PyTorch: 딥러닝
  - PyTorch Geometric: GNN
  - Stable-Baselines3: RL

LLM:
  - OpenAI: GPT API
  - LangChain: LLM 통합

Evaluation:
  - pandas: 데이터 분석
  - matplotlib, seaborn: 시각화

Development:
  - pytest: 테스트
  - black: 코드 포매팅

테스트 전략

단위 테스트

  • 각 Problem 클래스의 메서드
  • 각 Solver의 기본 동작
  • 유틸리티 함수

통합 테스트

  • Problem + Solver 조합
  • 전체 벤치마크 파이프라인

성능 테스트

  • 다양한 크기의 문제
  • 시간/메모리 제약 확인