MATLAB Examples

Contents

Copyright (c) 2017, DIBRIS-University of Genoa (www.dibris.unige.it) All rights reserved. Please read the "license.txt" for license terms.

Project Code: AmrDIBRIS101 Project Title: Implementation of Online Graded Possibilistic Clustering "OGPC" Clustering in MATLAB Read more about the online algorithm "https://www.springerprofessional.de/graded-possibilistic-clustering-of-non-stationary-data-streams/12047532 Note: this a modified version of the online alorithm (Algorithm able to detect outliers and adabt to concept shift).

Publisher: DIBRIS (www.dibris.unige.it) Developer: Amr Abdullatif (DIBRIS-University of Genoa) Contact Info: amr.r.abdullatif@gmail.com function [rhovals,summembership,U, Youtn, Y, normvals, bend] = ogpc(X, Y, fb, K, maxiter, eta0, alphamin, plt)

%FUNCTION INPUTS:
%
% X: Input data (Normalized)
% Y: Initial centroids (Please read cm2.m), default: Y = 0 (computed
% from the code)
% fb: First batch size (Used to get initial centroids)
% K: Number of clusters
% eta0: Default initial value is 1 (Update centroids)
% alphamin: Controls the "possibility level", from a totally
% probabilistic (alphamin = 1) to a totally possibilistic (alphamin =
% 0).
% Outliers can be modulated by an appropriate choice of alphamin.
% alphaimin default value is 0.99 .
% plt: 2D list  used to plot data.
%
% Function outputs:
%
% rhovals: list contains degree of outlierness of incoming data streams.
% summembership : sum of membership of each pattern to all clusters.
% U: membership of a pattern to all clusters.
% Youtn, Y: Centroids (Normalized and not normalized).
% normvals: normalized values.
% bend: final clusters widths.
%Example:
%Gaussian dataset: Synthetic data sets containing concept drift, so
%outliers and concept shift was added by removing a number of observations in twoparts of the data sequence.
% load('gaussshift.mat')
% Normalized input is included in 'gaussshift.mat'.
% Then you can run the following code:
%[rhovals,summembership,U, Youtn, Y, Normvals, bend] = ogpc(gaussdata_shift_norm,0,1000, 4, 100, 1, .99, [1,2])

function [rhovals,summembership,U, Youtn, Y, normvals, bend, Uval, Yval] = ogpc(X, Y, fb, K, maxiter, eta0, alphamin, plt)

FUNCTION INPUTS

This sections describes function inputs$%^

    % X: Input data (Normalized)
    % Y: Initial centroids (Please read cm2.m), default: Y = 0 (computed
    % from the code)
    % fb: First batch size (Used to get initial centroids)
    % K: Number of clusters
    % eta0: Default initial value is 1 (Update centroids)
    % alphamin: Controls the "possibility level", from a totally
    % probabilistic (alphamin = 1) to a totally possibilistic (alphamin =
    % 0).
    % Outliers can be modulated by an appropriate choice of alphamin.
    % alphaimin default value is 0.99 .
    % plt: 2D list  used to plot data

    absc = plt(1); % For plotting data
    ord = plt(2);  % For plotting datta
    a0 = 0.1; % Default 0.2  (set low) Control the learning rate in region 1 "concept drift".
    t1 = .01; % Default .1  (set low) Control the learning rate in region 3 "concept shift"
    k = 50;  % Default 50 (set high)  Control the no learning interval in region 2 "outliers"
    g =.7; % Default .5(set high)
    eta = eta0; % Default 1
    firstbatch = fb;
    maxitr = maxiter; % Maximum number of iterations
    nout = 50; % Number of iterations for fprintf
    close;
    normvals=[zeros(1,size(X,2)); ones(1,size(X,2))];
    Uval={};
    Yval={};


    % uncomment the following line to check parameters
    %   plot(0:.01:1,  1+a0*exp(-((0:.01:1)./t1))-exp(-(((0:.01:1)./(k*t1)).^(g*log(1/t1)))));pause

