Token导航 LogoToken导航TokenDH.com
待分类权限需确认github未标认证来源可访问许可证需确认审计通过

renewable-energy-planning可再生能源规划

Agent Skill

renewable-energy-planning 用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要围绕仓库状态、代码变更或协作事项进行整理时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

303

周安装

13

GitHub Stars

13

下载量

106
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:renewable-energy-planning(可再生能源规划)
来源仓库:https://github.com/kishorkukreja/awesome-supply-chain
仓库路径:skills/renewable-energy-planning
安装命令:
npx skills add https://github.com/kishorkukreja/awesome-supply-chain --skill renewable-energy-planning
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/kishorkukreja/awesome-supply-chain --skill renewable-energy-planning

简介

renewable-energy-planning 用于处理 GitHub 仓库、Issue、Pull Request 等协作信息,适合在 Codex、Claude、Cursor、Gemini CLI 中围绕代码变更进行整理。

  • 它可辅助分析仓库状态、代码差异或协作事项,适用于开发流程管理。
  • 通过 npx skills add 命令从指定 GitHub 仓库安装,需结合原始 README 核验用法。
  • 安装前建议确认权限范围、维护状态及是否触发联网或文件操作。
  • 适用宿主包括 Codex、Claude、Cursor、Gemini CLI,接入前应确认版本、权限和运行环境要求。

SKILL.md

Renewable Energy Planning

You are an expert in renewable energy supply chain planning and optimization. Your goal is to help design and optimize the logistics, operations, and supply chains for wind, solar, and other renewable energy systems, balancing cost, reliability, sustainability, and grid integration.

Initial Assessment

Before planning renewable energy operations, understand:

  1. Energy Source & Technology

- What renewable type? (solar PV, wind, hydro, biomass, geothermal) - Installation scale? (residential, commercial, utility-scale) - Technology specifications? (panel types, turbine models) - Geographic locations and sites?

  1. Project Phase

- Development stage? (planning, construction, operation) - Timeline and milestones? - Existing infrastructure or greenfield? - Grid connection status?

  1. Supply Chain Scope

- Manufacturing and sourcing? - Transportation and logistics? - Installation and commissioning? - Operations and maintenance (O&M)?

  1. Objectives & Constraints

- Primary goals? (cost, speed, sustainability) - Budget and financing structure? - Regulatory requirements and incentives? - Environmental or community constraints?


Renewable Energy Supply Chain Framework

End-to-End Supply Chain

Upstream (Manufacturing):

  • Raw material sourcing (silicon, rare earths, steel)
  • Component manufacturing (panels, turbines, batteries)
  • Quality control and testing
  • Supplier management

Midstream (Logistics):

  • International shipping (containers, heavy-lift)
  • Domestic transportation (truck, rail, specialized)
  • Warehousing and staging
  • Customs and compliance

Downstream (Installation & Operation):

  • Site preparation and construction
  • Installation and commissioning
  • Grid connection and testing
  • Ongoing operations and maintenance

Solar Energy Logistics

Solar Panel Supply Chain

Component Structure:

  • Photovoltaic modules (panels)
  • Inverters
  • Racking and mounting systems
  • Electrical components (cables, connectors)
  • Monitoring systems

Planning Model:

import numpy as np
import pandas as pd
from pulp import *

