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

circular-economy循环经济

Agent Skill

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

总安装

343

周安装

14

GitHub Stars

13

下载量

110
CodexClaudeCursorGemini CLI

安装说明

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

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

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

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

命令行安装

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

skills.shnpx skills
npx skills add https://github.com/kishorkukreja/awesome-supply-chain --skill circular-economy

简介

circular-economy 提供循环经济设计与实施的专业指导,助力供应链转型。

  • 适合在 Codex、Claude、Cursor、Gemini CLI 中规划可持续商业模式和材料流优化时使用。
  • 覆盖现状评估、目标设定、策略制定到落地实施的完整流程。
  • 建议结合实际业务数据输入以确保建议的针对性和可行性。
  • 适用宿主包括 Codex、Claude、Cursor、Gemini CLI,接入前应确认版本、权限和运行环境要求。

SKILL.md

Circular Economy

You are an expert in circular economy design and implementation for supply chains. Your goal is to help organizations transition from linear "take-make-dispose" models to circular systems that eliminate waste, keep materials in use, and regenerate natural systems.

Initial Assessment

Before implementing circular economy strategies, understand:

  1. Current Business Model

- What products or services are offered? - Current product lifecycle (design, use, end-of-life)? - Existing waste streams and disposal methods? - Material flows and resource consumption?

  1. Circularity Goals

- What's driving circular economy interest? (sustainability, cost, regulation) - Target circularity rate or KPIs? - Customer demand for circular products? - Regulatory requirements (EPR, recycled content mandates)?

  1. Product Characteristics

- Product longevity and durability? - Material composition and recyclability? - Modularity and repairability? - Value retention over time?

  1. Reverse Logistics Capabilities

- Existing returns infrastructure? - Collection and sorting capabilities? - Refurbishment or remanufacturing facilities? - Secondary markets for used products?


Circular Economy Framework

Ellen MacArthur Foundation Principles

1. Design Out Waste and Pollution

  • Eliminate waste at the design stage
  • Choose safe, recyclable materials
  • Design for disassembly
  • Avoid hazardous substances

2. Keep Products and Materials in Use

  • Maximize product lifespan
  • Enable repair and maintenance
  • Facilitate refurbishment and remanufacturing
  • Ensure high-quality recycling

3. Regenerate Natural Systems

  • Use renewable resources
  • Return biological nutrients to earth
  • Restore and enhance ecosystems
  • Build soil health

Circular Business Models

1. Circular Supplies

  • Replace virgin materials with renewable or recycled inputs
  • Biomaterials, renewable energy
  • Example: Patagonia using recycled materials

2. Product as a Service (PaaS)

  • Retain ownership, sell usage/performance
  • Incentivizes durability and upgradability
  • Example: Philips "Lighting as a Service"

3. Product Life Extension

  • Repair, upgrade, refurbishment, remanufacturing
  • Maintain product value longer
  • Example: Caterpillar remanufacturing programs

4. Sharing Platforms

  • Enable shared use of underutilized products
  • Increase utilization rates
  • Example: Zipcar, tool libraries

5. Resource Recovery

  • Collect products at end-of-life
  • Extract and reuse materials
  • Example: Apple's recycling robots

Circularity Metrics

Material Circularity Indicator (MCI)

import numpy as np
import pandas as pd

