我目前很难尝试以类似的方式在matlab中使用求解器我在excel中使用求解器。 我的问题如下:
我有一个50x6矩阵(名为TO)我需要尽量减少(目标是0)。该矩阵是函数f的结果,其中MO是必须改变以达到目标的矩阵。
到目前为止,我已尝试使用 fgoalattain ,这是我写的代码:
h = @(MO)f(A,B,alpha,MO,OA,OB,50);
goal = zeros(50,6);
weight = ones(50,6);
[MO,fval] = fgoalattain(h,MO,goal,weight);
MO是必须变化的矩阵。它的大小为12x12。 我希望我的函数f(TO)的结果是一个填充值尽可能接近0的矩阵。
运行代码时,我得到以下结果:
Solver stopped prematurely.
fgoalattain stopped because it exceeded the function evaluation limit,
options.MaxFunEvals = 14500 (the default value).
我尝试使用选项来增加迭代次数,但无济于事:
options = optimset('Display','iter','Algorithm','interior-point','MaxIter',5000000,'MaxFunEvals',5000000);
[MO,fval] = fgoalattain(h,MO,goal,weight,[],[],[],[],[],[],[],options);
我迷失了使用求解器,它与我在excel中使用的非常不同,而且我还是matlab的新手。任何帮助将非常感谢。谢谢!