MATLAB | 优化工具箱(optimization toolbox)改版后的live editor工具咋用

news/2024/12/22 15:47:37/

优化工具箱(optimization toolbox)改版后的live editor工具咋用?本来是不咋想讲这玩意的,但奈何问的人还不少,这里简单讲一下咋用哈。

很多人下了比较新版本MATLAB就顺手像往常一样点开了优化工具箱,但是熟悉的优化APP界面却并没蹦出来,反而出来了这样一个警告,嗯?实时编辑器任务是啥玩意??

优化live editor创建

首先要创建实时脚本:

之后点击 实时编辑器->任务->优化工具

之后会出现个这玩意:

我们先讲基于问题,点击左侧基于问题方法:


基于问题简单优化(求最大值)

假设要求最值的函数为:

5.*sin(x)+6.*cos(y).^2

有约束条件:

x^2+y^2<=4

优化起点为:

x=1;y=0;

首先既然有x,y俩变量,我们就需要在最前面定义俩变量,可以点击最右侧+号新增变量:

点击添加可以增添约束:

需要注意的是默认的目标和约束那灰色的字只是填写格式提示,并没法实际使用。

我们将目标设置为最大值,修改目标与约束:

都设置好后点击下方<求解问题>,即可开始求解:

求解结果会显示在右侧:

同时工作区也会有求解结果:

可以通过solution.(变量名)进行获取变量数值:

solution.x% ans =
%     1.5708

点击下箭头可以获取由整个过程自动生成的代码:

可以看到代码和注释写的还是不错的:

% 创建优化变量
x3 = optimvar("x");
y3 = optimvar("y");% 设置求解器的初始起点
initialPoint.x = ones(size(x3));
initialPoint.y = zeros(size(y3));% 创建问题
problem = optimproblem("ObjectiveSense","Maximize");% 定义问题目标
problem.Objective = 5.*sin(x3)+6.*cos(y3).^2;% 定义问题约束
problem.Constraints = x3^2+y3^2 <= 4;% 显示问题信息
show(problem);% 求解问题
[solution,objectiveValue,reasonSolverStopped] = solve(problem,initialPoint);% 显示结果
solution
reasonSolverStopped
objectiveValue% 清除变量
clearvars x3 y3 initialPoint reasonSolverStopped objectiveValue

含特殊函数优化

目标和约束都可以选择局部函数或者函数文件,选择函数文件的话就直接选已经编辑好的m文件,选择局部函数可以在实施编辑器末尾自定义个局部函数:


基于求解器

在一开始选择方法时选择基于求解器会变成这样:

这个选择用起来就麻烦很多,直接用官方给的例子讲一下叭,首先随便在一个地方运行代码定义初始值及参数值:

x0 = [2;1];
a = 100;

由于目标函数及约束这次只能函数文件,局部函数或者函数句柄,这里为了方便就在实时编辑器文末创建局部函数:

之后就是各种设置:

可以选中求解器点击<运行节>运行,或者点击求解器右上角三个点后点击<运行节>运行:

自动生成的代码:

% 将固定参数传递给 objfun
objfun = @(x)objectiveFcn(x,a);% 设置非默认求解器选项
options = optimoptions("fmincon","PlotFcn","optimplotfvalconstr");% 求解
[solution,objectiveValue] = fmincon(objfun,x0,[],[],[],[],[],[],...@constraintFcn,options);% 清除变量
clearvars objfun options

运行过程绘图:


求解结果:

solution
% solution =
%    1.1413
%    1.3029objectiveValue
% objectiveValue =
%    0.0200[ccons,ceqcons] = constraintFcn(solution)
% ccons =
%   -2.0000   -0.0000
% ceqcons =
%     []

对比起来还是基于问题的方法用起来更方便点。


官方示例打开

警告界面点击左侧或者右侧的方法就可以跳出官方示例:

大概长这样:


http://www.ppmy.cn/news/48425.html

相关文章

Qt开源项目:校医院远程诊断系统介绍

本人研一参考技术书籍开发的一款Qt程序&#xff0c;两年前已上传到GitHub&#xff0c;有兴趣的同学可以去看看。可能之前上传的项目不够完整&#xff0c;导致有一些同学没有在自己的环境上跑通&#xff0c;所以今天将整个工程都重新上传一遍&#xff0c;包括使用到的opencv的动…

富士康转移3000亿产能,iPhone的印度产能倍增,不再“赏饭吃”

日前消息指今年三月份印度的iPhone产量已经是去年的四倍之多&#xff0c;占比将近7&#xff05;&#xff0c;显示出苹果和富士康都在加速提升印度的iPhone产能&#xff0c;凸显出他们的决心&#xff0c;这对中国制造业将带来深远影响。 一、富士康对中国制造影响巨大 2021年的数…

Huffman 编码

1.Huffman编码 1952年提出一种编码方法&#xff0c;该方法完全依据字符出现概率来构造异字头的平均长度最短的码字&#xff0c;有时称之为最佳编码&#xff0c;一般就叫做Huffman编码(有时也称为霍夫曼编码)。 2.Huffman树 树是一种重要的非线性数据结构&#xff0c;它是数据元…

除了Navicat和DBeaver,还有没有免费又好用的数据库管理工具推荐

最近看到一款数据库Web版工具&#xff0c;SQL Studio&#xff0c;是麦聪软件公司出品的&#xff0c;主打的就是一个&#xff0c;不使用任何的开源代码&#xff0c;产品由中国研发团队100%自主研发。 SQL Studio是一款可创建多个连接的Web版数据库管理开发工具&#xff0c;让你…

企业工商四要素核验 API:有效应对商业欺诈和恶意交易的利器

引言 企业工商四要素核验是一种用于验证企业基本信息的方法&#xff0c;主要包括企业名称、社会统一信用代码、法人名称、法人身份证四个要素。这些要素是企业注册时必须提供的信息&#xff0c;通过对这些信息的验证&#xff0c;可以确定企业的真实性和合法性&#xff0c;通常…

leetcode160. 相交链表

给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。 图示两个链表在节点 c1 开始相交&#xff1a; 题目数据 保证 整个链式结构中不存在环。 注意&#xff0c;函数返回结果后&…

OpenAI-ChatGPT最新官方接口《速率并发限制》全网最详细中英文实用指南和教程,助你零基础快速轻松掌握全新技术(八)(附源码)

Rate limits 速率并发限制 前言Introduction 导言What are rate limits? 什么是速率限制&#xff1f;Why do we have rate limits? 为什么我们有速率限制&#xff1f;What are the rate limits for our API? 我们API的速率限制是什么&#xff1f;GPT-4 rate limits GPT-4速率…

记一次mysql cpu 异常升高100%问题排查

此服务器为一个从库&#xff0c;用于数据的导出业务&#xff0c;服务器配置较低&#xff0c;日常的慢sql也比较多。 上午11点左右cpu异常告警&#xff0c;如下图所示&#xff0c; cpu使用率突增到50%&#xff0c;下午2点左右突增到100% &#xff0c;登录服务器top命令查看cpu升…