xiaoxiao123
发布于 2026-03-31 / 4 阅读
0

Solar Heliostat Field Optimization Design

Solar Heliostat Field Optimization Design

GitHub stars
Matlab
License

English | 中文


📋 Project Overview

This project provides a complete solution for the 2023 China Undergraduate Mathematical Contest in Modeling (CUMCM) Problem A - Solar Heliostat Field Optimization Design. It includes comprehensive analysis of optical efficiency, mathematical modeling, MATLAB implementation, and optimization algorithms for concentrating solar power (CSP) systems.

🎯 Contest Information

Item Details
Contest China Undergraduate Mathematical Contest in Modeling (CUMCM)
Year 2023
Problem A
Topic Solar Heliostat Field Optimization Design
Domain Solar Energy / Optical Engineering / Optimization

🧠 Technical Background

Problem Statement

Concentrating Solar Power (CSP) systems use mirrors (heliostats) to reflect sunlight onto a central receiver tower. The efficiency of such systems depends on multiple factors:

  1. Cosine Efficiency: Loss due to the angle between sunlight and heliostat surface
  2. Shadowing & Blocking Efficiency: Loss due to mutual shading between heliostats
  3. Truncation Efficiency: Loss due to limited receiver size
  4. Atmospheric Transmission: Loss due to air absorption and scattering

This project calculates these efficiency factors and optimizes the heliostat field layout to maximize the average thermal power output per unit mirror area.

Key Parameters

Parameter Value Description
Location Longitude 98.5°E, Latitude 39.4°N High-altitude solar site
Altitude 3000 m High-altitude location
Tower Height 80 m Receiver tower height
Heliostat Size 6m × 6m Mirror dimensions
Heliostat Height 4 m Installation height
Receiver Radius 350 m Field radius

📁 Project Structure

cumcm2023a/
├── src/ # MATLAB Source Code
│ ├── problem1/ # Problem 1: Optical Efficiency Calculation
│ │ ├── main.m # Main program
│ │ ├── DNICal.m # Direct Normal Irradiance calculation
│ │ ├── Fdircal.m # Direction vector calculation
│ │ ├── natcal.m # Atmospheric transmittance
│ │ ├── shaddec.m # Shadowing & blocking detection
│ │ ├── axisrot.m # Coordinate system rotation
│ │ ├── axisrot_d.m # Rotation matrix (direct)
│ │ ├── axisrot_dI.m # Inverse rotation
│ │ ├── ReflectLoc.mat # Heliostat positions (MAT format)
│ │ └── 附件.xlsx # Original data file
│ │
│ ├── problem2/ # Problem 2: Layout Optimization
│ │ ├── main.m # PSO optimization main program
│ │ ├── PSO.m # Particle Swarm Optimization
│ │ ├── fobj.m # Objective function
│ │ └── *.png/xlsx # Results
│ │
│ └── problem3/ # Problem 3: Analysis & Visualization

├── docs/ # Documentation
│ ├── A题.pdf # Contest Problem (PDF)
│ ├── A题的公式和思路文档总结.docx # Solution Summary
│ ├── ARCHITECTURE.md
│ ├── DEVELOPMENT.md
│ └── USER_GUIDE.md

├── data/ # Shared Data
│ └── 附件.xlsx # Heliostat coordinates

├── results/ # Output Results
│ ├── result2.xlsx # Problem 2 results
│ └── result3.xlsx # Problem 3 results

└── reference/ # Reference Materials
└── A代码视频讲解.mkv # Code Explanation Video

---

## 🔬 Algorithm Details

### 1. Solar Position Calculation

```matlab
% Calculate solar declination angle
sigma = asin(sin(2*pi*D/365)*sin(2*pi/360*23.45));

% Solar elevation angle
alphas = asin(cos(sigma)*cos(latitude)*cos(w) + sin(sigma)*sin(latitude));

% Solar azimuth angle
gammas = acos((sin(sigma)-sin(alphas)*sin(latitude))/(cos(alphas)*cos(latitude)));

2. Optical Efficiency Components

Cosine Efficiency

n_{cos} = \vec{S} \cdot \vec{R}

Where \vec{S} is the solar direction vector and \vec{R} is the reflected ray direction.

Shadowing & Blocking

Using coordinate transformation and ray tracing:

  1. Transform coordinates to heliostat local frame
  2. Project shadow-casting elements onto the target plane
  3. Detect intersection with heliostat surface

Atmospheric Transmittance

n_{at} = natcal(d)

Where d is the distance from heliostat to receiver.

3. Particle Swarm Optimization (PSO)

% PSO parameters
w = 0.729;    % Inertia weight
c1 = 1.49445; % Cognitive coefficient
c2 = 1.49445; % Social coefficient

% Update velocity
v(i+1) = w*v(i) + c1*rand()*(pbest-x(i)) + c2*rand()*(gbest-x(i));

% Update position
x(i+1) = x(i) + v(i+1);

4. Coordinate System Transformation

% Transform to local heliostat coordinate system
[ReflectLoc0new] = axisrot_d(ReflectLoc0', ReflFdir');

🚀 Usage Guide

Environment Requirements

Requirement Version Notes
MATLAB R2018a or higher Core simulation platform
Toolboxes None required Uses basic MATLAB functions

Running Simulations

Problem 1 - Optical Efficiency Calculation:

cd src/problem1
main

Problem 2 - Layout Optimization:

cd src/problem2
main    % Run PSO optimization (may take significant time)

Problem 3 - Results Analysis:

cd src/problem3
main

Output Files

Results are automatically saved to:

  • src/problem1/*.fig / *.mat - Efficiency calculation results
  • src/problem2/*.xlsx / *.png - Optimization results
  • src/problem3/ - Analysis and visualization

📊 Simulation Results

Key Findings

Month Avg Optical Efficiency Avg Cosine Efficiency Avg Shadowing Avg Truncation
Jan ~0.52 ~0.82 ~0.95 ~0.98
Jun ~0.58 ~0.88 ~0.96 ~0.98
Annual ~0.55 ~0.85 ~0.95 ~0.98

Optimization Results

  • Objective: Maximize average thermal power per unit mirror area
  • Method: Particle Swarm Optimization (PSO)
  • Optimized Layout: Improved heliostat positioning reduces shadowing and blocking

📚 Mathematical Models

Annual Average Output Power

P_{avg} = \frac{1}{12}\sum_{i=1}^{12}\sum_{j=1}^{5} E_{ij}

Where:

E_{ij} = \frac{n_{ij} \cdot DNI_{ij} \cdot A_{mirror}}{A_{field}}

Optical Efficiency

n_{total} = n_{cos} \cdot n_{shadow} \cdot n_{trunc} \cdot n_{at} \cdot n_{ref}

👥 Authors

  • QCLAW - Project organization and documentation

📄 License

All Rights Reserved

This project is provided for educational and research purposes only. Commercial use requires explicit permission from the original authors.


🙏 Acknowledgments

  • 2023 CUMCM Organizing Committee
  • China Solar Thermal Industry

Built with MATLAB 💙