fmincon MATLAB: "Возможного решения не найдено!"

У меня есть следующий код, и мне нужно использовать "fmincon" для решения модели с линейными ограничениями и нелинейной целевой функцией:

A = [Aeq ; Aineq];
x0 = zeros(size(A,2),1);
x0(1:T:(n+2)*T) = I0;
lb = zeros(size(A,2),1);
ub = Inf*zeros(size(A,2),1);
options = optimset('fmincon');

% fmincon:
[x , fval , exitflag , output , lambda] = fmincon(@MP_ObjF1 , x0 , Aineq , bineq , Aeq , beq , 0 , Inf , [] , options);

И это функция:

function ObjF = MP_ObjF1(x)

global n;
global T;
global h;
global Total_Tcij; %A row vector of T arrays

ObjF = 0;
for t=1:T
    x_I_set = ((1:T:(n+2)*T)+(t-1))';
    x_I = x(x_I_set);
    HC = x_I*h; %"x_I" is a row vector, and "h" is a column vector.
    newObjF = (Total_Tcij(t) + HC)*x((n+2)*T+t);
    ObjF = (ObjF + newObjF);
end

end

Данные, необходимые для запуска модели, являются следующими (что является результатом выполнения кодов до вышеуказанной части кодов):

n = 2;
T = 3;
h = [5 ; 5 ; 5 ; 5];
Total_Tcij = [10    10    10];

Aineq =

Columns 1 through 14

 0     0     0     0     0     0     0     0     0     0     0     0     1     0
 0     0     0     0     0     0     0     0     0     0     0     0     0     1
 0     0     0     0     0     0     0     0     0     0     0     0     0     0
 0     0     0     0     0     0     0     0     0     0     0     0     0     0
 0     0     0     0     0     0     0     0     0     0     0     0     0     0
 0     0     0     0     0     0     0     0     0     0     0     0     0     0
 0     0     0     0     0     0     0     0     0     0     0     0     1     0
 0     0     0     0     0     0     0     0     0     0     0     0     0     1
 0     0     0     0     0     0     0     0     0     0     0     0     0     0
 0     0     0     0     0     0     0     0     0     0     0     0     0     0
 0     0     0     0     0     0     0     0     0     0     0     0     0     0
 0     0     0     0     0     0     0     0     0     0     0     0     0     0
 1     0     0     0     0     0     0     0     0     0     0     0     0     0
 0     1     0     0     0     0     0     0     0     0     0     0     0     0
 0     0     1     0     0     0     0     0     0     0     0     0     0     0
 0     0     0     1     0     0     0     0     0     0     0     0     0     0
 0     0     0     0     1     0     0     0     0     0     0     0     0     0
 0     0     0     0     0     1     0     0     0     0     0     0     0     0
 0     0     0     0     0     0     1     0     0     0     0     0     0     0
 0     0     0     0     0     0     0     1     0     0     0     0     0     0
 0     0     0     0     0     0     0     0     1     0     0     0     0     0
 0     0     0     0     0     0     0     0     0     1     0     0     0     0
 0     0     0     0     0     0     0     0     0     0     1     0     0     0
 0     0     0     0     0     0     0     0     0     0     0     1     0     0

Column 15

 0
 0
 1
 0
 0
 0
 0
 0
 1
 0
 0
 0
 0
 0
 0
 0
 0
 0
 0
 0
 0
 0
 0
 0

Aeq =

Columns 1 through 14

-1     0     0     0     0     0     0     0     0     0     0     0     4     0
 1    -1     0     0     0     0     0     0     0     0     0     0     0     4
 0     1    -1     0     0     0     0     0     0     0     0     0     0     0
 0     0     1    -1     0     0     0     0     0     0     0     0     0     0
 0     0     0     1    -1     0     0     0     0     0     0     0     0     0
 0     0     0     0     1    -1     0     0     0     0     0     0     0     0
 0     0     0     0     0     0    -1     0     0     0     0     0    13     0
 0     0     0     0     0     0     1    -1     0     0     0     0     0    13
 0     0     0     0     0     0     0     1    -1     0     0     0     0     0
 0     0     0     0     0     0     0     0     0     1     0     0     4     0
 0     0     0     0     0     0     0     0     0    -1     1     0     0     4
 0     0     0     0     0     0     0     0     0     0    -1     1     0     0
 0     0     0     0     0     0     0     0     0     0     0     0     0     0
 0     0     0     0     0     0     0     0     0     0     0     0     0     0
 0     0     0     0     0     0     0     0     0     0     0     0     4     4
 0     0     0     0     0     0     0     0     0     0     0     0     0     0
 0     0     0     0     0     0     0     0     0     0     0     0     0     0
 0     0     0     0     0     0     0     0     0     0     0     0     0     0
 0     0     0     0     0     0     0     0     0     0     0     0     0     0
 0     0     0     0     0     0     0     0     0     0     0     0     0     0
 0     0     0     0     0     0     0     0     0     0     0     0     7     7
 0     0     0     0     0     0     0     0     0     0     0     0     1     0
 0     0     0     0     0     0     0     0     0     0     0     0     0     1
 0     0     0     0     0     0     0     0     0     0     0     0     0     0

Column 15

 0
 0
 4
 0
 0
 0
 0
 0
 7
 0
 0
 4
 0
 0
 4
 0
 0
 0
 0
 0
 7
 0
 0
 1

bineq =
 1
 1
 1
 1
 1
 1
 1
 1
 1
 1
 1
 1
50
50
50
50
50
50
50
50
50
50
50
50

beq =

-4
 3
 5
 3
 4
 6
 5
 3
 5
 0
-4
-3
 0
 0
 4
 3
 7
13
 0
 2
 7
 1
 1
 1

Результатом является следующее предупреждение:

Warning: Trust-region-reflective method does not currently solve this type of problem, using active-set (line search) instead. 
> In fmincon at 439

No feasible solution found.

fmincon stopped because the size of the current search direction is less than twice the default value of the step size tolerance but constraints were not satisfied to within the selected value of the constraint tolerance.

<stopping criteria details>

Тем не менее, я вполне уверен, что у программы есть реальное решение; я должен установить что-нибудь, например, относительно направления поиска или допустимого отклонения? Я заранее ценю вашу помощь.

0 ответов

Другие вопросы по тегам