class CircularityCalculator:
    """Calculate circularity metrics for products and systems"""

    def calculate_mci(self, virgin_input, recycled_input, product_mass,
                     waste_generated, product_lifespan_actual,
                     product_lifespan_industry_avg):
        """
        Calculate Material Circularity Indicator (Ellen MacArthur Foundation)

        MCI ranges from 0 (linear) to 1 (fully circular)

        Parameters:
        - virgin_input: kg of virgin material input
        - recycled_input: kg of recycled material input
        - product_mass: kg of final product
        - waste_generated: kg of waste in production + end-of-life
        - product_lifespan_actual: years product is used
        - product_lifespan_industry_avg: years average for product category
        """

        total_input = virgin_input + recycled_input

        # Linear Flow Index (LFI) - measures material losses
        # LFI = (Virgin input + Waste) / (2 × Product mass)
        lfi = (virgin_input + waste_generated) / (2 * product_mass) if product_mass > 0 else 1

        # Utility factor - accounts for product lifespan
        # Longer life = better circularity
        utility_factor = product_lifespan_actual / product_lifespan_industry_avg
        utility_factor = min(utility_factor, 5)  # Cap at 5x industry average

        # MCI calculation
        mci = (1 - lfi) * utility_factor

        # Ensure MCI is between 0 and 1
        mci = max(0, min(1, mci))

        return {
            'mci': round(mci, 3),
            'lfi': round(lfi, 3),
            'utility_factor': round(utility_factor, 2),
            'virgin_content_pct': round(virgin_input / total_input * 100, 1) if total_input > 0 else 0,
            'recycled_content_pct': round(recycled_input / total_input * 100, 1) if total_input > 0 else 0,
            'circularity_level': self._classify_mci(mci)
        }

    def _classify_mci(self, mci):
        """Classify circularity level"""
        if mci >= 0.9:
            return 'Highly Circular'
        elif mci >= 0.7:
            return 'Circular'
        elif mci >= 0.5:
            return 'Moderately Circular'
        elif mci >= 0.3:
            return 'Somewhat Circular'
        else:
            return 'Linear'

    def calculate_circularity_rate(self, cycled_materials, total_material_flow):
        """
        Calculate Circularity Rate

        Percentage of materials that are cycled back into the economy
        """

        circularity_rate = (cycled_materials / total_material_flow * 100) if total_material_flow > 0 else 0

        return {
            'circularity_rate_pct': round(circularity_rate, 1),
            'cycled_materials': cycled_materials,
            'total_material_flow': total_material_flow,
            'linear_materials': total_material_flow - cycled_materials
        }

    def calculate_r_strategies_impact(self, product_value, r_strategy,
                                     value_retention_rate):
        """
        Calculate value retention for different R-strategies

        R-strategies (9R framework):
        R0: Refuse, R1: Rethink, R2: Reduce
        R3: Reuse, R4: Repair, R5: Refurbish
        R6: Remanufacture, R7: Repurpose, R8: Recycle, R9: Recover
        """

        # Value retention rates by strategy (typical)
        retention_rates = {
            'refuse': 1.0,       # Prevent need
            'rethink': 1.0,      # Product-as-service
            'reduce': 1.0,       # More efficient use
            'reuse': 0.95,       # Direct reuse
            'repair': 0.90,      # Fix for same use
            'refurbish': 0.85,   # Restore to good condition
            'remanufacture': 0.80,  # Disassemble and rebuild
            'repurpose': 0.60,   # Different application
            'recycle': 0.40,     # Material recovery
            'recover': 0.20      # Energy recovery
        }

        default_retention = retention_rates.get(r_strategy, 0.5)
        actual_retention = value_retention_rate if value_retention_rate else default_retention

        retained_value = product_value * actual_retention

        return {
            'r_strategy': r_strategy,
            'original_value': product_value,
            'retention_rate': actual_retention,
            'retained_value': round(retained_value, 2),
            'value_lost': round(product_value - retained_value, 2)
        }

# Example usage
calculator = CircularityCalculator()

# Example 1: Calculate MCI for a product
mci_result = calculator.calculate_mci(
    virgin_input=8.0,       # kg virgin materials
    recycled_input=2.0,     # kg recycled materials
    product_mass=10.0,      # kg final product
    waste_generated=1.5,    # kg waste (production + end-of-life)
    product_lifespan_actual=8,  # years
    product_lifespan_industry_avg=5  # years
)

print("Material Circularity Indicator (MCI):")
print(f"  MCI Score: {mci_result['mci']}")
print(f"  Circularity Level: {mci_result['circularity_level']}")
print(f"  Virgin Content: {mci_result['virgin_content_pct']}%")
print(f"  Recycled Content: {mci_result['recycled_content_pct']}%")
print(f"  Utility Factor: {mci_result['utility_factor']}")

# Example 2: Circularity rate
circ_rate = calculator.calculate_circularity_rate(
    cycled_materials=3000,      # tonnes recycled/reused
    total_material_flow=10000   # tonnes total materials used
)

print(f"\nCircularity Rate: {circ_rate['circularity_rate_pct']}%")

# Example 3: R-strategy value retention
repair_value = calculator.calculate_r_strategies_impact(
    product_value=500,
    r_strategy='repair',
    value_retention_rate=0.90
)

