二次约束在Matlab /优化错误2020 b但不是2020 Matlab

3视图(30天)
你好,我有Matlab 2020 a和2020 b在不同的电脑。我的代码运行二次最优化(二次目标函数,二次约束)新版本中遇到错误但不是Matlab的旧版本。
这是一个例子:我写了下面的代码在两个圆之间找到最短的距离:
% % %定义优化问题
CircleDistance = optimproblem;
% % % % %变量
x1 = optimvar (x1的1);
日元= optimvar (“日元”1);
x2 = optimvar (“x2”1);
y2 = optimvar (“日元”1);
%的约束
CircleDistance.Constraints。为Circle1 = x1。^ 2 +日元。^ 2 < = 5;
CircleDistance.Constraints。Circle2 = (x2-10)。^ 2 + (y2-5)。^ 2 < = 5;
%目标函数
CircleDistance。目标= (x1, x2))。^ 2 + (y1, y2)。^ 2;
%初始点
x0。x1 = 0;
x0。日元= 0;
x0。x2 = 10;
x0。y2 = 5;
%解决这个问题
x =解决(x0 CircleDistance);
使用fmincon解决问题。局部最小值发现,满足约束。优化完成,因为目标函数中引入可行的方向,在最优值的宽容,和约束满足约束的值公差内。
x =结构体字段:
y2 x1, x2 2.0000: 8.0000日元:1.0000:4.0000
在Matlab 2020,我得到正确的解决方案(如上面列出的),但我得到以下错误当我运行Marlab 2020 b中的代码(在不同的电脑上)。
错误使用strjoin(38)行
第一个参数应该是一个细胞的字符串数组。
错误在optim.internal.problemdef.compile.compileQuadraticConstraints
错误在optim.problemdef.OptimizationProblem / compileConstraints
错误在optim.internal.problemdef.ProblemImpl / prob2structImpl
错误在optim.internal.problemdef.ProblemImpl / solveImpl
错误在optim.problemdef.OptimizationProblem /解决
错误在Untitled(27)行
x =解决(x0 CircleDistance);
有人能帮帮我吗?提前谢谢你。
2的评论
年代
年代 2021年9月10日
当我运行
> > - strjoin
matlab2020b机,它给了我两个地址:
(地址1)\ MATLAB \ strjoin.m
(地址2)\ MATLAB工具箱\ R2020b \ \ MATLAB \ strfun \ strjoin.m%阴影
我删除了strjoin。m与第一个地址(从2014年)看起来很旧,现在解决了正确的代码。
当我运行它matlab2020a机器上只给了我一个地址在2020年的一个文件夹。
我非常感谢你指出我在这个方向。
你能告诉我发生了什么吗?是strjoin MATLAB运行一个旧版本。这是基于不相容问题的优化?
谢谢你的帮助

登录置评。

答案(1)

马特·J
马特·J 2021年9月10日
是strjoin MATLAB运行一个旧版本。这是基于不相容问题的优化?
是的,看来。

类别

找到更多的在二次规划和锥编程帮助中心文件交换

下载188bet金宝搏


释放

R2020b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!

翻译的