当前位置: 首页 > news >正文

数学建模:线性与非线性优化算法

🔆 文章首发于我的个人博客:欢迎大佬们来逛逛

数学建模:线性与非线性优化算法

优化算法是指在满足一定条件下,在众多方案中或者参数中最优方案,或者参数值,以使得某个或者多个功能指标达到最优,或使得系统的某些性能指标达到最大值或者最小值

优化的两个关键点:

1.明确优化的目标函数
2.明确优化变量之间需要满足的约束

线性优化

使用函数:linprog

函数原型:

[x,fval]=linprog(f,A,b,Aeq,Beq,LB,UB)
  • x:求得最优情况下变量的解
  • fval:求得最优目标值
  • f:目标函数的系数(符号按最小值标准,若目标是求解机大值可以通过添加负号改成求极小值)
  • A:不等式约束的变量系数(符合按小于标准,如果是大于约束可通过加负号变成小于)
  • b:不等式约束的常量
  • Aeq:等式约束的变量系数
  • Beq:等式约束的常量
  • LB:变量的下限
  • UB:变量的上限

例如我们需要计算求解如下线性函数的最优解:

m i n { − x 1 − 2 x 2 + 3 x 3 } x 1 + x 2 ⩾ 3 x 2 + x 3 ⩾ 3 x 1 + x 3 = 4 0 ≤ x 1 , x 2 , x 3 ≤ 2 \begin{gathered}min\{-x_1-2x_2+3x_3\} \\x_1+x_2\geqslant3 \\x_2+x_3\geqslant3 \\x_1+x_3=4 \\0\leq x_1,x_2,x_3\leq2 \end{gathered} min{x12x2+3x3}x1+x23x2+x33x1+x3=40x1,x2,x32

clc;clear;f = [-1;-2;3];
%% 不等式约束
A = [-1,-1,0;0,-1,-1];
B = [-3,-3];%% 等式约束
Aeq = [1,0,1];
Beq = [4];%% 上下限
LB = zeros(3,1);
UB = 2*ones(3,1);%% 线性优化
[x,fval] = linprog(f,A,B,Aeq,Beq,LB,UB);%% 输出结果objstr = ['目标函数最优值:',num2str(fval)];
disp(objstr);
for i = 1:length(x)xstr = ['x',num2str(i),'的系数为: ',num2str(x(i))];disp(xstr);
end

非线性优化

fmincon是MATLAB的非线性规划求解函数

[x,fval]=fmincon(fun,x0,A,b,Aeq,Beq,LB,UB,nonlcon)
  • x:求得最优情况下变量的解
  • fval:求得最优目标值
  • fun:目标函数(符号按最小值标准,若目标是求解机大值可以通过添加负号改成求极小值)
  • x0:初始解
  • A:不等式约束的变量系数(符合按小于标准,如果是大于约束可通过加负号变成小于)
  • b:不等式约束的常量
  • Aeq:等式约束的变量系数
  • Beq:等式约束的常量
  • LB:变量的下限
  • UB:变量的上限
  • nonlcon :非线性约束函数表达式

m a x { x 1 2 − x 2 2 + x 2 x 3 } 2 x 1 + x 2 + 3 x 3 ≤ 6 x 1 2 + x 1 x 2 + x 2 x 3 ≤ x 2 + 6 0 ≤ x 1 , x 2 , x 3 ≤ 1 \begin{gathered}max\begin{Bmatrix}x_1^2-x_2^2+x_2x_3\end{Bmatrix} \\2x_1+x_2+3x_3\leq6 \\x_1^2+x_1x_2+x_2x_3\leq x_2+6 \\0\leq x_1,x_2,x_3\leq1 \end{gathered} max{x12x22+x2x3}2x1+x2+3x36x12+x1x2+x2x3x2+60x1,x2,x31