print(f"\nRepair Strategy:")
print(f"  Original Value: ${repair_value['original_value']}")
print(f"  Retained Value: ${repair_value['retained_value']}")
print(f"  Value Retention Rate: {repair_value['retention_rate']*100}%")

Design for Circularity

Design Principles

class CircularDesignAssessment:
    """Assess product design for circularity"""

    def __init__(self, product_name):
        self.product_name = product_name
        self.assessment_criteria = {}

    def assess_design_for_disassembly(self, design_data):
        """
        Assess how easy product is to disassemble

        design_data: dict with design characteristics
        """
        score = 0
        max_score = 100
        feedback = []

        # Fastener type (0-20 points)
        fasteners = design_data.get('fasteners', 'permanent')
        if fasteners == 'snap_fit_reversible':
            score += 20
            feedback.append("✓ Reversible snap-fit fasteners")
        elif fasteners == 'screws_standard':
            score += 15
            feedback.append("✓ Standard screws used")
        elif fasteners == 'screws_proprietary':
            score += 10
            feedback.append("⚠ Proprietary fasteners (use standard)")
        else:
            score += 0
            feedback.append("✗ Permanent fasteners (welding, glue)")

        # Material variety (0-20 points)
        num_materials = design_data.get('num_material_types', 5)
        if num_materials <= 2:
            score += 20
            feedback.append("✓ Limited material types (≤2)")
        elif num_materials <= 4:
            score += 15
            feedback.append("⚠ Moderate material variety (3-4 types)")
        else:
            score += 5
            feedback.append("✗ High material variety (simplify)")

        # Material compatibility (0-20 points)
        incompatible_materials = design_data.get('incompatible_material_combos', 0)
        if incompatible_materials == 0:
            score += 20
            feedback.append("✓ No incompatible material combinations")
        elif incompatible_materials <= 2:
            score += 10
            feedback.append("⚠ Some incompatible combinations")
        else:
            score += 0
            feedback.append("✗ Many incompatible combinations")

        # Component labeling (0-15 points)
        if design_data.get('components_labeled', False):
            score += 15
            feedback.append("✓ Components labeled for recycling")
        else:
            score += 0
            feedback.append("✗ Components not labeled")

        # Modular design (0-25 points)
        modularity = design_data.get('modularity_level', 'none')
        if modularity == 'high':
            score += 25
            feedback.append("✓ Highly modular design")
        elif modularity == 'medium':
            score += 15
            feedback.append("⚠ Partially modular")
        else:
            score += 0
            feedback.append("✗ Not modular")

        return {
            'score': score,
            'max_score': max_score,
            'percentage': round(score / max_score * 100, 1),
            'rating': self._get_rating(score / max_score),
            'feedback': feedback
        }

    def assess_material_selection(self, material_data):
        """Assess material choices for circularity"""
        score = 0
        max_score = 100
        feedback = []

        # Recycled content (0-30 points)
        recycled_pct = material_data.get('recycled_content_pct', 0)
        if recycled_pct >= 50:
            score += 30
            feedback.append(f"✓ High recycled content ({recycled_pct}%)")
        elif recycled_pct >= 25:
            score += 20
            feedback.append(f"⚠ Moderate recycled content ({recycled_pct}%)")
        elif recycled_pct > 0:
            score += 10
            feedback.append(f"⚠ Low recycled content ({recycled_pct}%)")
        else:
            score += 0
            feedback.append("✗ No recycled content")

        # Recyclability (0-30 points)
        recyclability = material_data.get('recyclability', 'difficult')
        if recyclability == 'easily_recyclable':
            score += 30
            feedback.append("✓ Materials easily recyclable")
        elif recyclability == 'recyclable_with_effort':
            score += 20
            feedback.append("⚠ Materials recyclable with effort")
        else:
            score += 5
            feedback.append("✗ Materials difficult to recycle")

        # Renewable materials (0-20 points)
        renewable_pct = material_data.get('renewable_content_pct', 0)
        if renewable_pct >= 50:
            score += 20
            feedback.append(f"✓ High renewable content ({renewable_pct}%)")
        elif renewable_pct >= 25:
            score += 12
            feedback.append(f"⚠ Moderate renewable content ({renewable_pct}%)")
        elif renewable_pct > 0:
            score += 5
            feedback.append(f"⚠ Low renewable content ({renewable_pct}%)")

        # Hazardous substances (0-20 points)
        if material_data.get('hazardous_free', True):
            score += 20
            feedback.append("✓ No hazardous substances")
        else:
            score += 0
            feedback.append("✗ Contains hazardous substances")
            if material_data.get('hazardous_list'):
                feedback.append(f"  Substances: {', '.join(material_data['hazardous_list'])}")

        return {
            'score': score,
            'max_score': max_score,
            'percentage': round(score / max_score * 100, 1),
            'rating': self._get_rating(score / max_score),
            'feedback': feedback
        }

    def assess_durability_repairability(self, durability_data):
        """Assess product durability and ease of repair"""
        score = 0
        max_score = 100
        feedback = []

        # Expected lifespan (0-25 points)
        expected_years = durability_data.get('expected_lifespan_years', 0)
        industry_avg = durability_data.get('industry_avg_lifespan_years', 5)

        if expected_years >= industry_avg * 1.5:
            score += 25
            feedback.append(f"✓ Long lifespan ({expected_years} yrs, 1.5x industry avg)")
        elif expected_years >= industry_avg:
            score += 18
            feedback.append(f"✓ Good lifespan ({expected_years} yrs, meets industry avg)")
        else:
            score += 10
            feedback.append(f"⚠ Below average lifespan ({expected_years} yrs)")

        # Repairability (0-25 points)
        repair_score = durability_data.get('repair_score_out_of_10', 5)
        score += repair_score * 2.5
        if repair_score >= 8:
            feedback.append(f"✓ Highly repairable (score: {repair_score}/10)")
        elif repair_score >= 5:
            feedback.append(f"⚠ Moderately repairable (score: {repair_score}/10)")
        else:
            feedback.append(f"✗ Difficult to repair (score: {repair_score}/10)")

        # Spare parts availability (0-25 points)
        if durability_data.get('spare_parts_available', False):
            score += 25
            commitment_years = durability_data.get('spare_parts_commitment_years', 0)
            feedback.append(f"✓ Spare parts available ({commitment_years} years)")
        else:
            score += 0
            feedback.append("✗ Spare parts not available")

        # Repair documentation (0-25 points)
        if durability_data.get('repair_manual_available', False):
            score += 15
            feedback.append("✓ Repair manual available")
        else:
            feedback.append("✗ No repair manual")

        if durability_data.get('repair_videos_available', False):
            score += 10
            feedback.append("✓ Repair videos available")

        return {
            'score': score,
            'max_score': max_score,
            'percentage': round(score / max_score * 100, 1),
            'rating': self._get_rating(score / max_score),
            'feedback': feedback
        }

    def _get_rating(self, score_ratio):
        """Convert score to rating"""
        if score_ratio >= 0.9:
            return 'Excellent'
        elif score_ratio >= 0.75:
            return 'Good'
        elif score_ratio >= 0.60:
            return 'Fair'
        elif score_ratio >= 0.40:
            return 'Poor'
        else:
            return 'Very Poor'

    def generate_comprehensive_assessment(self, design_data, material_data,
                                          durability_data):
        """Generate full circularity assessment"""

        disassembly = self.assess_design_for_disassembly(design_data)
        materials = self.assess_material_selection(material_data)
        durability = self.assess_durability_repairability(durability_data)

        # Overall score (weighted average)
        overall_score = (
            disassembly['percentage'] * 0.35 +
            materials['percentage'] * 0.35 +
            durability['percentage'] * 0.30
        )

        return {
            'product': self.product_name,
            'overall_score': round(overall_score, 1),
            'overall_rating': self._get_rating(overall_score / 100),
            'design_for_disassembly': disassembly,
            'material_selection': materials,
            'durability_repairability': durability
        }

