我正在使用Matlab from graphviz import render
render('dot', 'png', 'udo.dot')
函数,但我想我没有如何使其正常工作。
我需要优化两个参数的值:作用在一个参数fmincon
上的err1
和err2
,以便找到允许{ {1}}和param_1
达到理想参数param_1
和err1
两个理想参数是已知的。为了计算err2
和ideal1
,我使用了两个基本相同的函数,一个函数的输出为ideal2
,另一个函数的输出为err1
。
在优化之前,我有一个函数将两个参数作为输出并计算要用作约束的距离
err2
我认为问题在于这两个函数中输入参数的数量:20个输入参数,其中大多数是标量值,其中一些是矩阵,文件等...
err1
然后,我需要其他两个函数来转换我需要的两个值中的两个err2
,ideal1 = [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无法继续。
答案 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 <= b1
和a21*x1 + a22*x2 <= b2
。
如果您要使“ real_distance”和“ ideal_distance”分别为上限和下限,则应编写(假设:real_distance 因为lb和ub(下限和上限)是fmincon中的第7个和第8个参数,而不是第3个和第4个参数。fmincon(err1_convert, param_1, [], [], [], [], real_distance, ideal_distance)