clc;clear;% 指定初始解
x0 = zeros(3,1);
%% <线性>不等约束
A = [2,1,3];
B = [6];%% <线性>等式约束
Aeq = [];
Beq = [];%% 变量上下限
LB = zeros(3,1);
UB = 1*ones(3,1);%% 整体非线性优化目标函数
fun = @(x) -x(1)^2-x(2)^2+x(2)*x(3);%% 取得非线性不等式约束函数
nonlcon = @noLinearLimited;
[x,fval] = fmincon(fun,x0,A,B,Aeq,Beq,LB,UB,nonlcon);objstr=['目标函数最优值:',num2str(-fval)];
disp(objstr)
for i=1:length(x)xstr=['x',num2str(i),'的值为:',num2str(x(i))];disp(xstr)
end%% 非线性不等式约束的表达式,如果有多个,则在C后面加; 补充即可
function [C,Ceq] = noLinearLimited(x)C = [x(1)^2+x(1)*x(2)+x(2)*x(3)-x(2)-6];Ceq = [];
end

相关文章:

数学建模:线性与非线性优化算法

&#x1f506; 文章首发于我的个人博客&#xff1a;欢迎大佬们来逛逛 数学建模&#xff1a;线性与非线性优化算法 优化算法是指在满足一定条件下,在众多方案中或者参数中最优方案,或者参数值,以使得某个或者多个功能指标达到最优,或使得系统的某些性能指标达到最大值或者最小…...

数学建模--粒子群算法(PSO)的Python实现