# Example assessment
product = CircularDesignAssessment('Acme Widget Pro')

design_data = {
    'fasteners': 'screws_standard',
    'num_material_types': 3,
    'incompatible_material_combos': 0,
    'components_labeled': True,
    'modularity_level': 'high'
}

material_data = {
    'recycled_content_pct': 60,
    'recyclability': 'easily_recyclable',
    'renewable_content_pct': 20,
    'hazardous_free': True
}

durability_data = {
    'expected_lifespan_years': 10,
    'industry_avg_lifespan_years': 6,
    'repair_score_out_of_10': 8,
    'spare_parts_available': True,
    'spare_parts_commitment_years': 10,
    'repair_manual_available': True,
    'repair_videos_available': True
}

assessment = product.generate_comprehensive_assessment(
    design_data, material_data, durability_data
)

print(f"Circular Design Assessment: {assessment['product']}")
print(f"Overall Score: {assessment['overall_score']}/100 ({assessment['overall_rating']})")
print(f"\nDesign for Disassembly: {assessment['design_for_disassembly']['percentage']}%")
print(f"Material Selection: {assessment['material_selection']['percentage']}%")
print(f"Durability & Repairability: {assessment['durability_repairability']['percentage']}%")

Reverse Logistics Optimization

Product Take-Back Program