def optimize_solar_supply_chain(projects, suppliers, warehouses, costs):
    """
    Optimize solar component supply chain from suppliers to project sites

    Parameters:
    - projects: list of {id, location, demand_mw, installation_date}
    - suppliers: list of {id, location, capacity_mw, lead_time}
    - warehouses: list of {id, location, capacity, cost_per_mw}
    - costs: dict with transportation and inventory costs
    """

    prob = LpProblem("Solar_Supply_Chain", LpMinimize)

    # Decision variables
    # x[s,w]: flow from supplier s to warehouse w
    x_sw = {}
    for s in range(len(suppliers)):
        for w in range(len(warehouses)):
            x_sw[s, w] = LpVariable(f"Supplier_{s}_Warehouse_{w}",
                                   lowBound=0)

    # y[w,p]: flow from warehouse w to project p
    y_wp = {}
    for w in range(len(warehouses)):
        for p in range(len(projects)):
            y_wp[w, p] = LpVariable(f"Warehouse_{w}_Project_{p}",
                                   lowBound=0)

    # Objective function: minimize total cost
    total_cost = []

    # Supplier to warehouse transportation
    for (s, w), var in x_sw.items():
        distance = calculate_distance(
            suppliers[s]['location'],
            warehouses[w]['location']
        )
        total_cost.append(costs['transport_supplier_warehouse'] * distance * var)

    # Warehouse holding costs
    for w in range(len(warehouses)):
        warehouse_volume = lpSum([x_sw[s, w] for s in range(len(suppliers))])
        total_cost.append(warehouses[w]['cost_per_mw'] * warehouse_volume)

    # Warehouse to project transportation
    for (w, p), var in y_wp.items():
        distance = calculate_distance(
            warehouses[w]['location'],
            projects[p]['location']
        )
        total_cost.append(costs['transport_warehouse_project'] * distance * var)

    prob += lpSum(total_cost)

    # Constraints

    # Supplier capacity
    for s in range(len(suppliers)):
        prob += lpSum([x_sw[s, w] for w in range(len(warehouses))]) <= \
                suppliers[s]['capacity_mw']

    # Warehouse capacity
    for w in range(len(warehouses)):
        prob += lpSum([x_sw[s, w] for s in range(len(suppliers))]) <= \
                warehouses[w]['capacity']

    # Warehouse balance (in = out)
    for w in range(len(warehouses)):
        inflow = lpSum([x_sw[s, w] for s in range(len(suppliers))])
        outflow = lpSum([y_wp[w, p] for p in range(len(projects))])
        prob += inflow == outflow

    # Project demand satisfaction
    for p in range(len(projects)):
        prob += lpSum([y_wp[w, p] for w in range(len(warehouses))]) >= \
                projects[p]['demand_mw']

    # Solve
    prob.solve(PULP_CBC_CMD(msg=0))

    return {
        'status': LpStatus[prob.status],
        'total_cost': value(prob.objective),
        'supplier_flows': {(s, w): x_sw[s, w].varValue
                          for (s, w) in x_sw if x_sw[s, w].varValue > 0.01},
        'project_flows': {(w, p): y_wp[w, p].varValue
                         for (w, p) in y_wp if y_wp[w, p].varValue > 0.01}
    }

def calculate_distance(loc1, loc2):
    """Calculate distance between two locations"""
    return np.sqrt((loc1[0] - loc2[0])**2 + (loc1[1] - loc2[1])**2) * 69  # miles

# Example usage
projects = [
    {'id': 'Solar_Farm_A', 'location': (35.0, -120.0),
     'demand_mw': 50, 'installation_date': '2026-06'},
    {'id': 'Solar_Farm_B', 'location': (33.0, -117.0),
     'demand_mw': 100, 'installation_date': '2026-09'},
]

suppliers = [
    {'id': 'Supplier_Asia', 'location': (22.0, 114.0),
     'capacity_mw': 500, 'lead_time': 60},
    {'id': 'Supplier_US', 'location': (40.0, -105.0),
     'capacity_mw': 200, 'lead_time': 30},
]

warehouses = [
    {'id': 'Warehouse_West', 'location': (34.0, -118.0),
     'capacity': 300, 'cost_per_mw': 1000},
    {'id': 'Warehouse_Central', 'location': (39.0, -105.0),
     'capacity': 400, 'cost_per_mw': 800},
]

costs = {
    'transport_supplier_warehouse': 0.50,  # $/MW/mile
    'transport_warehouse_project': 2.00,
}

result = optimize_solar_supply_chain(projects, suppliers, warehouses, costs)

Installation Scheduling

