Skip to content
This repository has been archived by the owner on Nov 11, 2024. It is now read-only.

Commit

Permalink
added some demonstration cases; changed the structue of code
Browse files Browse the repository at this point in the history
  • Loading branch information
KimHe committed Feb 16, 2016
1 parent 0e7e53b commit aada1c0
Show file tree
Hide file tree
Showing 20 changed files with 1,050 additions and 2,213 deletions.
1,534 changes: 0 additions & 1,534 deletions Forward/SMB.m

This file was deleted.

102 changes: 0 additions & 102 deletions Forward/getParameters.m

This file was deleted.

14 changes: 7 additions & 7 deletions Optimization/OptAlgorithms.m → OptAlgorithms.m
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ function Differential_Evolution(params)


% Simulation of the sampled points, using subroutine simulatedMovingBed
Population(:, opt.IndivSize+1) = arrayfun( @(idx) feval(@SMB.simulatedMovingBed, ...
Population(:, opt.IndivSize+1) = arrayfun( @(idx) feval(@simulatedMovingBed, ...
exp(Population(idx, 1:opt.IndivSize)) ), 1: opt.PopulSize );


Expand Down Expand Up @@ -278,7 +278,7 @@ function Differential_Evolution(params)


% Simulate the new population and compare their objective function values
tempValue(:, 1) = arrayfun(@(idx) feval( @SMB.simulatedMovingBed, exp(tempPop(idx, 1:C)) ), 1:R );
tempValue(:, 1) = arrayfun(@(idx) feval( @simulatedMovingBed, exp(tempPop(idx, 1:C)) ), 1:R );

[row, ~] = find(tempValue < Population(:,C+1));

Expand Down Expand Up @@ -496,7 +496,7 @@ function Particle_Swarm_Optimization(params)


% Simulation of the sampled points, using subroutine simulatedMovingBed
ParSwarm(: ,2 * opt.particleSize + 1) = arrayfun( @(idx) feval(@SMB.simulatedMovingBed,...
ParSwarm(: ,2 * opt.particleSize + 1) = arrayfun( @(idx) feval(@simulatedMovingBed,...
exp(ParSwarm(idx, 1:opt.particleSize)) ), 1:opt.swarmSize );

% The statistics of the population
Expand Down Expand Up @@ -614,7 +614,7 @@ function Particle_Swarm_Optimization(params)


% Simulation of the sampled points, using subroutine simulatedMovingBed
ParSwarm(row, 2*ParCol+1) = feval( @SMB.simulatedMovingBed, exp(ParSwarm(row, 1:ParCol)) );
ParSwarm(row, 2*ParCol+1) = feval( @simulatedMovingBed, exp(ParSwarm(row, 1:ParCol)) );

% if the updated position is better than the current position, the
% particle flies to the updated positon; otherwise, keep still in current position
Expand Down Expand Up @@ -953,7 +953,7 @@ function Metropolis_Adjusted_Differential_Evolution(params)


% Simulation of the sampled points, using subroutine simulatedMovingBed
initChain(:,opt.dimension+1) = arrayfun( @(idx) feval( @SMB.simulatedMovingBed, ...
initChain(:,opt.dimension+1) = arrayfun( @(idx) feval( @simulatedMovingBed, ...
exp( initChain(idx,1:opt.dimension)) ), 1: opt.Nchain);

end
Expand Down Expand Up @@ -984,7 +984,7 @@ function Metropolis_Adjusted_Differential_Evolution(params)
rho = 0;
else

newSS = feval( @SMB.simulatedMovingBed, exp(proposal) );
newSS = feval( @simulatedMovingBed, exp(proposal) );
SS = states(j, opt.dimension+1);

% rho = exp( -0.5*(newSS - SS) / sigmaSqu(j));
Expand Down Expand Up @@ -1220,7 +1220,7 @@ function Metropolis_Adjusted_Differential_Evolution(params)
end
% =============================================================================
% SMB - The Simulated Moving Bed Chromatography for separation of
% target compounds, such as fructose and glucose.
% target compounds, either binary or ternary.
%
% Author: QiaoLe He E-mail: [email protected]
%
Expand Down
108 changes: 0 additions & 108 deletions Optimization/getParameters.m

This file was deleted.

26 changes: 17 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,14 @@ The CADET-SMB is developed at the Institute of Bio- and Geosciences 1 (IBG-1) of

# Features

* Ternary separation is available, using Five-Zone technique;
* Ternary separation is available, using Five-Zone technique; Quaternary components in ternary separation is possible;
![The SMB scheme of ternary separation](https://github.com/modsim/CADET-SMB/blob/master/doc/scheme_ternary.JPG)
![Axial concentration profile in the ternary separation](https://github.com/modsim/CADET-SMB/blob/master/doc/profile_ternary.jpg)
* In ternary separation, 1-1-1-1-1, and 2-2-2-2-2 configurations are accessible;
![Axial concentration profile in the ternary separation](https://github.com/modsim/CADET-SMB/blob/master/doc/profile_ternary.JPG)
* In ternary separation, 1-1-1-1-1, 2-2-2-2-2, 3-3-3-3-3, and 4-4-4-4-4 configurations are accessible;
* Binary separation is available; Ternary components in binary separation is also possible;
* In binary separation, 1-1-1-1, 2-2-2-2, 3-3-3-3, 4-4-4-4 column configurations are available;
* In binary separation, the using of ModiCon tech is possible;
![Axial concentration profile in the binary separation](https://github.com/modsim/CADET-SMB/blob/master/doc/profile_binary.jpg)
![Axial concentration profile in the binary separation](https://github.com/modsim/CADET-SMB/blob/master/doc/profile_binary.JPG)
* MATLAB interface, you are allowed to monitor the dynamic characteristics of each column;
* Optimization of decision variables to gain benefits in productivity, purity, operating costs;
* Fit model against experimental data will come later;
Expand All @@ -43,15 +43,23 @@ Regarding the installation of CADET,

Regarding the installation of SMB,

* Make a directory, say, simulatedMovingBed, under the directory of the CADET;
* Unzip the archive to the new directory, in my case simulatedMovingBed;
* Change the directory to simulatedMovingBed and run simulatedMovingBed.m.
* Make a directory, simulatedMovingBed, under the directory of the CADET;
* Unzip the archive to the new directory, simulatedMovingBed;
* Change the directory to simulatedMovingBed
* For the forward simulation, copy one getParameter routine from the examples/Forward to the directory of simulatedMovingBed, and change the name to getParameters.m; Then run the routine, simulatedMovingBed.m.
* For the optimization case, copy one getParameter routine from the examples/Optimization to the directory of simulatedMovingBed, and also change the name to getParameters.m; Then run the routine, SMBOptimization.m.

# Demenstration

As for the several demonstrated cases in the examples repository are both laboratory cases. While the four-column case is from the paper http://www.sciencedirect.com/science/article/pii/S009813540600192X , and the eight-column case is from the paper http://www.sciencedirect.com/science/article/pii/S0959152401000051. But the data of case for the ternary components in binary separation is totally fake, which is extended from the eight-column case. The five-column case for the ternary separation is from the paper, http://www.sciencedirect.com/science/article/pii/S002196731101363X.
As for the several demonstrated cases in the examples repository are both laboratory cases.

You can directly use the demonstration cases by coping it from the examples directory into the Forward/Optimization directory, then changing the file name to getParameters.m.
* While the four-column case is from the paper http://www.sciencedirect.com/science/article/pii/S009813540600192X;
* and the eight-column case is from the paper http://www.sciencedirect.com/science/article/pii/S0959152401000051;
* But the data of case for the ternary components in binary separation is totally fake, which is extended from the eight-column case;
* The five-column case for the ternary separation is from the paper, http://www.sciencedirect.com/science/article/pii/S002196731101363X;
* The ten-column case for the ternary separation is from the paper, http://www.sciencedirect.com/science/article/pii/S0009250904007742.

You can directly use the demonstration cases by coping it from the examples directory into the simulatedMovingBed directory, then changing the file name to getParameters.m.

You can also write your own parameter routines by refering the getParameters.m.

Expand Down
Loading

0 comments on commit aada1c0

Please sign in to comment.