TRAINING

From first batch we obtain initial centroids, memberships, and sum of memberships (used to obtain the outlierness degree in the first batch)

    tinterval=1:firstbatch;
    [Ui, Y, Youtn,bend] = cm2(X(tinterval,:),K,maxitr,1,0,Y,eta,alphamin);
    summembership = sum(Ui,2);
    summembership=summembership(:)';
    omega = 1-summembership;
    omega(omega<0)=0;
    rho=mean(omega(:));
    bi0=bend;
Iteration count = 1, obj. fcn = 10.402333
Iteration count = 2, obj. fcn = 7.946407
Iteration count = 3, obj. fcn = 7.879198
Iteration count = 4, obj. fcn = 7.630471
Iteration count = 5, obj. fcn = 7.030289
Iteration count = 6, obj. fcn = 6.344195
Iteration count = 7, obj. fcn = 5.839850
Iteration count = 8, obj. fcn = 5.424222
Iteration count = 9, obj. fcn = 5.044144
Iteration count = 10, obj. fcn = 4.724821
Iteration count = 11, obj. fcn = 4.515163
Iteration count = 12, obj. fcn = 4.401850
Iteration count = 13, obj. fcn = 4.346678
Iteration count = 14, obj. fcn = 4.321165
Iteration count = 15, obj. fcn = 4.309642
Iteration count = 16, obj. fcn = 4.304490
Iteration count = 17, obj. fcn = 4.302195
Iteration count = 18, obj. fcn = 4.301175
Iteration count = 19, obj. fcn = 4.300721
Iteration count = 20, obj. fcn = 4.300520
Iteration count = 21, obj. fcn = 4.300430
Iteration count = 22, obj. fcn = 4.300390
Iteration count = 23, obj. fcn = 4.300373
Iteration count = 24, obj. fcn = 4.300365

Plot initial centroids and data

    plot(Y(:,absc),Y(:,ord),'r*',X(tinterval,absc),X(tinterval,ord),'b.')
    axis([0 1 0 1]);
    grid;
    drawnow;
    count=0;
    U = zeros(1,size(Y,1));
    rhovals = [];
    numiter = size(X,1)-firstbatch;

ONLINE TEST