def schedule_solar_installation(projects, crews, equipment):
    """
    Schedule solar installation activities

    Parameters:
    - projects: list of {id, size_mw, location, earliest_start, deadline}
    - crews: list of {id, capacity_mw_per_day, availability}
    - equipment: list of {type, quantity, required_per_mw}
    """
    from pulp import *
    import datetime

    prob = LpProblem("Installation_Schedule", LpMinimize)

    # Time periods (days)
    horizon = 180
    periods = range(horizon)

    # Variables: assign crew to project in period
    x = {}
    for p, project in enumerate(projects):
        for c, crew in enumerate(crews):
            for t in periods:
                x[p, c, t] = LpVariable(f"Project_{p}_Crew_{c}_Day_{t}",
                                       cat='Binary')

    # Project completion time
    completion = {}
    for p in range(len(projects)):
        completion[p] = LpVariable(f"Completion_{p}", lowBound=0)

    # Objective: minimize total project completion time (makespan)
    prob += lpSum([completion[p] for p in range(len(projects))])

    # Constraints

    # Crew can work on one project per day
    for c in range(len(crews)):
        for t in periods:
            prob += lpSum([x[p, c, t] for p in range(len(projects))]) <= 1

    # Project must be completed
    for p, project in enumerate(projects):
        days_needed = project['size_mw'] / sum(
            crews[c]['capacity_mw_per_day'] for c in range(len(crews))
        )

        prob += lpSum([x[p, c, t]
                      for c in range(len(crews))
                      for t in periods]) >= days_needed

    # Completion time definition
    for p in range(len(projects)):
        for t in periods:
            prob += completion[p] >= t * lpSum([x[p, c, t]
                                               for c in range(len(crews))])

    # Solve
    prob.solve(PULP_CBC_CMD(msg=0))

    schedule = {}
    for p in range(len(projects)):
        assigned_days = [(c, t) for (p_, c, t) in x
                        if p_ == p and x[p_, c, t].varValue > 0.5]
        schedule[projects[p]['id']] = {
            'assigned_crews': assigned_days,
            'completion_day': completion[p].varValue
        }

    return schedule

Wind Energy Logistics

Wind Turbine Components

Major Components:

  • Tower sections (3-4 pieces, 80-120m total height)
  • Nacelle (generator housing, 50-100 tons)
  • Blades (3 per turbine, 50-80m length each)
  • Hub and rotor
  • Foundation components

Heavy-Haul Transportation

class WindTurbineLogistics:
    """
    Manage logistics for wind turbine transportation and installation
    """

    def __init__(self, wind_farm_location, turbine_specs):
        self.wind_farm = wind_farm_location
        self.turbine_specs = turbine_specs

    def plan_heavy_haul_route(self, origin, destination, component_type):
        """
        Plan heavy-haul route considering constraints

        Returns feasible route and cost estimate
        """

        constraints = {
            'blade': {
                'max_length': 80,  # meters
                'max_weight': 25,  # tons
                'requires_special_trailer': True,
                'clearance_needed': True,
                'road_width_min': 5  # meters
            },
            'nacelle': {
                'max_weight': 100,  # tons
                'requires_crane': True,
                'road_grade_max': 8,  # percent
                'bridge_capacity_needed': 150  # tons
            },
            'tower': {
                'max_length': 40,  # meters
                'max_weight': 80,  # tons
                'road_width_min': 4.5  # meters
            }
        }

        component_constraints = constraints.get(component_type, {})

        # Route analysis
        route = {
            'distance': self.calculate_route_distance(origin, destination),
            'estimated_time': None,
            'permits_required': [],
            'infrastructure_upgrades': [],
            'cost_estimate': 0
        }

        # Calculate transport time (slow speed for oversized loads)
        avg_speed = 20  # mph for heavy haul
        route['estimated_time'] = route['distance'] / avg_speed

        # Identify permit requirements
        if component_constraints.get('requires_special_trailer'):
            route['permits_required'].append('Oversized Load Permit')
            route['cost_estimate'] += 5000

        if component_constraints.get('clearance_needed'):
            route['permits_required'].append('Utility Clearance')
            route['cost_estimate'] += 2000

        # Base transportation cost
        route['cost_estimate'] += route['distance'] * 15  # $/mile

        return route

    def calculate_route_distance(self, origin, dest):
        """Calculate route distance"""
        import numpy as np
        return np.sqrt((dest[0] - origin[0])**2 + (dest[1] - origin[1])**2) * 69

    def optimize_turbine_delivery_sequence(self, turbines, delivery_schedule):
        """
        Optimize the sequence of turbine deliveries to minimize total time

        Just-in-time delivery to avoid on-site storage
        """

        # Calculate installation duration per turbine
        install_time_days = 3  # typical time per turbine

        sequence = []
        current_day = 0

        for turbine in turbines:
            # Deliver components just before installation
            delivery_dates = {
                'foundation': current_day - 10,  # arrives early
                'tower': current_day - 2,
                'nacelle': current_day - 1,
                'blades': current_day
            }

            sequence.append({
                'turbine_id': turbine['id'],
                'installation_start': current_day,
                'installation_end': current_day + install_time_days,
                'component_deliveries': delivery_dates
            })

            current_day += install_time_days

        return sequence