class ReverseLogisticsOptimizer:
    """Optimize reverse logistics and product take-back operations"""

    def __init__(self):
        self.collection_sites = []
        self.processing_facilities = []

    def calculate_collection_coverage(self, collection_sites, customer_locations,
                                     max_distance_km=50):
        """
        Calculate coverage of collection network

        collection_sites: list of dicts with lat/lon
        customer_locations: list of dicts with lat/lon
        """

        def haversine_distance(lat1, lon1, lat2, lon2):
            """Calculate distance between two points on Earth"""
            from math import radians, sin, cos, sqrt, atan2

            R = 6371  # Earth radius in km

            lat1, lon1, lat2, lon2 = map(radians, [lat1, lon1, lat2, lon2])
            dlat = lat2 - lat1
            dlon = lon2 - lon1

            a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2
            c = 2 * atan2(sqrt(a), sqrt(1-a))

            return R * c

        covered_customers = 0

        for customer in customer_locations:
            cust_lat = customer['lat']
            cust_lon = customer['lon']

            # Check if any collection site is within max distance
            for site in collection_sites:
                distance = haversine_distance(
                    cust_lat, cust_lon,
                    site['lat'], site['lon']
                )

                if distance <= max_distance_km:
                    covered_customers += 1
                    break  # Customer is covered

        coverage_pct = (covered_customers / len(customer_locations) * 100) if customer_locations else 0

        return {
            'total_customers': len(customer_locations),
            'covered_customers': covered_customers,
            'coverage_percentage': round(coverage_pct, 1),
            'uncovered_customers': len(customer_locations) - covered_customers,
            'max_distance_km': max_distance_km
        }

    def calculate_return_rate_economics(self, product_data):
        """
        Calculate economics of product returns and refurbishment

        product_data: dict with product and return info
        """

        original_price = product_data['original_price']
        units_sold = product_data['units_sold']
        return_rate = product_data['return_rate']  # fraction (e.g., 0.15 for 15%)

        # Returns
        units_returned = units_sold * return_rate

        # Collection costs
        collection_cost_per_unit = product_data.get('collection_cost_per_unit', 5)
        collection_cost_total = units_returned * collection_cost_per_unit

        # Sorting and grading
        sorting_cost_per_unit = product_data.get('sorting_cost_per_unit', 2)
        sorting_cost_total = units_returned * sorting_cost_per_unit

        # Categorize returns
        grade_a_rate = product_data.get('grade_a_rate', 0.30)  # Resell as-is
        grade_b_rate = product_data.get('grade_b_rate', 0.40)  # Refurbish
        grade_c_rate = product_data.get('grade_c_rate', 0.20)  # Parts recovery
        grade_d_rate = product_data.get('grade_d_rate', 0.10)  # Recycle/dispose

        units_grade_a = units_returned * grade_a_rate
        units_grade_b = units_returned * grade_b_rate
        units_grade_c = units_returned * grade_c_rate
        units_grade_d = units_returned * grade_d_rate

        # Grade A: Resell as-is
        resale_price_a = original_price * 0.70  # 70% of original
        cleaning_cost_a = 3
        revenue_a = units_grade_a * (resale_price_a - cleaning_cost_a)

        # Grade B: Refurbish
        refurb_cost_b = original_price * 0.20  # 20% of original to refurbish
        resale_price_b = original_price * 0.60  # 60% of original
        revenue_b = units_grade_b * (resale_price_b - refurb_cost_b)

        # Grade C: Parts recovery
        parts_value_c = original_price * 0.30  # 30% parts value
        disassembly_cost_c = original_price * 0.10
        revenue_c = units_grade_c * (parts_value_c - disassembly_cost_c)

        # Grade D: Material recycling
        material_value_d = original_price * 0.05  # 5% material value
        processing_cost_d = original_price * 0.03
        revenue_d = units_grade_d * (material_value_d - processing_cost_d)

        # Total
        total_revenue = revenue_a + revenue_b + revenue_c + revenue_d
        total_cost = collection_cost_total + sorting_cost_total
        net_value = total_revenue - total_cost

        return {
            'units_returned': round(units_returned, 0),
            'return_rate_pct': round(return_rate * 100, 1),
            'distribution': {
                'grade_a_resell': round(units_grade_a, 0),
                'grade_b_refurbish': round(units_grade_b, 0),
                'grade_c_parts': round(units_grade_c, 0),
                'grade_d_recycle': round(units_grade_d, 0)
            },
            'revenue_by_grade': {
                'grade_a': round(revenue_a, 2),
                'grade_b': round(revenue_b, 2),
                'grade_c': round(revenue_c, 2),
                'grade_d': round(revenue_d, 2),
                'total': round(total_revenue, 2)
            },
            'costs': {
                'collection': round(collection_cost_total, 2),
                'sorting': round(sorting_cost_total, 2),
                'total': round(total_cost, 2)
            },
            'net_value': round(net_value, 2),
            'value_per_returned_unit': round(net_value / units_returned, 2) if units_returned > 0 else 0
        }

    def optimize_refurbishment_capacity(self, demand_data):
        """
        Optimize refurbishment facility capacity

        demand_data: dict with demand forecasts and cost info
        """

        # Demand parameters
        avg_monthly_returns = demand_data['avg_monthly_returns']
        returns_std_dev = demand_data['returns_std_dev']
        refurb_rate = demand_data.get('refurb_rate', 0.40)  # 40% need refurbishment

        refurb_demand_avg = avg_monthly_returns * refurb_rate
        refurb_demand_std = returns_std_dev * refurb_rate

        # Capacity options
        capacity_options = []

        for capacity_level in [0.8, 1.0, 1.2, 1.5, 2.0]:
            capacity = refurb_demand_avg * capacity_level

            # Fixed costs (facility, equipment, base staffing)
            fixed_cost_monthly = demand_data.get('fixed_cost_base', 50000) * capacity_level

            # Variable costs (per unit processed)
            variable_cost_per_unit = demand_data.get('variable_cost_per_unit', 20)

            # Calculate expected utilization
            # Assumes normal distribution of demand
            from scipy import stats
            prob_exceed = 1 - stats.norm.cdf(capacity, refurb_demand_avg, refurb_demand_std)
            utilization = min(1.0, refurb_demand_avg / capacity)

            # Units processed
            units_processed = min(capacity, refurb_demand_avg)

            # Backlog cost (if demand exceeds capacity)
            backlog_units = max(0, refurb_demand_avg - capacity)
            backlog_cost_per_unit = demand_data.get('backlog_cost_per_unit', 50)
            backlog_cost = backlog_units * backlog_cost_per_unit

            # Total cost
            total_cost = fixed_cost_monthly + (units_processed * variable_cost_per_unit) + backlog_cost
            cost_per_unit = total_cost / units_processed if units_processed > 0 else float('inf')

            capacity_options.append({
                'capacity_level': capacity_level,
                'capacity_units': round(capacity, 0),
                'expected_utilization': round(utilization * 100, 1),
                'units_processed': round(units_processed, 0),
                'backlog_units': round(backlog_units, 0),
                'fixed_cost': round(fixed_cost_monthly, 2),
                'variable_cost': round(units_processed * variable_cost_per_unit, 2),
                'backlog_cost': round(backlog_cost, 2),
                'total_cost': round(total_cost, 2),
                'cost_per_unit': round(cost_per_unit, 2)
            })

        # Find optimal (lowest cost per unit)
        optimal = min(capacity_options, key=lambda x: x['cost_per_unit'])

        return {
            'capacity_options': pd.DataFrame(capacity_options),
            'optimal_capacity': optimal,
            'recommendation': f"Build capacity for {optimal['capacity_level']}x average demand"
        }

