数学建模【非线性规划】

一、非线性规划简介

通过分析问题判断是用线性规划还是非线性规划

  • 线性规划:模型中所有的变量都是一次方
  • 非线性规划:模型中至少一个变量是非线性

非线性规划在形式上与线性规划非常类似,但在数学上求解却困难很多

  • 线性规划有通用的求解准确解的方法(单纯形法),一定能求得最优解
  • 非线性规划在数学上没有适合各种问题的通用解法求解严格的数值解
  • 但对数学建模来说,入门是掌握MATLAB的fmincon函数求近似解即可

二、适用赛题

本质上和线性规划一样,适用于最优化,求“怎样安排”“最大/小”“最优”等等。常见收益率、病毒传播率、经济增长率等涉及变量比值的规划问题。

三、模型流程

这里的模型流程是和线性规划一样的。

四、流程解析

1.条件假设

这个需要具体题目具体分析,有些题目通过一些前提条件假设可以很好地简化题目。

2.提取要素
①决策变量

就是提取出题目中的所有变量。

②目标函数

我们需要求得的值。

③约束条件

通过题目提取出各个变量的范围。

3.调用函数

调用MATLAB自带的fmincon函数

[x, fval] = fmincon(fun, x0, A, b, Aeq, beq, lb, ub, nonlcon)

fun单独脚本文件里定义的目标函数(或者写在代码文件末尾,调用时需加上@)
x0决策变量的初始值(影响最终结果)
A, b线性约束的不等式变量系数矩阵和常数项矩阵(≤或<)
Aeq, beq线性约束的等式变量系数矩阵和常数项矩阵
lb, ub决策变量的最小取值和最大取值
nonlcon非线性约束,包括不等式和等式

这里对参数讲解

[x, fval] = fmincon(@fun, x0, A, b, Aeq, beq, vlb);

这是一个调用fmincon函数的代码,其中@fun代表调用本文件中定义的函数,一般函数写在文件最后面。x0是一个初始值,可以通过蒙特卡罗法求一个近似解作为初始值。后面的A, b, Aeq, beq, vlb都是和线性规划一样的,因为没有最大取值和非线性约束就不用写。

注意:如果有非线性约束,写法和@fun是一样的,不过格式有点区别。

比如现在有非线性约束条件:

x1² - x2 + x3² ≥ 0

x1 + x2² + x3² ≤ 20

-x1 - x2² + 2 = 0

x2 + 2x3² = 3

那么nonlcon应该这样写

function [g, h] = fun2(x)g = [-x(1)^2 + x(2) - x(3)^2;x(1) + x(2)^2 + x(2)^2 - 20];h = [-x(1) - x(2)^2 + 2;x(2) + 2*x(2)^2 - 3];
end

可以看到不等式都是标准型且右边都是和0比较了。

具体情况可以去MATLAB官网查询。

最终解出近似解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/473690.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

h5和微信小程序实现拍照功能(其中h5暂时无法调用闪光灯)

代码如下 <template><view class"camera"><!-- #ifdef MP --><camera ref"myCamera" id"myCamera" device-position"back" :flash"flash" error"error" style"display: block;"&…

Vue2:组件间通信框架Vuex

一、原理图及作用 功能介绍&#xff1a; 简单说就是Vue项目中&#xff0c;各个组件间通信的一种框架 相较于之前的全局事件总线&#xff0c;该框架更实用&#xff01; 提高了代码的复用率&#xff0c;把核心业务代码&#xff0c;集中到store中&#xff0c;这样&#xff0c;一处…

Java Lambda表达式:简化编程,提高效率

Java Lambda表达式&#xff1a;简化编程&#xff0c;提高效率 1. 使用Lambda表达式进行集合遍历1.1 未使用Lambda表达式&#xff1a;1.2 使用Lambda表达式&#xff1a; 2. 使用Lambda表达式进行排序2.1 未使用Lambda表达式&#xff1a;2.2 使用Lambda表达式&#xff1a; 3. 使用…

市场复盘总结 20240208

仅用于记录当天的市场情况&#xff0c;用于统计交易策略的适用情况&#xff0c;以便程序回测 短线核心&#xff1a;不参与任何级别的调整&#xff0c;采用龙空龙模式 一支股票 10%的时候可以操作&#xff0c; 90%的时间适合空仓等待 二进三&#xff1a; 进级率中 25% 最常用的…

Practical User Research for Enterprise UX

2.1 Why It’s Hard to Get Support for Research in Enterprises 2.1.1 Time and Budget Instead of answering the question “What dowe gain if we do this research?”, ask instead “What do we stand to lose if we don’t do the research?” 2.1.2 Legacy Thinkin…

Mysql第二关之存储引擎

简介 所有关于Mysql数据库优化的介绍仿佛都有存储引擎的身影。本文介绍Mysql常用的有MyISAM存储引擎和Innodb存储引擎&#xff0c;还有常见的索引。 Mysql有两种常见的存储引擎&#xff0c;MyISAM和Innodb&#xff0c;它们各有优劣&#xff0c;经过多次优化和迭代&#xff0c;…

数据结构对链表的初步认识(一)

已经两天没有更新了&#xff0c;今天就写一篇数据结构的链表吧&#xff0c;巩固自己也传授知识&#xff0c;不知道各位是否感兴趣看看这一篇有关联表的文章。 目录 链表的概念与结构 单向链表的实现 链表各个功能函数 首先我在一周前发布了一篇有关顺序表的文章&#xff0c;…

漏洞原理 | CORS跨域学习篇

本文由掌控安全学院 - 帆先生 投稿 0x01&#xff1a;原理 1、 什么是CORS 全称跨域资源共享&#xff0c;用来绕过SOP(同源策略)来实现跨域访问的一种技术。 CORS漏洞利用CORS技术窃取用户敏感信息 2、 同源策略简介 同源策略是浏览器最核心也是最基本的安全功能&#xff0…

Netty中的内置通信模式、Bootstrap和ChannelInitializer

内置通信传输模式 NIO:io.netty.channel.socket.nio 使用java.nio.channels包作为基础–基于选择器的方式Epoll:io.netty.channel.epoll由JNI驱动的epoll()和非阻塞IO.这个传输支持只有在Linux上可用的多种特性&#xff0c;如果SO_REUSEPORT&#xff0c;比NIO传输更快&#xf…

layui表格中使用cascader后导致表格滚动条消失

修改前&#xff0c;受影响页面 修改后最终想要的效果 修改方法

TIM编码器接口(编码器测速)

定时器编码器接口自动计次--------->对应手册14.3.12编码器接口模式 应用场景&#xff1a; 电机控制PWM驱动电机&#xff0c;编码器测电机速度&#xff0c;PID算法闭环控制 ------------------------------------------------------------------------------------------…

Java IO详解

一、流的概念与作用 流(Stream)&#xff1a; 在Java IO中&#xff0c;流是一个核心的概念。流从概念上来说是一个连续的数据传输过程。人们根据数据传输特性将流抽象为各种类&#xff0c;方便更直观的进行数据操作。你既可以从流中读取数据&#xff0c;也可以往流中写数据。流的…