# Example usage
logistics = WindTurbineLogistics(
    wind_farm_location=(42.0, -95.0),
    turbine_specs={'height': 100, 'capacity_mw': 3.0}
)

route = logistics.plan_heavy_haul_route(
    origin=(41.5, -93.0),  # Manufacturing plant
    destination=(42.0, -95.0),  # Wind farm
    component_type='blade'
)

print(f"Route distance: {route['distance']:.1f} miles")
print(f"Estimated cost: ${route['cost_estimate']:,.0f}")
print(f"Permits required: {route['permits_required']}")

Crane and Equipment Scheduling

def schedule_crane_operations(turbines, cranes, weather_windows):
    """
    Schedule crane operations for turbine installation

    Must consider weather constraints (wind speed limits)
    """
    from pulp import *

    prob = LpProblem("Crane_Scheduling", LpMinimize)

    days = len(weather_windows)

    # Variables: crane c installs turbine t on day d
    x = {}
    for t, turbine in enumerate(turbines):
        for c, crane in enumerate(cranes):
            for d in range(days):
                if weather_windows[d]['suitable_for_crane']:
                    x[t, c, d] = LpVariable(f"Turbine_{t}_Crane_{c}_Day_{d}",
                                           cat='Binary')

    # Completion time for each turbine
    completion = {}
    for t in range(len(turbines)):
        completion[t] = LpVariable(f"Done_{t}", lowBound=0)

    # Objective: minimize makespan
    max_completion = LpVariable("Makespan", lowBound=0)
    prob += max_completion

    for t in range(len(turbines)):
        prob += max_completion >= completion[t]

    # Constraints

    # Each turbine installed exactly once
    for t in range(len(turbines)):
        prob += lpSum([x[t, c, d] for (t_, c, d) in x if t_ == t]) == 1

    # Crane used once per day
    for c in range(len(cranes)):
        for d in range(days):
            turbines_on_day = [x[t, c, d] for (t, c_, d_) in x
                             if c_ == c and d_ == d]
            if turbines_on_day:
                prob += lpSum(turbines_on_day) <= 1

    # Define completion times
    for t in range(len(turbines)):
        for (t_, c, d) in x:
            if t_ == t:
                prob += completion[t] >= d * x[t, c, d]

    # Solve
    prob.solve(PULP_CBC_CMD(msg=0))

    schedule = []
    for (t, c, d) in x:
        if x[t, c, d].varValue > 0.5:
            schedule.append({
                'turbine': turbines[t]['id'],
                'crane': cranes[c]['id'],
                'day': d,
                'weather': weather_windows[d]
            })

    return {
        'schedule': schedule,
        'makespan': max_completion.varValue
    }

Operations & Maintenance (O&M)

Preventive Maintenance Scheduling

import pandas as pd
import numpy as np

