大魔王� 2024-07-15 12:53 采纳率: 0%
浏览 11

使用Matlab 的函数 fmincon 求最小约束非线性多变量函数遇见的问题

使用Matlab 的函数 fmincon 求最小约束非线性多变量函数遇见的问题
一个非线性编程求解器,算出指定的问题的最小值,使用了一些博主的案例代码,但都运行不成功,matlab也显示已安装optimization toolbox,希望有了解的博主帮我看一下是哪里的原因。
案例代码1:

img


程序运行失败:

img


案例代码2:

img


程序运行失败:

img

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-07-15 12:53
    关注

    引自免费微信小程序:皆我百晓生

    从您给出的代码和描述来看,您在尝试使用MATLAB的fmincon函数求解非线性约束优化问题时遇到了一些问题。我会尝试帮助您解决这些问题。

    首先,让我们逐一分析您给出的案例代码和可能出现的问题:

    案例代码1问题分析:

    1. 函数定义格式问题:在MATLAB中定义函数时,应使用function关键字并明确指定输入和输出。例如,对于fu函数,应定义为:
    function f = fu(a)
        x = a(1); y = a(2);
        f = x^2 + y^2 - x*y - 10*x - 4*y + 60;
    end
    

    注意这里的end关键字表示函数定义的结束。您的代码中似乎缺少了这些部分。 2. 约束函数格式问题:对于fuu函数,它应该返回两个输出:不等式约束c和等式约束d。定义方式如下:

    function [c, d] = fuu(a)
        x = a(1); y = a(2);
        c = exp(y) - 64; % 不等式约束
        d = x^2 + y^2 - 34; % 等式约束
    end
    

    同样需要注意end关键字。 3. 调用fmincon的格式问题:在调用fmincon时,确保所有参数都按照正确的顺序和格式传递。特别是约束函数的调用,需要确保它们的格式正确。此外,参数名称如Iu在MATLAB中通常不使用下划线(除非有特殊原因),并且它们的命名应与函数内部的变量一致。另外,函数调用中的'fuu'部分可能不需要引号。请确保它与之前定义的函数名一致。最后,请确保所有变量都已正确定义并传递给函数。从您提供的代码中看,可能还存在其他一些格式或拼写错误。

    案例代码2问题分析:

    1. 命名和定义问题:首先确保所有的函数名、变量名都已经正确定义并且在同一作用域内。在您的代码中提到了 'mycon' 函数,但似乎没有提供正确的定义或调用方式。请确保该函数已经正确定义并传递给了 fmincon 函数。此外,变量名称如 lbub 通常用于表示线性约束的下界和上界,但在您的代码中似乎使用了错误的格式或变量名。请检查并确保它们的正确性。如果您的目的是使用非线性约束,请确保您的代码正确反映了这一点。例如,对于非线性约束条件,您可能需要定义一个专门的非线性约束函数并将其传递给 fmincon 函数。同时检查所有函数调用和参数传递是否正确无误。对于拼写错误、变量未定义或未正确传递等问题,需要仔细检查并修正代码中的错误。由于代码较长且涉及多个文件或编辑器中的片段,难以直接指出具体的问题所在。建议您仔细检查上述提到的关键点,并尝试逐一解决可能的问题点。如果问题仍然存在,建议您逐步调试代码或简化代码以更容易地找到问题所在。希望这些分析能够帮助您解决问题!如果有任何其他问题或需要进一步的帮助,请告诉我!
    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 7月15日

悬赏问题

  • ¥200 csgo2的viewmatrix值是否还有别的获取方式
  • ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
  • ¥15 请把下列每一行代码完整地读懂并注释出来
  • ¥15 pycharm运行main文件,显示没有conda环境
  • ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件
  • ¥15 为什么eclipse不能再下载了?
  • ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
  • ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
  • ¥15 特定网页无法访问,已排除网页问题
  • ¥50 如何将脑的图像投影到颅骨上