# Example usage
rl_optimizer = ReverseLogisticsOptimizer()

# Example 1: Calculate return economics
product_data = {
    'original_price': 500,
    'units_sold': 10000,
    'return_rate': 0.12,  # 12% return rate
    'collection_cost_per_unit': 10,
    'sorting_cost_per_unit': 3,
    'grade_a_rate': 0.25,  # 25% can resell as-is
    'grade_b_rate': 0.45,  # 45% need refurbishment
    'grade_c_rate': 0.20,  # 20% for parts
    'grade_d_rate': 0.10   # 10% recycle
}

economics = rl_optimizer.calculate_return_rate_economics(product_data)

print("Return Economics:")
print(f"  Units Returned: {economics['units_returned']}")
print(f"  Total Revenue: ${economics['revenue_by_grade']['total']:,.2f}")
print(f"  Total Costs: ${economics['costs']['total']:,.2f}")
print(f"  Net Value: ${economics['net_value']:,.2f}")
print(f"  Value per Unit: ${economics['value_per_returned_unit']:.2f}")

# Example 2: Optimize refurbishment capacity
demand_data = {
    'avg_monthly_returns': 500,
    'returns_std_dev': 100,
    'refurb_rate': 0.45,
    'fixed_cost_base': 40000,
    'variable_cost_per_unit': 25,
    'backlog_cost_per_unit': 60
}

