成objconstr传递了额外的参数
2视图(30天)
显示旧的评论
你好,
我使用surrogateopt()函数,如下所示:
functionPointer = @cost;
objconstr = packfcn (functionPointer, []);
选择= optimoptions (“surrogateopt”,…
“PlotFcn”,“surrogateoptplot”,…
“MaxFunctionEvaluations”,500,…
“CheckpointFile”,“\ checkpoint.mat”);
乌兰巴托= (100 100 100);
磅= (0 0 0);
intcon = (1 2 3);
[k fval exitflag、输出试验]= surrogateopt (objconstr、磅、乌兰巴托、intcon选项);
surrogateopt()函数需要类
objconstr
。在创建
objconstr
对象的函数指针传递:
functionPointer = @cost;
objconstr = packfcn (functionPointer, []);
根据文档,只有参数传递到成本函数是变量用于直接计算成本。这个变量是受限的
乌兰巴托
一个
磅
变量。如果可能的话,我想通过在另一个inpur可变成本函数(两个输入而不是一个)。为了说明我的请求,见下面所需的代码:
functionPointer = @cost (k, desiredObject);
objconstr = packfcn (functionPointer, []);
根据我的了解MATLAB处理函数指针,这种行为应该是可能的。然而,我必须修改代码
surrogateopt ()
调用这个函数指针。任何解决这个问题
没有
修改
surrogateopt ()
会很有帮助。
谢谢你!
伊森
0评论
答案(1)
史蒂文的主
2021年9月8日
ros = @ (x, k) k * x (x (2) - (1) ^ 2) ^ 2 + (1 - x (1)) ^ 2;%添加一个参数k
objconstr = packfcn (@ (x) ros (x, 100), @unitdisk);% k = 100 k的值修正
2磅= [2];
乌兰巴托=磅;
[x, fval] = surrogateopt (objconstr磅,乌兰巴托);%解决的例子
函数测查[c] = unitdisk (x)
c = x (1) ^ 2 + (2) ^ 2 - 1;
测查= [];
结束