Omega: Outlierness degree

    for j=firstbatch+1:size(X,1)
        count = count + 1;
        omega = 1-summembership;
        omega(omega<0)=0;
        rho =.01*mean(omega)+.99*rho; % Degree of outlierness
        rhovals = [rhovals rho]; % List of outlierness degree
        theta=1+a0*exp(-(rho./t1))-exp(-((rho./(k*t1)).^(g*log(1/t1))));
        eta = theta*eta0;
        alpha = alphamin+rho*(1-alphamin);
        U = membership2(X(j,:),Y,bend,alpha); % describtion in membership2.m
        Y = Y+((eta*(repmat(X(j,:),size(Y,1),1)-Y).*repmat(U,size(X,2),1)') /sum(U)); % added /sum(U)
        %dist=dist2(X(j,:),Y);
        bend = betafcm(X(j,:),Y,U)/K;
        %bend= sum(dist(1:size(U,2)).*U,2)./sum(U,2) ;
        bend=bend+rho*(bi0-bend);
        bi0 = bend ;
        U = removedoubles(U,Y,bend);
        summembership = sum(U);
        Uval{j} = U;
        Yval{j} = Y;

        % Dynamic plot of centroids and data
        if ~mod(count,nout)
            fprintf('iter %i of %i - rho = %f , theta = %f , eta = %f , alpha = %f\n',count, numiter,rho,theta,eta,alpha);
        end

        tinterval=max(1,j-30):j;

        tintervalpast=max(1,j-100):j;

        plot(X(tintervalpast,absc),X(tintervalpast,ord),'c.',X(tinterval,absc),X(tinterval,ord),'b.',Y(:,absc),Y(:,ord),'r*');
        axis([0 1 0 1]);
        grid;
        drawnow;
    end

plot the final outlirness degree of all patterns

Density of outliers are used as indicator to outliers and concept shift in data streams.

    plot(rhovals);
end

removedoubles function

function U= removedoubles(U,Y,bend)
    dd=dist2(Y);
    remove=zeros(size(dd));
    for i=1:(size(dd,2)-1)
        for j=i+1:size(dd,2)
            %if dd(i,j)<b %remove
            if dd(i,j)<bend
                remove(i,j) = true;
            end
        end
    end
    keep=(prod(~remove)>0);
    U = U(:,keep);
end

%%Examples:
% Example 1:
%Gaussian dataset: Synthetic data sets containing concept drift, so
%outliers and concept shift was added by removing a number of observations in twoparts of the data sequence.
% load('gaussshift.mat')
% Normalized input is included in 'gaussshift.mat'.
% Then you can run the following code:
%[rhovals,summembership,U, Youtn, Y, Normvals, bend] = ogpc(gaussdata_shift_norm,0,1000, 4, 100, 1, .99, [1,2])
iter 50 of 7000 - rho = 0.011071 , theta = 0.033057 , eta = 0.033057 , alpha = 0.990111
iter 100 of 7000 - rho = 0.010061 , theta = 0.036568 , eta = 0.036568 , alpha = 0.990101
iter 150 of 7000 - rho = 0.010555 , theta = 0.034804 , eta = 0.034804 , alpha = 0.990106
iter 200 of 7000 - rho = 0.009561 , theta = 0.038440 , eta = 0.038440 , alpha = 0.990096
iter 250 of 7000 - rho = 0.010980 , theta = 0.033357 , eta = 0.033357 , alpha = 0.990110
iter 300 of 7000 - rho = 0.010611 , theta = 0.034613 , eta = 0.034613 , alpha = 0.990106
iter 350 of 7000 - rho = 0.010189 , theta = 0.036101 , eta = 0.036101 , alpha = 0.990102
iter 400 of 7000 - rho = 0.010915 , theta = 0.033575 , eta = 0.033575 , alpha = 0.990109
iter 450 of 7000 - rho = 0.009691 , theta = 0.037945 , eta = 0.037945 , alpha = 0.990097
iter 500 of 7000 - rho = 0.010318 , theta = 0.035642 , eta = 0.035642 , alpha = 0.990103
iter 550 of 7000 - rho = 0.011753 , theta = 0.030879 , eta = 0.030879 , alpha = 0.990118
iter 600 of 7000 - rho = 0.012212 , theta = 0.029495 , eta = 0.029495 , alpha = 0.990122
iter 650 of 7000 - rho = 0.012948 , theta = 0.027403 , eta = 0.027403 , alpha = 0.990129
iter 700 of 7000 - rho = 0.011681 , theta = 0.031101 , eta = 0.031101 , alpha = 0.990117
iter 750 of 7000 - rho = 0.010902 , theta = 0.033620 , eta = 0.033620 , alpha = 0.990109
iter 800 of 7000 - rho = 0.012736 , theta = 0.027989 , eta = 0.027989 , alpha = 0.990127
iter 850 of 7000 - rho = 0.011660 , theta = 0.031167 , eta = 0.031167 , alpha = 0.990117
iter 900 of 7000 - rho = 0.011056 , theta = 0.033106 , eta = 0.033106 , alpha = 0.990111
iter 950 of 7000 - rho = 0.010880 , theta = 0.033694 , eta = 0.033694 , alpha = 0.990109
iter 1000 of 7000 - rho = 0.010339 , theta = 0.035564 , eta = 0.035564 , alpha = 0.990103
iter 1050 of 7000 - rho = 0.010822 , theta = 0.033890 , eta = 0.033890 , alpha = 0.990108
iter 1100 of 7000 - rho = 0.010931 , theta = 0.033523 , eta = 0.033523 , alpha = 0.990109
iter 1150 of 7000 - rho = 0.010887 , theta = 0.033671 , eta = 0.033671 , alpha = 0.990109
iter 1200 of 7000 - rho = 0.011186 , theta = 0.032678 , eta = 0.032678 , alpha = 0.990112
iter 1250 of 7000 - rho = 0.011514 , theta = 0.031626 , eta = 0.031626 , alpha = 0.990115
iter 1300 of 7000 - rho = 0.011063 , theta = 0.033083 , eta = 0.033083 , alpha = 0.990111
iter 1350 of 7000 - rho = 0.010707 , theta = 0.034281 , eta = 0.034281 , alpha = 0.990107
iter 1400 of 7000 - rho = 0.010788 , theta = 0.034006 , eta = 0.034006 , alpha = 0.990108
iter 1450 of 7000 - rho = 0.010877 , theta = 0.033705 , eta = 0.033705 , alpha = 0.990109
iter 1500 of 7000 - rho = 0.010425 , theta = 0.035261 , eta = 0.035261 , alpha = 0.990104
iter 1550 of 7000 - rho = 0.009995 , theta = 0.036809 , eta = 0.036809 , alpha = 0.990100
iter 1600 of 7000 - rho = 0.010188 , theta = 0.036106 , eta = 0.036106 , alpha = 0.990102
iter 1650 of 7000 - rho = 0.009673 , theta = 0.038013 , eta = 0.038013 , alpha = 0.990097
iter 1700 of 7000 - rho = 0.009689 , theta = 0.037955 , eta = 0.037955 , alpha = 0.990097
iter 1750 of 7000 - rho = 0.011714 , theta = 0.030999 , eta = 0.030999 , alpha = 0.990117
iter 1800 of 7000 - rho = 0.012098 , theta = 0.029831 , eta = 0.029831 , alpha = 0.990121
iter 1850 of 7000 - rho = 0.013228 , theta = 0.026646 , eta = 0.026646 , alpha = 0.990132
iter 1900 of 7000 - rho = 0.013379 , theta = 0.026249 , eta = 0.026249 , alpha = 0.990134
iter 1950 of 7000 - rho = 0.013887 , theta = 0.024950 , eta = 0.024950 , alpha = 0.990139
iter 2000 of 7000 - rho = 0.012454 , theta = 0.028789 , eta = 0.028789 , alpha = 0.990125
iter 2050 of 7000 - rho = 0.115088 , theta = 0.008743 , eta = 0.008743 , alpha = 0.991151
iter 2100 of 7000 - rho = 0.074860 , theta = 0.002249 , eta = 0.002249 , alpha = 0.990749
iter 2150 of 7000 - rho = 0.049235 , theta = 0.001296 , eta = 0.001296 , alpha = 0.990492
iter 2200 of 7000 - rho = 0.035388 , theta = 0.003101 , eta = 0.003101 , alpha = 0.990354
iter 2250 of 7000 - rho = 0.026319 , theta = 0.007270 , eta = 0.007270 , alpha = 0.990263
iter 2300 of 7000 - rho = 0.019740 , theta = 0.013920 , eta = 0.013920 , alpha = 0.990197
iter 2350 of 7000 - rho = 0.018178 , theta = 0.016261 , eta = 0.016261 , alpha = 0.990182
iter 2400 of 7000 - rho = 0.017910 , theta = 0.016702 , eta = 0.016702 , alpha = 0.990179
iter 2450 of 7000 - rho = 0.015650 , theta = 0.020923 , eta = 0.020923 , alpha = 0.990156
iter 2500 of 7000 - rho = 0.014660 , theta = 0.023096 , eta = 0.023096 , alpha = 0.990147
iter 2550 of 7000 - rho = 0.012849 , theta = 0.027677 , eta = 0.027677 , alpha = 0.990128
iter 2600 of 7000 - rho = 0.013224 , theta = 0.026658 , eta = 0.026658 , alpha = 0.990132
iter 2650 of 7000 - rho = 0.012436 , theta = 0.028842 , eta = 0.028842 , alpha = 0.990124
iter 2700 of 7000 - rho = 0.012736 , theta = 0.027989 , eta = 0.027989 , alpha = 0.990127
iter 2750 of 7000 - rho = 0.011964 , theta = 0.030235 , eta = 0.030235 , alpha = 0.990120
iter 2800 of 7000 - rho = 0.013413 , theta = 0.026160 , eta = 0.026160 , alpha = 0.990134
iter 2850 of 7000 - rho = 0.013554 , theta = 0.025794 , eta = 0.025794 , alpha = 0.990136
iter 2900 of 7000 - rho = 0.012582 , theta = 0.028424 , eta = 0.028424 , alpha = 0.990126
iter 2950 of 7000 - rho = 0.012773 , theta = 0.027887 , eta = 0.027887 , alpha = 0.990128
iter 3000 of 7000 - rho = 0.013083 , theta = 0.027036 , eta = 0.027036 , alpha = 0.990131
iter 3050 of 7000 - rho = 0.012687 , theta = 0.028126 , eta = 0.028126 , alpha = 0.990127
iter 3100 of 7000 - rho = 0.011686 , theta = 0.031085 , eta = 0.031085 , alpha = 0.990117
iter 3150 of 7000 - rho = 0.011007 , theta = 0.033268 , eta = 0.033268 , alpha = 0.990110
iter 3200 of 7000 - rho = 0.009992 , theta = 0.036822 , eta = 0.036822 , alpha = 0.990100
iter 3250 of 7000 - rho = 0.010867 , theta = 0.033738 , eta = 0.033738 , alpha = 0.990109
iter 3300 of 7000 - rho = 0.010673 , theta = 0.034397 , eta = 0.034397 , alpha = 0.990107
iter 3350 of 7000 - rho = 0.010390 , theta = 0.035384 , eta = 0.035384 , alpha = 0.990104
iter 3400 of 7000 - rho = 0.010780 , theta = 0.034031 , eta = 0.034031 , alpha = 0.990108
iter 3450 of 7000 - rho = 0.011276 , theta = 0.032385 , eta = 0.032385 , alpha = 0.990113
iter 3500 of 7000 - rho = 0.010814 , theta = 0.033915 , eta = 0.033915 , alpha = 0.990108
iter 3550 of 7000 - rho = 0.010920 , theta = 0.033559 , eta = 0.033559 , alpha = 0.990109
iter 3600 of 7000 - rho = 0.010983 , theta = 0.033349 , eta = 0.033349 , alpha = 0.990110
iter 3650 of 7000 - rho = 0.011673 , theta = 0.031127 , eta = 0.031127 , alpha = 0.990117
iter 3700 of 7000 - rho = 0.010969 , theta = 0.033396 , eta = 0.033396 , alpha = 0.990110
iter 3750 of 7000 - rho = 0.012135 , theta = 0.029723 , eta = 0.029723 , alpha = 0.990121
iter 3800 of 7000 - rho = 0.010975 , theta = 0.033377 , eta = 0.033377 , alpha = 0.990110
iter 3850 of 7000 - rho = 0.011433 , theta = 0.031880 , eta = 0.031880 , alpha = 0.990114
iter 3900 of 7000 - rho = 0.011282 , theta = 0.032367 , eta = 0.032367 , alpha = 0.990113
iter 3950 of 7000 - rho = 0.010578 , theta = 0.034727 , eta = 0.034727 , alpha = 0.990106
iter 4000 of 7000 - rho = 0.011202 , theta = 0.032627 , eta = 0.032627 , alpha = 0.990112
iter 4050 of 7000 - rho = 0.288579 , theta = 0.156354 , eta = 0.156354 , alpha = 0.992886
iter 4100 of 7000 - rho = 0.247005 , theta = 0.097848 , eta = 0.097848 , alpha = 0.992470
iter 4150 of 7000 - rho = 0.169552 , theta = 0.030154 , eta = 0.030154 , alpha = 0.991696
iter 4200 of 7000 - rho = 0.118842 , theta = 0.009691 , eta = 0.009691 , alpha = 0.991188
iter 4250 of 7000 - rho = 0.090818 , theta = 0.004095 , eta = 0.004095 , alpha = 0.990908
iter 4300 of 7000 - rho = 0.069906 , theta = 0.001851 , eta = 0.001851 , alpha = 0.990699
iter 4350 of 7000 - rho = 0.053136 , theta = 0.001219 , eta = 0.001219 , alpha = 0.990531
iter 4400 of 7000 - rho = 0.037491 , theta = 0.002590 , eta = 0.002590 , alpha = 0.990375
iter 4450 of 7000 - rho = 0.036721 , theta = 0.002763 , eta = 0.002763 , alpha = 0.990367
iter 4500 of 7000 - rho = 0.027845 , theta = 0.006266 , eta = 0.006266 , alpha = 0.990278
iter 4550 of 7000 - rho = 0.039251 , theta = 0.002248 , eta = 0.002248 , alpha = 0.990393
iter 4600 of 7000 - rho = 0.030404 , theta = 0.004902 , eta = 0.004902 , alpha = 0.990304
iter 4650 of 7000 - rho = 0.030567 , theta = 0.004827 , eta = 0.004827 , alpha = 0.990306
iter 4700 of 7000 - rho = 0.029364 , theta = 0.005413 , eta = 0.005413 , alpha = 0.990294
iter 4750 of 7000 - rho = 0.025837 , theta = 0.007620 , eta = 0.007620 , alpha = 0.990258
iter 4800 of 7000 - rho = 0.041548 , theta = 0.001898 , eta = 0.001898 , alpha = 0.990415
iter 4850 of 7000 - rho = 0.043681 , theta = 0.001654 , eta = 0.001654 , alpha = 0.990437
iter 4900 of 7000 - rho = 0.031677 , theta = 0.004347 , eta = 0.004347 , alpha = 0.990317
iter 4950 of 7000 - rho = 0.025050 , theta = 0.008232 , eta = 0.008232 , alpha = 0.990250
iter 5000 of 7000 - rho = 0.023888 , theta = 0.009229 , eta = 0.009229 , alpha = 0.990239
iter 5050 of 7000 - rho = 0.018754 , theta = 0.015355 , eta = 0.015355 , alpha = 0.990188
iter 5100 of 7000 - rho = 0.019904 , theta = 0.013695 , eta = 0.013695 , alpha = 0.990199
iter 5150 of 7000 - rho = 0.020829 , theta = 0.012493 , eta = 0.012493 , alpha = 0.990208
iter 5200 of 7000 - rho = 0.016949 , theta = 0.018380 , eta = 0.018380 , alpha = 0.990169
iter 5250 of 7000 - rho = 0.018773 , theta = 0.015326 , eta = 0.015326 , alpha = 0.990188
iter 5300 of 7000 - rho = 0.017361 , theta = 0.017640 , eta = 0.017640 , alpha = 0.990174
iter 5350 of 7000 - rho = 0.015036 , theta = 0.022244 , eta = 0.022244 , alpha = 0.990150
iter 5400 of 7000 - rho = 0.015018 , theta = 0.022285 , eta = 0.022285 , alpha = 0.990150
iter 5450 of 7000 - rho = 0.019884 , theta = 0.013723 , eta = 0.013723 , alpha = 0.990199
iter 5500 of 7000 - rho = 0.023235 , theta = 0.009844 , eta = 0.009844 , alpha = 0.990232
iter 5550 of 7000 - rho = 0.018345 , theta = 0.015993 , eta = 0.015993 , alpha = 0.990183
iter 5600 of 7000 - rho = 0.014884 , theta = 0.022585 , eta = 0.022585 , alpha = 0.990149
iter 5650 of 7000 - rho = 0.013101 , theta = 0.026986 , eta = 0.026986 , alpha = 0.990131
iter 5700 of 7000 - rho = 0.013193 , theta = 0.026739 , eta = 0.026739 , alpha = 0.990132
iter 5750 of 7000 - rho = 0.013183 , theta = 0.026766 , eta = 0.026766 , alpha = 0.990132
iter 5800 of 7000 - rho = 0.013607 , theta = 0.025656 , eta = 0.025656 , alpha = 0.990136
iter 5850 of 7000 - rho = 0.013143 , theta = 0.026874 , eta = 0.026874 , alpha = 0.990131
iter 5900 of 7000 - rho = 0.013500 , theta = 0.025934 , eta = 0.025934 , alpha = 0.990135
iter 5950 of 7000 - rho = 0.014835 , theta = 0.022696 , eta = 0.022696 , alpha = 0.990148
iter 6000 of 7000 - rho = 0.022662 , theta = 0.010417 , eta = 0.010417 , alpha = 0.990227
iter 6050 of 7000 - rho = 0.020323 , theta = 0.013137 , eta = 0.013137 , alpha = 0.990203
iter 6100 of 7000 - rho = 0.017957 , theta = 0.016623 , eta = 0.016623 , alpha = 0.990180
iter 6150 of 7000 - rho = 0.018087 , theta = 0.016410 , eta = 0.016410 , alpha = 0.990181
iter 6200 of 7000 - rho = 0.015132 , theta = 0.022033 , eta = 0.022033 , alpha = 0.990151
iter 6250 of 7000 - rho = 0.012860 , theta = 0.027646 , eta = 0.027646 , alpha = 0.990129
iter 6300 of 7000 - rho = 0.011427 , theta = 0.031900 , eta = 0.031900 , alpha = 0.990114
iter 6350 of 7000 - rho = 0.012085 , theta = 0.029872 , eta = 0.029872 , alpha = 0.990121
iter 6400 of 7000 - rho = 0.012759 , theta = 0.027925 , eta = 0.027925 , alpha = 0.990128
iter 6450 of 7000 - rho = 0.012068 , theta = 0.029920 , eta = 0.029920 , alpha = 0.990121
iter 6500 of 7000 - rho = 0.012484 , theta = 0.028702 , eta = 0.028702 , alpha = 0.990125
iter 6550 of 7000 - rho = 0.013793 , theta = 0.025185 , eta = 0.025185 , alpha = 0.990138
iter 6600 of 7000 - rho = 0.013754 , theta = 0.025282 , eta = 0.025282 , alpha = 0.990138
iter 6650 of 7000 - rho = 0.013442 , theta = 0.026082 , eta = 0.026082 , alpha = 0.990134
iter 6700 of 7000 - rho = 0.012153 , theta = 0.029669 , eta = 0.029669 , alpha = 0.990122
iter 6750 of 7000 - rho = 0.011426 , theta = 0.031904 , eta = 0.031904 , alpha = 0.990114
iter 6800 of 7000 - rho = 0.010903 , theta = 0.033616 , eta = 0.033616 , alpha = 0.990109
iter 6850 of 7000 - rho = 0.012258 , theta = 0.029357 , eta = 0.029357 , alpha = 0.990123
iter 6900 of 7000 - rho = 0.012368 , theta = 0.029039 , eta = 0.029039 , alpha = 0.990124
iter 6950 of 7000 - rho = 0.010938 , theta = 0.033499 , eta = 0.033499 , alpha = 0.990109
iter 7000 of 7000 - rho = 0.011802 , theta = 0.030726 , eta = 0.030726 , alpha = 0.990118