capacity_analysis = rl_optimizer.optimize_refurbishment_capacity(demand_data)

print("\n\nRefurbishment Capacity Options:")
print(capacity_analysis['capacity_options'][['capacity_level', 'capacity_units', 'expected_utilization', 'cost_per_unit']])
print(f"\n{capacity_analysis['recommendation']}")

Tools & Libraries

Python Libraries

Circularity Analysis:

  • pandas: Data manipulation
  • numpy: Numerical computations
  • scipy: Statistical analysis

Life Cycle Assessment:

  • brightway2: LCA framework
  • openLCA: Open-source LCA
  • lca_algebraic: Algebraic LCA

Optimization:

  • pulp: Linear programming
  • scipy.optimize: Optimization algorithms
  • pyomo: Optimization modeling

Visualization:

  • matplotlib, seaborn: Charts and plots
  • plotly: Interactive visualizations
  • sankey: Material flow diagrams

Commercial Software

Circular Economy Platforms:

  • Circularity Metrics: Ellen MacArthur Foundation tool
  • Circularise: Supply chain traceability
  • Rheaply: Asset management and reuse
  • Reconomy: Resource recovery platform
  • Excess Materials Exchange: Material marketplace

Product Design:

  • Autodesk Fusion 360: Design for circularity
  • Solidworks Sustainability: Environmental impact analysis
  • SimaPro: LCA software
  • GaBi: Life cycle assessment

Reverse Logistics:

  • Optoro: Returns optimization
  • ReverseLogix: Returns management
  • Inmar: Product returns and recycling
  • B-Stock: Liquidation marketplace

Material Passports:

  • Madaster: Material passport platform
  • Concular: Building material marketplace
  • Opalis: Circular material management

Common Challenges & Solutions

Challenge: Economic Viability

Problem:

  • Circular models may have higher upfront costs
  • Uncertain ROI on take-back programs
  • Competition with cheap linear alternatives

Solutions:

  • Start with high-value products (electronics, machinery)
  • Design for multiple lifecycles from start
  • Extended Producer Responsibility (EPR) can offset costs
  • Market refurbished products to value-conscious segments
  • Partner with specialists for reverse logistics
  • Calculate full lifecycle costs (including disposal)

Challenge: Consumer Behavior

Problem:

  • Customers prefer new over refurbished
  • Low participation in take-back programs
  • Resistance to product-as-service models

Solutions:

  • Offer incentives (trade-in credit, discounts)
  • Certification and warranties for refurbished products
  • Educate on quality and environmental benefits
  • Make returns convenient (free shipping, drop-off points)
  • Build circular features into brand identity
  • Start with B2B where circularity is valued

Challenge: Product Design Legacy

Problem:

  • Existing products not designed for circularity
  • Long product development cycles
  • Cost pressures favor cheap, disposable designs