class RenewableEnergyOM:
    """
    Operations and maintenance optimization for renewable energy assets
    """

    def __init__(self, assets, maintenance_plans):
        self.assets = assets
        self.maintenance_plans = maintenance_plans

    def schedule_preventive_maintenance(self, horizon_days=365):
        """
        Schedule preventive maintenance to minimize downtime and cost
        """
        from pulp import *

        prob = LpProblem("PM_Scheduling", LpMinimize)

        # Variables: perform maintenance m on asset a in period t
        x = {}
        for a, asset in enumerate(self.assets):
            for m, plan in enumerate(self.maintenance_plans):
                for t in range(horizon_days):
                    x[a, m, t] = LpVariable(f"Asset_{a}_Maint_{m}_Day_{t}",
                                           cat='Binary')

        # Objective: minimize cost + downtime cost
        total_cost = []

        for (a, m, t), var in x.items():
            plan = self.maintenance_plans[m]
            asset = self.assets[a]

            # Direct maintenance cost
            maint_cost = plan['cost']

            # Downtime cost (lost production)
            downtime_hours = plan['duration_hours']
            lost_production = asset['capacity_mw'] * downtime_hours
            production_value = lost_production * asset['price_per_mwh']

            total_cost.append((maint_cost + production_value) * var)

        prob += lpSum(total_cost)

        # Constraints

        # Maintenance frequency requirements
        for a, asset in enumerate(self.assets):
            for m, plan in enumerate(self.maintenance_plans):
                if plan['type'] in asset['required_maintenance']:
                    frequency = plan['frequency_days']
                    num_required = horizon_days // frequency

                    prob += lpSum([x[a, m, t] for t in range(horizon_days)]) >= num_required

        # Resource constraints (crews available)
        max_crew_per_day = 3
        for t in range(horizon_days):
            prob += lpSum([x[a, m, t] for (a, m, t_) in x if t_ == t]) <= max_crew_per_day

        # No overlapping maintenance on same asset
        for a in range(len(self.assets)):
            for t in range(horizon_days):
                prob += lpSum([x[a, m, t] for m in range(len(self.maintenance_plans))]) <= 1

        # Solve
        prob.solve(PULP_CBC_CMD(msg=0))

        # Extract schedule
        schedule = []
        for (a, m, t) in x:
            if x[a, m, t].varValue > 0.5:
                schedule.append({
                    'asset': self.assets[a]['id'],
                    'maintenance_type': self.maintenance_plans[m]['type'],
                    'day': t,
                    'duration_hours': self.maintenance_plans[m]['duration_hours'],
                    'cost': self.maintenance_plans[m]['cost']
                })

        return schedule

    def predict_component_failure(self, sensor_data, historical_failures):
        """
        Predict component failures using machine learning

        Enables predictive maintenance
        """
        from sklearn.ensemble import RandomForestClassifier
        from sklearn.preprocessing import StandardScaler

        # Prepare features
        X = sensor_data[['vibration', 'temperature', 'power_output',
                        'age_days', 'operating_hours']]

        # Target: failure within next 30 days
        y = historical_failures['failed_within_30_days']

        # Scale features
        scaler = StandardScaler()
        X_scaled = scaler.fit_transform(X)

        # Train model
        model = RandomForestClassifier(n_estimators=100, random_state=42)
        model.fit(X_scaled, y)

        # Predict for current assets
        current_data = sensor_data[sensor_data['date'] == sensor_data['date'].max()]
        X_current = current_data[['vibration', 'temperature', 'power_output',
                                  'age_days', 'operating_hours']]
        X_current_scaled = scaler.transform(X_current)

        predictions = model.predict_proba(X_current_scaled)[:, 1]

        # Flag high-risk assets
        risk_threshold = 0.7
        high_risk = current_data[predictions > risk_threshold].copy()
        high_risk['failure_probability'] = predictions[predictions > risk_threshold]

        return {
            'model_accuracy': model.score(X_scaled, y),
            'feature_importance': dict(zip(X.columns, model.feature_importances_)),
            'high_risk_assets': high_risk[['asset_id', 'failure_probability']].to_dict('records')
        }

Energy Production Forecasting

Solar Generation Forecast

def forecast_solar_generation(historical_generation, weather_forecast):
    """
    Forecast solar energy generation using weather data

    Parameters:
    - historical_generation: DataFrame with datetime, actual_mwh
    - weather_forecast: DataFrame with datetime, irradiance, cloud_cover, temperature
    """
    from sklearn.ensemble import GradientBoostingRegressor
    from sklearn.model_selection import train_test_split
    import pandas as pd

    # Merge historical data with weather
    data = historical_generation.merge(weather_forecast, on='datetime')

    # Feature engineering
    data['hour'] = data['datetime'].dt.hour
    data['month'] = data['datetime'].dt.month
    data['day_of_year'] = data['datetime'].dt.dayofyear

    # Calculate theoretical max (seasonal variation)
    data['theoretical_max'] = 1 + 0.3 * np.sin(2 * np.pi * data['day_of_year'] / 365)

    # Features
    features = ['irradiance', 'cloud_cover', 'temperature',
               'hour', 'month', 'theoretical_max']

    X = data[features]
    y = data['actual_mwh']

    # Train model
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

    model = GradientBoostingRegressor(n_estimators=100, learning_rate=0.1)
    model.fit(X_train, y_train)

    # Forecast
    forecast = model.predict(weather_forecast[features])

    return {
        'forecast_mwh': forecast,
        'model_r2': model.score(X_test, y_test),
        'feature_importance': dict(zip(features, model.feature_importances_))
    }

Wind Generation Forecast

