ANN for constraint optimization problem
2 views (last 30 days)
Show older comments
hello,
How do i modify my ANN algorithm, by incorporating some constraints to perfom my obtained result. the matlab code used is generated from Neural Network Toolbox.
function [Y,Xf,Af] = ANN_Function(X)
% ===== NEURAL NETWORK CONSTANTS =====
% Input 1
x1_step1_xoffset = [-0.964339227389144;-0.906927494859787;-0.9643288955237];
x1_step1_gain = [1.03826501814344;1.06861700687107;1.27340625419393];
x1_step1_ymin = -1;
% Layer 1
b1 = [-1.3371193654695128217;-3.7243723447930885406;0.59020209217794505907;-0.26942 281438778381553;-0.084790990077469749475;-0.287833517416886564;-0.6199588700217847359;0.87036361559242081398;1.1136596091577191103;3.5728692098803582766];
IW1_1 = [0.62172489473929637427 -1.1539538428995010921 0.40749280432490736503;0.33504097052172682192 2.2754223181903578954 -2.0670552187061321803;-0.97421719994837163714 0.16930737512492399777 0.95638889040809083042;3.453458645614659428 2.4120651149524281465 3.9342055592145062093;2.9998512477370034013 2.2723487424133810286 3.3571622229587347874;-1.6838243946405258011 -2.3995748128279066336 0.36244936598086713309;-3.1423700210823852785 1.3845185332230820485 2.4609517018642876884;-0.39703700607817143942 2.4912130193995269956 -0.16941481846512243536;1.406655675671569572 0.92534256006865256428 0.64325984129225455277;1.5085377777493140794 1.4551527878904193525 -1.3090133612083598713];
% Layer 2
b2 = [-0.28647967632293369622;-0.77689684809120063136;0.23567045137827014045;-0.50614562961496167848;0.17775471570313430836;0.39409286123122444501;-0.23743319675300361693];
LW2_1 = [-1.2595809845665446591 0.52253536564831837286 1.6575450213582203496 1.4444644615739332671 -0.79927746466752380705 -0.49440949393277561219 -1.0291039534117272236 -0.10205229528755178914 -1.783179386992490123 0.012007511957539542674;-1.8160587258194498261 0.16525212307258660416 -0.35634974797682900105 0.61911944611294977836 -0.55104180525241264199 0.36270218166368617396 0.70227078264624087645 -0.69192422904692441055 0.63741286998972901401 0.078380036138073788665;-0.39987089599785630156 0.0015263660888982231219 -0.32703999255710186622 -1.0870691355791675115 0.68183572942635206626 0.20086063975571505358 0.53707692508704663048 -0.043958739282595582498 0.30170293659756891591 -0.40387165805595148793;-0.42538078713443683299 -0.41243046298959784579 0.09360967585146644232 -0.54902810742656438237 0.27858672713463300541 0.13466521369669071095 -0.31684402239022979586 -0.016110146899087046668 0.18209067234932024837 -0.38144681930811946691;0.78489623544097297803 0.064197561813166229006 -0.14703146723552590336 0.045763727795912277629 -0.044493781097574965078 0.023102496123388799321 0.19498160438730580135 0.42399577006788119471 0.068627392557574939946 0.2774573470874529546;0.28300904777281810087 -0.040045961378933660202 -0.048322484065649526364 0.23633721304470370339 -0.28761021912207535012 0.22386822762508534757 -0.095795332741767574847 0.31901549272383256106 0.17453188621906071121 -0.40095786179528114523;0.2537157491011907684 -0.037837226082635302959 -0.044856312727524147443 0.24018253583883578117 -0.28974054247799801987 0.23561178051146219881 -0.095989508380685484301 0.30576014862164185848 0.18195538033206490325 0.22157365239611195862];
% Output 1
y1_step1_ymin = -1;
y1_step1_gain = [1.21212121212121;1.53846153846154;0.8;3.33333333333333;1.66666666666667;2;2];
y1_step1_xoffset = [-0.785398163397448;-0.523598775598299;-0.261799387799149;-0.174532925199433;-0.349065850398866;-0.523598775598299;-0.523598775598299];
% ===== SIMULATION ========
% Format Input Arguments
isCellX = iscell(X);
if ~isCellX, X = {X}; end;
% Dimensions
TS = size(X,2); % timesteps
if ~isempty(X)
Q = size(X{1},1); % samples/series
else
Q = 0;
end
% Allocate Outputs
Y = cell(1,TS);
% Time loop
for ts=1:TS
% Input 1
X{1,ts} = X{1,ts}';
Xp1 =
mapminmax_apply(X{1,ts},x1_step1_gain,x1_step1_xoffset,x1_step1_ymin);
% Layer 1
a1 = tansig_apply(repmat(b1,1,Q) + IW1_1*Xp1);
% Layer 2
a2 = repmat(b2,1,Q) + LW2_1*a1;
% Output 1
Y{1,ts} =
mapminmax_reverse(a2,y1_step1_gain,y1_step1_xoffset,y1_step1_ymin);
Y{1,ts} = Y{1,ts}';
end
% Final Delay States Xf = cell(1,0); Af = cell(2,0);
% Format Output Arguments if ~isCellX, Y = cell2mat(Y); end end
% ===== MODULE FUNCTIONS ========
% Map Minimum and Maximum Input Processing Function function y = mapminmax_apply(x,settings_gain,settings_xoffset,settings_ymin) y = bsxfun(@minus,x,settings_xoffset); y = bsxfun(@times,y,settings_gain); y = bsxfun(@plus,y,settings_ymin); end
% Sigmoid Symmetric Transfer Function function a = tansig_apply(n) a = 2 ./ (1 + exp(-2*n)) - 1; end
% Map Minimum and Maximum Output Reverse-Processing Function function x = mapminmax_reverse(y,settings_gain,settings_xoffset,settings_ymin) x = bsxfun(@minus,y,settings_ymin); x = bsxfun(@rdivide,x,settings_gain); x = bsxfun(@plus,x,settings_xoffset); end
2 Comments
Answers (0)
See Also
Categories
Find more on Genomics and Next Generation Sequencing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!