目录 1.开篇提示 2.算法流程简介 3.算法核心代码 4.算法效果展示 1.开篇提示 """ 开篇提示: 这篇文章是一篇学习文章,思路和参考来自:https://blog.csdn.net/weixin_42051846/article/details/128673427?utm_mediumdistribute.pc_relevant.none-task-blog-…...

【C++】STL-函数对象-内建函数对象

0.前言 1.算术仿函数 #include <iostream> using namespace std;// STL-内建函数对象-算术仿函数 #include<functional> // 内建函数对象头文件//以下举例两个仿函数 -- negate and plus// negate 一元仿函数 取反仿函数 void test01() {negate<int>n;cout …...

Redis 教程 - Redis 基本操作

Redis 教程 - Redis 基本操作 Redis&#xff08;Remote Dictionary Server&#xff09;是一个开源的内存数据库&#xff0c;它提供了键值对存储和多种数据结构的支持&#xff0c;被广泛应用于缓存、消息队列、计数器等场景。本教程将介绍 Redis 的基本操作&#xff0c;包括连接…...

FreeRTOS中断与任务之间同步(Error:..\..\FreeRTOS\portable\RVDS\ARM_CM4F\port.c,422 )

前言&#xff1a; FreeRTOS中&#xff0c;中断需要注意几点&#xff1a; 何时使用中断&#xff1b;中断服务函数&#xff08;ISR&#xff09;要处理的数据量有多大&#xff0c;通常我们希望中断的切换越快越好&#xff0c;也就是说&#xff0c;ISR尽量采用耗时较少的处理方式…...

WebRTC清晰度和流畅度

WebRTC清晰度和流畅度 flyfish WebRTC提供了4种模式DISABLED&#xff0c;MAINTAIN_FRAMERATE&#xff0c;MAINTAIN_RESOLUTION&#xff0c;BALANCED // Based on the spec in // https://w3c.github.io/webrtc-pc/#idl-def-rtcdegradationpreference. // These options are …...

华为数通方向HCIP-DataCom H12-821题库(单选题:181-200)

第181题 某管理员需要创建AS Path过滤器(ip as-path-iter),允许AS_Path中包含65001的路由通过,那么以下哪一项配置是正确的? A、​​ip as-path-filter 1 permit 65001​​ B、​​ip as-path-filter 1 permit "65001​​ C、​​ip as-path-filter 1 permit *6500…...

海康威视二次开发适配安卓电视盒子

收到一个需求&#xff0c;需要在安卓电视盒子上适配海康威视摄像头视频&#xff1a; 1.类似电视家app界面&#xff0c;左边滑动菜单显示通道列表、设置按钮&#xff0c;遥控器呼出菜单。 2.遥控器操作&#xff1a;切换视频通道、云台上下左右控制、缩放等。 3.服务器域名、用…...

NIO原理浅析(二)

IO分类 阻塞和非阻塞 阻塞IO&#xff1a;用户空间引发内核空间的系统调用&#xff0c;需要内核IO操作彻底完成之后&#xff0c;返回值才会返回到用户空间&#xff0c;执行用户的操作。阻塞指的用户空间程序的执行状态&#xff0c;用户空间程序需要等到IO操作彻底执行完毕。j…...

leetcode每日一练-第53题-最大子数组和

一、思路 动态规划 二、解题方法 使用了两个变量 maxSum 和 currentSum 来分别记录全局的最大和和当前连续子数组的和。遍历数组时&#xff0c;我们不断更新 currentSum&#xff0c;并比较是否需要更新 maxSum。最后&#xff0c;maxSum 就是最大的连续子数组和。 三、code …...

京东云接入【风险识别】接口

京东云的接入文档写的真的跟逗你玩一样&#xff0c;就给提供了一个简单的实例&#xff0c;其他的全靠自己摸索。 这篇文章描述的是激动云【风险识别接口】接入&#xff0c;也会介绍如何接入其他的一些未在文章内描述到的接口。 这里使用的是python SDK&#xff0c;先安装 pip…...

在 linux 虚拟机上安装配置 hive

目录 一 下载hive 安装包 二 解压 hive 并配置环境变量 三 配置hive 的配置文件 四 更新 guava 五 hive初始化 六 开启远程连接 七 使用datagrip 连接 hive 一 下载hive 安装包 百度网盘资源如下&#xff1a; 链接: https://pan.baidu.com/s/18jF-Qri0hc52_rtL61O0YQ?…...

作品集(陆续上传中)

智能家居---不断完善中 家居-CSDN直播 家居 语音刷抖音 --- 基于串口和adb 基于守护进程的语音刷抖音-CSDN直播 基于守护进程的语音刷抖音 海天一色项目 --- 船舶靠港零碳排加热器 FTP云盘 --- 多进程和socket FTP云盘-CSDN直播 FTP云盘...

论文解读 | 三维点云深度学习的综述

原创 | 文 BFT机器人 KITTI 是作为基准测试是自动驾驶中最具影响力的数据集之一&#xff0c;在学术界和工业界都被广泛使用。现有的三维对象检测器存在着两个限制。第一是现有方法的远程检测能力相对较差。其次&#xff0c;如何充分利用图像中的纹理信息仍然是一个开放性的问题…...

基于costas环的载波同步系统matlab性能仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ............................................................................ I_Dataroun…...

解码自我注意的魔力:深入了解其直觉和机制

一、说明 自我注意机制是现代机器学习模型中的关键组成部分&#xff0c;尤其是在处理顺序数据时。这篇博文旨在提供这种机制的详细概述&#xff0c;解释它是如何工作的&#xff0c;它的优点&#xff0c;以及它背后的数学原理。我们还将讨论它在变压器模型中的实现和多头注意力的…...

mysql之存储引擎

目录 存储引擎概念 MyISAM MyISAM特点 MyISAM 表的存储格式 MyISAM适用的生产场景 InnoDB InnoDB特点 选择存储引擎依据 MyISAM 和 INNODB区别 命令 查看系统支持的存储引擎 查看表使用的存储引擎 修改存储引擎 存储引擎概念 MySQL中的数据用各种不同的技术存…...

服务器日志出现大量NTLM(NT LAN Manager)攻击

日志名称:Security 来源: Microsoft-Windows-Security-Auditing 日期: 2023/8/30 20:57:40 事件 ID:4625 任务类别:登录 级别: 信息 关键字: 审核失败 用户: 暂缺 计算机: WIN-QBJ3ORTR0CF 描述: 帐户登录失败。 主题: 安全 ID:NULL SID 帐户名:- 帐户域:- …...

Spring学习|Spring简介、IOC控制反转理解、IOC创建对象方式

Spring Spring:春天------>给软件行业带来了春天! 2002&#xff0c;首次推出了Spring框架的雏形: interface21框架! Spring框架即以interface21框架为基础,经过重新设计,并不断丰富其内涵,于2004年3月24日发布了1.0正式版。 RodJohnson&#xff0c;Spring Framework创始人&…...

DDR2 IP核调式记录2

本文相对简单&#xff0c;只供自己看看就行。从其它的博客找了个代码&#xff0c;然后记录下仿真波形。 1. 功能 直接使用quartus生成的DDR2 IP核&#xff0c;然后实现循环 -->写入burst长度的数据后读出。 代码数据的传输是32位&#xff0c;实际使用了两片IC。因此IP核也是…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题&#xff08;可多选&#xff09; 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘&#xff1a;专注于发现数据中…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言&#xff1a;语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域&#xff0c;文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量&#xff0c;支撑着搜索引擎、推荐系统、…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...