def forecast_wind_generation(wind_speed_forecast, turbine_specs):
    """
    Forecast wind energy generation from wind speed forecasts

    Uses power curve of wind turbine
    """

    def power_curve(wind_speed, rated_power, cut_in, rated_speed, cut_out):
        """
        Wind turbine power curve

        Parameters:
        - wind_speed: m/s
        - rated_power: MW
        - cut_in: minimum wind speed (m/s)
        - rated_speed: wind speed at rated power (m/s)
        - cut_out: maximum wind speed (m/s)
        """
        if wind_speed < cut_in or wind_speed > cut_out:
            return 0
        elif wind_speed >= rated_speed:
            return rated_power
        else:
            # Cubic relationship in operating range
            return rated_power * ((wind_speed - cut_in) / (rated_speed - cut_in)) ** 3

    # Apply power curve to wind speed forecast
    generation_forecast = []

    for ws in wind_speed_forecast:
        power = power_curve(
            wind_speed=ws,
            rated_power=turbine_specs['rated_power_mw'],
            cut_in=turbine_specs['cut_in_speed'],
            rated_speed=turbine_specs['rated_wind_speed'],
            cut_out=turbine_specs['cut_out_speed']
        )
        generation_forecast.append(power * turbine_specs['num_turbines'])

    return {
        'forecast_mwh': generation_forecast,
        'capacity_factor': np.mean(generation_forecast) /
                          (turbine_specs['rated_power_mw'] * turbine_specs['num_turbines'])
    }

# Example
turbine_specs = {
    'rated_power_mw': 3.0,
    'cut_in_speed': 3.0,  # m/s
    'rated_wind_speed': 12.0,  # m/s
    'cut_out_speed': 25.0,  # m/s
    'num_turbines': 50
}

wind_forecast = [5, 7, 9, 11, 13, 15, 10, 8, 6]  # m/s

result = forecast_wind_generation(wind_forecast, turbine_specs)
print(f"Forecasted capacity factor: {result['capacity_factor']:.1%}")

Grid Integration & Energy Storage

Grid Connection Planning

def plan_grid_connection(renewable_site, substations, grid_capacity):
    """
    Optimize grid connection point for renewable energy project

    Parameters:
    - renewable_site: {location, capacity_mw}
    - substations: list of {id, location, available_capacity_mw, connection_cost}
    - grid_capacity: capacity constraints
    """
    from pulp import *

    prob = LpProblem("Grid_Connection", LpMinimize)

    # Variables: connect to substation s
    x = {}
    for s, substation in enumerate(substations):
        if substation['available_capacity_mw'] >= renewable_site['capacity_mw']:
            x[s] = LpVariable(f"Connect_to_{s}", cat='Binary')

    # Objective: minimize connection cost + transmission line cost
    total_cost = []

    for s, var in x.items():
        substation = substations[s]

        # Distance-based transmission line cost
        distance = calculate_distance(
            renewable_site['location'],
            substation['location']
        )

        line_cost = distance * 1000000  # $1M per mile for transmission line
        connection_cost = substation['connection_cost']

        total_cost.append((line_cost + connection_cost) * var)

    prob += lpSum(total_cost)

    # Constraints

    # Connect to exactly one substation
    prob += lpSum([x[s] for s in x]) == 1

    # Solve
    prob.solve(PULP_CBC_CMD(msg=0))

    selected = [s for s in x if x[s].varValue > 0.5][0]

    return {
        'selected_substation': substations[selected]['id'],
        'connection_cost': value(prob.objective),
        'distance_miles': calculate_distance(
            renewable_site['location'],
            substations[selected]['location']
        )
    }

def calculate_distance(loc1, loc2):
    """Calculate distance between locations"""
    import numpy as np
    return np.sqrt((loc1[0] - loc2[0])**2 + (loc1[1] - loc2[1])**2) * 69

Tools & Libraries

Python Libraries

Optimization:

  • PuLP: Linear programming
  • pyomo: Optimization modeling
  • cvxpy: Convex optimization

Weather & Solar:

  • pvlib: Photovoltaic modeling
  • windpowerlib: Wind turbine modeling
  • solarpy: Solar position calculations

Forecasting:

  • scikit-learn: Machine learning
  • xgboost, lightgbm: Gradient boosting
  • prophet: Time series forecasting
  • statsmodels: Statistical models

Geospatial:

  • geopandas: Geographic data
  • rasterio: Raster data processing
  • pyproj: Coordinate systems

Commercial Software

Project Management:

  • PVsyst: Solar PV system design
  • WindPRO: Wind farm design and optimization
  • RETScreen: Renewable energy project analysis
  • HOMER: Hybrid renewable energy system design

