File Exchange

image thumbnail

Shuffled Complex Evolution (SCE-UA) Method

version (420 KB) by Qingyun Duan
An efficient and robuse global optimization method.


Updated 17 May 2005

No License

The SCE-UA method is a general purpose global optimization program. It was originally developed by Dr. Qingyun Duan as part of his doctoral dissertation work at the Department of Hydrology
and Water Resources, University of Arizona, Tucson, AZ 85721, USA. The dissertation is entitled "A Global Optimization Strategy for Efficient and Effective Calibration of Hydrologic Models". The program has since been modified to make it easier for use on problems of users' interests. The algorithm has been described in detail in an article entitled "Effective and Efficient Global Optimization for Conceptual Rainfall-Runoff Models", Water Resources Research, Vol 28(4), pp.1015-1031, 1992; and in an article entitled "A Shuffled Complex Evolution Approach for Effective and Efficient Global Minimization" by Q. Duan, V.K. Gupta and S. Sorooshian, Journal of Optimization Theory and its Applications, Vol 76(3), pp 501-521, 1993. A paper entitled "Optimal Use of the SCE-UA Global Optimization Method for Calibrating Watershed Models", by Q. Duan, S. Sorooshian, & V.K. Gupta, Journal of Hydrology, Vol.158, 265-284, 1994, discussed how to use the SCE-UA Method in an efficient and effective manner. The SCE-UA algorithm is also briefly described in the accompanying ASCii file 'CONCEPT_SCE.txt' contained in this package.

Comments and Ratings (32)

Song Liu


Hello, I am thinking to use this method to study the dips calculated in reservoir frac reservoirs for efficiency evaluation. Could anyone help to solve this problem? thank you so much.



saida ghrab

Hello actually I am using Shuffled Complex Evolution (SCE-UA) to calibrate my hydrological model and I am trying to save the optimized values of my objective functions and parameters after every iteration Could anyone help to solve this problem? And thank you so much

I am trying to use this to optimize the calibration process for HyMOD rainfall-runoff model by maximizing NSE. I would like someone to guide me through the process

I want to do some global optimization. I am so glad it is already here


hello.... I want to optimize the 5 parameters of HYMOD rainfall runoff model using sce-ua method using RMSE objective function. How can I start with if I have the ranges of all the 5 parameters? I mean how should I give the input range of parameters.

Feng Li

Zhenhai Li



Dear Paula,
I will try to help with your problem.
The problems that SCE-UA focused is mainly on the constrained problems, which have a fixed parameter bounds,such as [2,54]. To solve your problem, i think it is able to set a very small number (10e-7) as the fixed lower bound for both a and b. Same way to deal with the upper bound. It might need to play with the algorithm parameter (Number of complexes or simplexes) to improve the computation efficiency. Hope this can help.


I have to use this optimization algorithm to minimizing a objective function like this:
error = ((((a./(a+b))-mean).^2)./(mean.^2))+(((((a.*b)./((a+b+1).*((a+b).^2)))-variance).^2)./(variance.^2))+(((((2.*(b-a).*(sqrt(a+b+1)))./((a+b+2).*(sqrt(a.*b))))-skewness).^2)./(skewness.^2))

This is a function beta with parameters a and b. I want to calculate a and b minimizing this fuction error.

I dont know how I can impose the limits of a and b in the algorithm. The limits are, a>0,b>0 and b>0.

Thanks all



Thanks a lot to share your code! Duan Laoshi


Hi I was following your Readme but the problem is that there is no funtion for the SIXPAR model. It talks about how to Use SCE-UA Method on the SIXPAR Model but there is nothing about it. Could you include SIXPAR model's code. I'm confused.

Peng Bai


Thanks a lot to share your code! Duan Laoshi :) You will find it is used in the paper I publish in the future.

thx for matlab code, a more comprehensive documentation might be useful.

Thanks alot,
Any idea, how we can incorporate this in a neural network model? For instance in newff network which uses mse as net.performFcn..

Dingzhi Peng

Very well. It's better than the Fortran and C version.

Samer Barakat

Works well and easy to use in structural engineering problems (constrained). Add plots of the steps for 2D and 3D problems.

Brecht Donckels

I used this implementation as a start to create my own implementation, which is available at

Thanks! Good job!

Sebastiaan Luyssaert

Works well and is easy to use. Documentation files are not up-to-date. Write the function/model you want to optimize in functn.m.

Jennie W

I've read your paper. Useful tool in model calibration.


no comments

Mohaned Korjie

Good response

xunkai wei

Really Good for Use!
Although seems strange to me first, Thanks!

MATLAB Release Compatibility
Created with R10
Compatible with any release
Platform Compatibility
Windows macOS Linux