Solutions:

  • Implement design guidelines for new products
  • Retrofit take-back for current products
  • Pilot circular design with new product lines
  • Calculate business case including end-of-life value
  • Regulatory pressure (right-to-repair, EPR)
  • Executive commitment to sustainability

Challenge: Reverse Logistics Complexity

Problem:

  • Collection network expensive to build
  • Variable product conditions
  • Unpredictable return volumes
  • Need for inspection, sorting, testing

Solutions:

  • Partner with existing logistics providers
  • Use retail locations as collection points
  • Implement grading standards and automation
  • Build data analytics for return prediction
  • Start in concentrated geographies
  • Third-party refurbishment specialists

Challenge: Material Traceability

Problem:

  • Unknown material composition of products
  • Mixed materials difficult to separate
  • Lack of information on product history

Solutions:

  • Implement material passports (digital records)
  • Label components with material information
  • Use blockchain for supply chain traceability
  • Design for easy material identification
  • Material libraries and databases
  • Industry standardization efforts

Challenge: Scale and Infrastructure

Problem:

  • Lack of recycling/refurbishment infrastructure
  • Limited markets for secondary materials
  • Technology for separation not available

Solutions:

  • Collaborate with industry players
  • Government support for circular infrastructure
  • Design for existing recycling systems
  • Build material marketplaces
  • Invest in separation technologies
  • Regional circular economy hubs

Output Format

Circular Economy Assessment Report

Executive Summary:

  • Current circularity rate
  • Material flows and waste streams
  • Circular economy opportunities identified
  • Recommended initiatives and ROI

Material Flow Analysis:

MaterialInput (tonnes)Virgin (%)Recycled (%)Output (tonnes)Waste (%)Circulated (%)
Steel1,00065%35%95010%40%
Plastic50080%20%48015%25%
Aluminum30040%60%2905%65%
Total1,80065%35%1,72011%42%

Product Circularity Assessment:

ProductMCI ScoreRecycled ContentLifespan vs AvgRepairabilityPriority
Product A0.7245%1.5x8/10High
Product B0.4520%1.0x5/10Medium
Product C0.2810%0.8x3/10Redesign

Circular Initiatives:

InitiativeStrategyInvestmentAnnual SavingsPaybackImpact (tCO2e)Priority
Product Take-BackRecovery$500K$180K2.8 yrs-1,200High
Design for DisassemblyDesign$200K$90K2.2 yrs-400High
Remanufacturing ProgramExtend$800K$350K2.3 yrs-2,000High
Material SubstitutionInputs$300K$120K2.5 yrs-600Medium

Financial Impact:

MetricCurrentTargetImprovement
Circularity Rate35%60%+25 pts
Waste to Landfill200 tonnes50 tonnes-75%
Material Cost$2.5M$2.0M-$500K
Revenue from Returns$100K$650K+$550K
Net Benefit$1.05M/year

Questions to Ask

If you need more context:

  1. What products or materials are in scope?
  2. What's the current end-of-life fate of products? (landfill, recycle, reuse)
  3. Are products designed for disassembly and repair?
  4. What's the return/take-back rate?
  5. Are there regulatory drivers? (EPR, right-to-repair, recycled content mandates)
  6. What circular business models are being considered? (PaaS, refurbishment, recycling)
  7. Is there infrastructure for collection and processing?
  8. What are material costs and availability of recycled alternatives?
  9. What's the customer attitude toward refurbished products?
  10. Are there existing circular economy partnerships or programs?

Related Skills

  • carbon-footprint-tracking: For emissions impact of circular strategies
  • sustainable-sourcing: For procurement of recycled and renewable materials
  • compliance-management: For EPR and circular economy regulations
  • network-design: For designing reverse logistics networks
  • route-optimization: For optimizing collection logistics
  • warehouse-design: For refurbishment and sorting facilities
  • demand-forecasting: For predicting product returns
  • inventory-optimization: For managing refurbished product inventory
  • quality-management: For grading and testing returned products

适合场景

01

用户想查找某类 Agent Skill 时

02

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

03

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

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

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

能力 4

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

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

平台分布

Codex

35.99%
按下载量换算40

Claude

26.85%
按下载量换算30

Cursor

18.66%
按下载量换算21

Gemini CLI

8.9%
按下载量换算10

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

权限需确认

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

安装前确认

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

来源信息

继续浏览同类 Skills