mcpField
O
optimization-ml-hybrid

optimization-ml-hybrid

github.com/kishorkukreja数据与数据库8451 次安装3 周前更新
代码仓库

关于 optimization-ml-hybrid

面向供应链场景的 ML 与数学优化结合技能,介绍如何将预测结果、学习到的参数或启发式方法用于优化模型。还涵盖端到端学习、神经网络热启动和图神经网络路径规划。

主要功能

  1. 01将 ML 预测输入优化模型
  2. 02用数据学习优化参数
  3. 03构建端到端可微优化层
  4. 04通过神经网络生成初始解
  5. 05用图神经网络学习路径启发式

适用场景

  1. 01将需求预测转化为生产计划
  2. 02根据历史数据估计安全库存参数
  3. 03为优化求解生成初始方案
  4. 04学习路由问题的启发式策略

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/kishorkukreja/awesome-supply-chain --skill optimization-ml-hybrid

安装后在 Claude Code 中输入/optimization-ml-hybrid确认已加载。

详细介绍

优化与机器学习的混合方法

你是将机器学习与供应链数学优化相结合的专家。你的目标是将机器学习预测整合到优化模型中,学习优化参数,并创建端到端学习系统。

关键模式

1. 先预测,再优化
# Step 1: ML predicts demand
demand_forecast = ml_model.predict(features)

# Step 2: Optimization uses forecast
optimal_production = optimize_production(demand_forecast)
2. 使用机器学习优化参数
# Learn optimal parameters from data
safety_stock = ml_model.predict([sku_features, demand_history])

# Use in inventory optimization
reorder_point = expected_demand_during_leadtime + safety_stock
3. 端到端学习
# Differentiable optimization layer
class OptimizationLayer(nn.Module):
    def forward(self, predictions):
        # Solve optimization with predictions
        # Backpropagate through optimization
        return optimal_decisions

智能的先预测,再优化

from sklearn.ensemble import RandomForestRegressor
from pulp import *

class PredictThenOptimize:
    """
    ML forecasting + Optimization planning
    """
    
    def __init__(self):
        self.ml_model = RandomForestRegressor()
        self.opt_model = None
    
    def train_ml(self, X_train, y_train):
        """Train ML forecast model"""
        self.ml_model.fit(X_train, y_train)
    
    def optimize_with_forecast(self, features, costs):
        """Optimize using ML predictions"""
        
        # Step 1: Predict demand
        demand_forecast = self.ml_model.predict(features)
        
        # Step 2: Optimize production
        model = LpProblem("Production", LpMinimize)
        
        products = range(len(demand_forecast))
        produce = LpVariable.dicts("Prod", products, lowBound=0)
        
        # Objective: minimize cost
        model += lpSum([costs[i] * produce[i] for i in products])
        
        # Constraints: meet forecasted demand
        for i in products:
            model += produce[i] >= demand_forecast[i]
        
        model.solve()
        
        return {i: produce[i].varValue for i in products}

学习优化启发式方法

class MLOptimizationHeuristic:
    """
    Learn when to apply optimization heuristics
    """
    
    def __init__(self):
        self.classifier = RandomForestClassifier()
    
    def train(self, problem_features, best_heuristic_labels):
        """
        Learn which heuristic works best for problem instance
        """
        self.classifier.fit(problem_features, best_heuristic_labels)
    
    def select_heuristic(self, problem_instance):
        """Predict best heuristic for new problem"""
        features = extract_features(problem_instance)
        heuristic_id = self.classifier.predict([features])[0]
        
        return HEURISTICS[heuristic_id]

神经网络热启动

def neural_warm_start(model, problem_instance):
    """
    Use NN to generate initial solution for optimization
    """
    
    # NN predicts good initial solution
    features = extract_features(problem_instance)
    initial_solution = nn_model.predict(features)
    
    # Use as warm start in MIP
    for var_name, value in initial_solution.items():
        model.variables[var_name].setInitialValue(value)
    
    model.solve()

用于路径规划的图神经网络

class GNNRouter:
    """
    GNN to learn routing heuristics
    """
    
    def __init__(self):
        self.gnn = GraphNeuralNetwork()
    
    def embed_vrp_instance(self, customers, depot):
        """Convert VRP to graph"""
        
        # Nodes: customers + depot
        # Edges: distances
        graph = create_graph(customers, depot)
        
        return graph
    
    def predict_route(self, graph):
        """
        GNN predicts edge probabilities
        Use to construct route
        """
        
        edge_probs = self.gnn(graph)
        route = construct_route_from_probs(edge_probs)
        
        return route

工具与库

  • cvxpylayers:可微分优化
  • OptNet:将优化作为神经网络层
  • qpth:用于 PyTorch 的二次规划层
  • SciPy + PyTorch:自定义集成

相关技能

  • optimization-modeling:数学规划
  • ml-supply-chain:机器学习
  • **metaheuristic-optimization`:启发式方法
  • reinforcement-learning-supply-chain:强化学习集成

评论

支持 Markdown