Token导航 LogoToken导航

Agent Skill · 待分类

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

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

renewable-energy-planning 是待分类类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为权限未标注;许可证信息还不明确,第三方扫描已通过,按安装量在待分类类的 11,209 个 Skill 里排第 8,410。

总安装 303周安装 13GitHub Stars 13下载 106核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
unknown

安装方式

通过对话安装

复制提示词发给支持本地命令或 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

这个 Skill 是做什么的

这个 Skill 的分类还没最终确定,用法以来源仓库的说明为准。

renewable-energy-planning 用于处理 GitHub 仓库、Issue、Pull Request 等协作信息,适合在 Codex、Claude、Cursor、Gemini CLI 中围绕代码变更进行整理。它可辅助分析仓库状态、代码差异或协作事项,适用于开发流程管理。

通过 npx skills add 命令从指定 GitHub 仓库安装,需结合原始 README 核验用法。安装前建议确认权限范围、维护状态及是否触发联网或文件操作。适用宿主包括 Codex、Claude、Cursor、Gemini CLI,接入前应确认版本、权限和运行环境要求。

来源仓库内路径:skills/renewable-energy-planning

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/kishorkukreja/awesome-supply-chain --skill ren…;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    权限没有明确标注,第一次使用时只给一个无关紧要的任务,观察它到底读了哪些文件和网络。

常见问题

6 条

renewable-energy-planning 怎么安装?

在终端执行 npx skills add https://github.com/kishorkukreja/awesome-supply-chain --skill renewable-ene…。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

renewable-energy-planning 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

renewable-energy-planning 需要什么权限?

权限级别没有明确标注。第一次使用时建议只给无关紧要的任务,观察它实际读写了哪些内容。

renewable-energy-planning 是免费的吗?

公开资料没有标注明确许可证,收费和商用限制都无法确认。正式使用前请到来源仓库核对授权说明。

renewable-energy-planning 用的人多吗?

公开数据是累计安装 303 次,近一周安装 13 次,下载 106 次,GitHub 13 星。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

renewable-energy-planning 安全吗?

第三方扫描结果为通过,但这只覆盖已知的静态检查项,不能替代自己读一遍源码和安装命令。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。
  • 第三方扫描已通过,常见的高风险行为没有命中。

先想清楚的地方

  • 许可证没有明确标注,能不能商用、能不能再分发都不确定。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理待分类类任务、又不想每次都手写提示词的人。

不太适合

  • 需要明确授权才能用到公司项目里的场景。
  • 需要厂商级技术支持和 SLA 的生产系统。

待分类类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
infsh-cli

infsh CLI · Codex、Claude

4,374,576382权限未标注未明确未收录
ai-video-generation

AI 视频生成 · Codex、Claude

4,313,376382调用外部服务未明确有提醒
lark-openapi-explorer

云雀 OpenAPI 浏览器 · Codex、Claude

2,064,1209,011需要联网未明确有提醒
lark-workflow-standup-report

Lark 工作流程站立报告 · Codex、Claude

2,041,6328,978需要联网未明确通过
use-my-browser

使用我的浏览器 · Codex、Claude

1,848,49140操作浏览器未明确未通过
renewable-energy-planning

可再生能源规划 · 本页

30313权限未标注未明确通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

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

平台分布

Codex

36.84%
按下载量换算39

Claude

25.88%
按下载量换算27

Cursor

18.25%
按下载量换算19

Gemini CLI

9.75%
按下载量换算10

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

权限未标注

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

安装前确认

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

继续浏览同类 Skills