在MATLAB优化工具箱中获得求解之前,求解器停止运行

问题描述

我使用MATLAB优化工具箱的 fmincon 函数解决最小化问题。该代码的基本部分如下:

clc;
clear;
load('coord_points.mat');
load('coord_centroids.mat');
numberOfPoints=200;
numberOfCentroids=40;
Q=5;
tau=0.1;

d = zeros(numberOfPoints,numberOfCentroids);

for j=1:numberOfCentroids
    centroid = coord_centroids(j,:);
    for i=1:numberOfPoints
        point = coord_points(i,:);
        d(i,j)=norm(centroid-point);
    end
end

sectorization = optimproblem;
x = optimvar('x',numberOfPoints,numberOfCentroids,'LowerBound','UpperBound',1);
y = optimvar('y',1,1);

qjExpression=optimexpr(numberOfCentroids);

for j=1:numberOfCentroids
    qjExpression(j) = sum(x(:,j));
end

qExpression = mean(qjExpression);

objExpression = y; 

%%%
sectorization.Objective = objExpression;

cons1 = optimconstr(numberOfPoints,1);
for i=1:numberOfPoints
    cons1(i) = sum(x(i,:)) == 1;
end

cons2 = optimconstr(numberOfCentroids,1);
for j=1:numberOfCentroids
    cons2(j) = sum(x(:,j)) >= 1;
end

cons3 = optimconstr(numberOfCentroids,1);
for j=1:numberOfCentroids
    cons3(j) = sum(x(:,j)) <= Q*(1+tau);
end

cons4 = optimconstr(1);
varianceOfQj = optimexpr(1);
for j=1:numberOfCentroids
    varianceOfQj = varianceOfQj + (qjExpression(j)-qExpression)^2;
end
varianceOfQj=varianceOfQj/numberOfCentroids;
cons4 = varianceOfQj - y <= 0;

sectorization.Constraints.cons1=cons1;
sectorization.Constraints.cons2=cons2;
sectorization.Constraints.cons3=cons3;
sectorization.Constraints.cons4=cons4;
%load('sol.mat');
sol.x=zeros(numberOfPoints,numberOfCentroids);
sol.y=1;
problem = prob2struct(sectorization,sol);

options = optimoptions(@fmincon,'MaxFunctionEvaluations',5000,'Algorithm','active-set','display','iter')
[x,fval] = fmincon(problem);

但是我得到以下结果:

Solver提前停止。

fmincon已停止,因为它超出了函数评估限制,options.MaxFunctionEvaluations = 3.000000e + 03。

但是,如代码所示,在选项部分中, 最大功能评估 等于5000。

即使在程序运行时,也会首先出现以下输出

*options = 

  fmincon options:

   Options used by current Algorithm ('active-set'):

   (Other available algorithms: 'interior-point','sqp','sqp-legacy','trust-region-reflective')
   Set properties:

                    Algorithm: 'active-set'

                      display: 'iter'

       MaxFunctionEvaluations: 5000

   Default properties:

               CheckGradients: 0

          ConstraintTolerance: 1.0000e-06

     FiniteDifferenceStepSize: 'sqrt(eps)'

         FiniteDifferenceType: 'forward'

            FunctionTolerance: 1.0000e-06

                MaxIterations: 400

          OptimalityTolerance: 1.0000e-06

                    OutputFcn: []

                      PlotFcn: []

    SpecifyConstraintGradient: 0

     SpecifyObjectiveGradient: 0

                StepTolerance: 1.0000e-06

                     TypicalX: 'ones(numberOfVariables,1)'

                  UseParallel: 0

   Show options not used by current Algorithm ('active-set')*

我该怎么做才能使规划求解正常工作?即使更改了 最高评价 的设置,为什么它仍然停止? 请提供您的反馈。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)