BIMK / PlatEMO

Evolutionary multi-objective optimization platform
1.58k stars 463 forks source link

MOEA/D-EGO "Input must be real and full" #126

Open electronsandstuff opened 1 year ago

electronsandstuff commented 1 year ago

Hello, thanks again for this project. I received the following error while running MOEA/D-EGO on the WFG1 problem.

Error using erfc
Input must be real and full.

Error in normcdf>localnormcdf (line 134)
p(todo) = 0.5 * erfc(-z ./ sqrt(2));

Error in normcdf (line 50)
[varargout{1:max(1,nargout)}] = localnormcdf(uflag,x,varargin{:});

Error in EGOSelect>EICal (line 99)
    EI = (Gbest-y)*normcdf((Gbest-y)/sqrt(x)) + sqrt(x)*normpdf((Gbest-y)/sqrt(x));

Error in EGOSelect (line 77)
            EI(j) = EICal(real(tempObj(j,:)),Z,W(r,:),abs(tempMSE(j,:)),gmin);

Error in MOEADEGO/main (line 38)
                PopDec     = EGOSelect(Problem,Population,L1,L2,Ke,delta,nr);

Error in ALGORITHM/Solve (line 77)
                tic; obj.main(obj.pro);

Error in module_exp/cb_start (line 289)
                                    ALG(a).Solve(PRO(p));

Error in module_exp>@(varargin)obj.cb_start(varargin{:}) (line 88)
            obj.app.buttonC(1) = GUI.APP(3,2,uibutton(obj.app.grid(3),'push','Text','Start','FontSize',16,'ButtonpushedFcn',@obj.cb_start));

Error using matlab.ui.control.internal.controller.ComponentController/executeUserCallback
Error while evaluating Button PrivateButtonPushedFcn.

The settings I used for MOEA/D-EGO were the defaults:

Ke: 5
delta: 0.9
nr: 2
L1: 80
L2: 20

The settings for WFG1 were:

N: 20
M: 2
D: 10
maxFE: 300
K: 2

I get the error probably every one out of ten evaluations of the optimizer. I am not much of a matlab programmer, but thought I would pass on the error here.

HanLeI187 commented 1 year ago

Thank you very much for using PlatEMO. I have tried the same settings and found no error during the execution. Please use the newest version of PlatEMO and try again, and tell me if there is still any error.

electronsandstuff commented 1 year ago

Ok, thanks. This was on commit b124593841d7c5c1fa5dd4923c1aa2bae9ea0cf9 and I see that there were some changes to MOEA/D-EGO after that. I will try it out and see if that's the difference. My computer is finishing up some other work, but should be able to get to it next week.

electronsandstuff commented 1 year ago

I was able to check it out earlier than I expected and updating did fix the issue.

However, I am now getting a problem with ParEGO on DTLZ4 with the following settings

N: 50
M: 3
D: 10
maxFE: 300

Here is the error message:

Error in ParEGO/main (line 58)
                dmodel     = dacefit(PDec,PCheby,'regpoly1','corrgauss',theta,1e-5.*ones(1,D),20.*ones(1,D));

Error in ALGORITHM/Solve (line 77)
                tic; obj.main(obj.pro);

Error in module_exp/cb_start (line 289)
                                    ALG(a).Solve(PRO(p));

Error in module_exp>@(varargin)obj.cb_start(varargin{:}) (line 88)
            obj.app.buttonC(1) = GUI.APP(3,2,uibutton(obj.app.grid(3),'push','Text','Start','FontSize',16,'ButtonpushedFcn',@obj.cb_start));

Error using matlab.ui.control.internal.controller.ComponentController/executeUserCallback
Error while evaluating Button PrivateButtonPushedFcn.

Error using parallel.FevalFuture/fetchNext
The function evaluation completed with an error.

Error in module_exp/cb_start (line 319)
                                    [r,result,metric] = fetchNext(Future,0.01);

Error in module_exp>@(varargin)obj.cb_start(varargin{:}) (line 88)
            obj.app.buttonC(1) = GUI.APP(3,2,uibutton(obj.app.grid(3),'push','Text','Start','FontSize',16,'ButtonpushedFcn',@obj.cb_start));

Caused by:
    Error using dacefit
    least squares problem is underdetermined
electronsandstuff commented 1 year ago

I also got it overnight on DTLZ1 with M=4. Might be hitting weird parts of the search space?