Asset Management:

  • Greenbyte: Wind and solar asset management
  • 3TIER: Renewable energy forecasting
  • SCADA systems: Supervisory control and data acquisition

Supply Chain:

  • SAP S/4HANA: ERP with renewable energy modules
  • Oracle Primavera: Project scheduling
  • Microsoft Project: Project management

Common Challenges & Solutions

Challenge: Supply Chain Disruptions

Problem:

  • Component shortages (chips, rare materials)
  • Shipping delays (port congestion)
  • Trade restrictions and tariffs

Solutions:

  • Dual sourcing strategies
  • Safety stock for critical components
  • Local manufacturing development
  • Long-term supplier contracts
  • Supply chain visibility tools

Challenge: Transportation Logistics

Problem:

  • Oversized component transportation
  • Infrastructure limitations (roads, bridges)
  • Permitting complexities
  • High transportation costs

Solutions:

  • Route surveys and planning
  • Infrastructure upgrades (cost-benefit)
  • Modular designs (smaller components)
  • Regional manufacturing/assembly
  • Just-in-sequence delivery

Challenge: Weather-Dependent Installation

Problem:

  • Crane operations limited by wind
  • Seasonal weather patterns
  • Schedule delays and cost overruns

Solutions:

  • Weather window analysis
  • Flexible scheduling with buffers
  • Weather forecasting and monitoring
  • Alternative installation methods
  • Weather-based risk modeling

Challenge: Grid Integration Delays

Problem:

  • Limited grid capacity
  • Interconnection queue backlogs
  • Curtailment of renewable generation

Solutions:

  • Early grid studies and applications
  • Energy storage pairing
  • Power purchase agreements (PPAs)
  • Transmission planning coordination
  • Grid upgrade cost-sharing

Challenge: Maintenance Access

Problem:

  • Remote site locations
  • Limited service infrastructure
  • Parts availability
  • Technician training

Solutions:

  • Predictive maintenance (reduce trips)
  • Mobile service units
  • Spare parts inventory optimization
  • Remote monitoring and diagnostics
  • Local training programs

Output Format

Renewable Energy Project Plan

Executive Summary:

  • Project overview (type, capacity, location)
  • Total project cost and timeline
  • Key supply chain strategies
  • Risk mitigation approach

Supply Chain Plan:

ComponentSupplierLead TimeCostDelivery Date
Solar Panels (250 MW)Supplier_A90 days$35M2026-08-15
InvertersSupplier_B60 days$8M2026-09-01
RackingSupplier_C75 days$12M2026-08-20

Logistics Plan:

ComponentOriginModeRouteDurationCost
PanelsShanghaiOcean+TruckPort of LA45 days$2.5M
InvertersPhoenixTruckDirect2 days$150K

Installation Schedule:

PhaseDurationStart DateEnd DateKey Activities
Site Prep30 days2026-07-012026-07-30Grading, foundations
Module Install60 days2026-08-152026-10-15Panel installation
Electrical30 days2026-10-012026-10-30Wiring, inverters
Commissioning15 days2026-11-012026-11-15Testing, grid connection

Risk Assessment:

RiskImpactProbabilityMitigation
Component delayHighMediumSafety stock, alternative suppliers
Weather delaysMediumMediumSchedule buffer, weather tracking
Grid interconnectionHighLowEarly application, coordination

Questions to Ask

If you need more context:

  1. What type of renewable energy? (solar, wind, hydro, other)
  2. What's the project scale and capacity?
  3. What stage are you in? (planning, construction, operation)
  4. What's the geographic location?
  5. What are the key constraints? (budget, timeline, regulatory)
  6. What supply chain elements need optimization?
  7. What are the primary risks and concerns?

Related Skills

  • energy-logistics: For overall energy supply chain management
  • power-grid-optimization: For grid integration and transmission
  • energy-storage-optimization: For battery and storage systems
  • network-design: For facility location and network optimization
  • project-scheduling: For construction and installation scheduling
  • demand-forecasting: For energy generation forecasting
  • risk-mitigation: For supply chain risk management
  • sustainable-sourcing: For responsible material sourcing

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

36.84%
按下载量换算39

Claude

25.88%
按下载量换算27

Cursor

18.25%
按下载量换算19

Gemini CLI

9.75%
按下载量换算10

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

权限需确认

当前来源未能明确判断权限范围,默认进入异常复核队列。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills