package com.aps.macroplanner;

import com.aps.macroplanner.MacroPlannerOptimizer;
import com.google.ortools.Loader;
import com.aps.macroplanner.data.ComprehensiveTestDataBuilder;

/**
 * 综合测试运行器 — 使用覆盖所有约束场景的测试数据运行优化器。
 *
 * <p>与 {@link MacroPlannerOptimizer} 使用相同的模块架构,
 * 仅替换数据源为 {@link ComprehensiveTestDataBuilder}。</p>
 *
 * <h2>测试场景</h2>
 * 3级BOM + 2设备 + 5周期 + 需求波动 + 紧约束:
 * <ul>
 *   <li>物料平衡 — 3级链式传递, 5周期</li>
 *   <li>BOM依赖 — OP1双输入, PC共享消耗</li>
 *   <li>产能 — Unit1共享(OP1+OP3), Unit2最小产能30</li>
 *   <li>库存 — PC最大库存80紧约束</li>
 *   <li>供应 — 目标偏高</li>
 *   <li>批次 — OP1 lotSize=100, OP2 lotSize=50</li>
 * </ul>
 */
public class ComprehensiveTestRunner {

    public static void main(String[] args) {
        Loader.loadNativeLibraries();

        System.out.println("╔══════════════════════════════════════════════════════╗");
        System.out.println("║    MacroPlanner 综合测试 — 覆盖所有约束场景          ║");
        System.out.println("║    3级BOM + 2设备 + 5周期 + 需求波动 + 紧约束        ║");
        System.out.println("╚══════════════════════════════════════════════════════╝\n");

        MacroPlannerOptimizer optimizer = new MacroPlannerOptimizer(
                new ComprehensiveTestDataBuilder());
        optimizer.buildModel();
        optimizer.solve();
    }
}