Matlab中的fmincon输入参数过多

时间:2019-02-06 11:20:38

标签: matlab optimization

我正在使用Matlab from graphviz import render render('dot', 'png', 'udo.dot') 函数,但我想我没有如何使其正常工作。

我需要优化两个参数的值:作用在一个参数fmincon上的err1err2,以便找到允许{ {1}}和param_1达到理想参数param_1err1

两个理想参数是已知的。为了计算err2ideal1,我使用了两个基本相同的函数,一个函数的输出为ideal2,另一个函数的输出为err1

在优化之前,我有一个函数将两个参数作为输出并计算要用作约束的距离

err2

我认为问题在于这两个函数中输入参数的数量:20个输入参数,其中大多数是标量值,其中一些是矩阵,文件等...

err1

然后,我需要其他两个函数来转换我需要的两个值中的两个err2ideal1 = [0;0.3536;0.0000;-0.3536;-0.5000;-0.3536;-0.0000;0.3536;0.5000]; ideal2 = [0;0.3536;0.5000;0.3536;0.0000;-0.3536;-0.5000;-0.3536;-0.0000]; err1 = [0;0.1750;-0.1167;-0.2917;-0.3500;-0.1750;0.1167;0.3500;0.3500]; err2 = [0;0.2917;0.2917;0.1750;-0.1167;-0.2917;-0.2917;-0.1167;0.1167]; ideal_distance = sum(sqrt(ideal1.^2+ideal2.^2)) real_distance = sum(sqrt(err1.^2+err2.^2))

err1 = @(param_1) compute_err1_funct(param_1,param_2,param_3,...,param_20);
err2 = @(param_1) compute_err2_funct(param_1,param_2,param_3,...,param_20);

最后我尝试找到最佳结果

err1

我在这里得到错误

  

输入参数过多。

err2内传播的

  

fmincon中的错误(第546行)         initVals.f = feval(funfcn {3},X,varargin {:});

     

原因:       初始目标函数评估失败。 FMINCON无法继续。

1 个答案:

答案 0 :(得分:0)

(1)您的错误可能是由于“ err1_convert”定义中的某些错误引起的,可能是由于您在此处未指定的“ transf_funct”函数的定义中的某些错误引起的。确保函数定义中的输入变量数目以及调用时的数目完全相同。

(2)可能不是造成此特定错误的原因,但是您还需要修正另一件事以避免(不同的)错误:您的参数是长度为2的向量,因此如果将其添加到{ {3}}第三个和第四个参数(A和b),则A(“ real_distance”)必须是2x2矩阵,b(ideal_distance)必须是长度为2的向量(根据代码,它们都是标量。)如果A = [a11,a12 ; a21,a22]b = [b1;b2],则限制为:a11*x1 + a12*x2 <= b1a21*x1 + a22*x2 <= b2

如果您要使“ real_distance”和“ ideal_distance”分别为上限和下限,则应编写(假设:real_distance

fmincon(err1_convert, param_1, [], [], [], [], real_distance, ideal_distance)

因为lb和ub(下限和上限)是fmincon中的第7个和第8个参数,而不是第3个和第4个参数。