非线性规划快速入门和练习题集

news2024/11/17 5:53:22

目录

定义

标准形式

练习题1

练习题2

 练习题3


 

定义

当目标函数或者约束条件中含有非1次项的时候,会出现非线性函数的规划。

标准形式

                        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        min f(x)\\ s.t\left\{\begin{matrix}A\cdot x\leq b \\ Aeq\cdot x\leq beq \\ c(x)\leq 0 \\ ceq(x)=0 \\ lb\leq x\leq ub \end{matrix}\right.

其中f(x)是标准函数,A,b,Aeq,beq,lb,ub是相应维数的矩阵和向量,c(x)和ceq(x)是非线性向量函数。

[x,y]=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
%x:自变量
%y:最终值
%fun:目标函数形式,通常再命名一个.m文件
%x0:自变量的初始值,一般是一个随机数,比如x1,x2,x3用rand(3,1),表示生成3行1列的随机数
%A:不等式约束系数
%b:不等式约束的右侧值
%Aeq:等式约束的系数
%Beq:等式约束的右侧值
%lb:下界
%ub:上界
%nonlcon:是用.m文件定义的非线性向量函数c(x),ceq(x)
%options:定义优化参数,可以使用MATLAB缺省的数设置

如果没有线性不等式约束或者线性等式约束写成[]

练习题1

                                                 min f(x)=x_{1}^{2}+x_{2}^{2}+x_{3}^{2}+8\\ s.t\left\{\begin{matrix}x_{1}^{2}-x_{2}+x_{3}^{2}\geq 0 \\ x_{1}+x_{2}^{2}+x_{3}^{2}\leq 20 \\ -x_{1}-x_{2}^{2}+2=0 \\ x_{2}+2x_{3}^{2}=3 \\ x_{1},x_{2},x_{3}\geq 0 \end{matrix}\right.

生成fun1目标函数,命名为fun1.m文件:

function f=fun1(x);
f=sum(x.^2)+8;
%也可以写成f=x(1)^2+x(2)^2+x(3)^2+8

生成fun2非线性规划约束函数,命名为fun2.m文件

function [g,h]=fun2(x);
g=[-x(1)^2+x(2)-x(3)^2;x(1)+x(2)^2+x(3)^2-20];%g返回非线性不等式约束的条件
h=[-x(1)-x(2)^2+2;x(2)+2*x(3)^2-3];%返回非线性等式约束的条件

主函数调用fmincon函数的功能,生成x,y的结果,命名为主函数main.m文件:

[x,y]=fmincon('fun1',rand(3,1),[],[],[],[],zeros(3,1),[],'fun2');
x,y

练习题2

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        minf(x)=x_{1}^2+x_{2}^{2}+8\\ s.t\left\{\begin{matrix}x_{1}^{2}-x_{2}\geq 0 \\ -x_{1}-x_{2}^{2}+2=0 \\ x_{1},x_{2}\geq 0 \end{matrix}\right.

fun1函数

function f=fun1(x);
f=x(1)^2+x(2)^2+8;

 fun2函数

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

main函数

[x,y]=fmincon('fun1',rand(2,1),[],[],[],[],zeros(2,1),[],'fun2')
x,y

 练习题3

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        max \, z=\sqrt{x1}+\sqrt{x2}+\sqrt{x3}\\ s.t\left\{\begin{matrix}x_{1}\leq 400 \\ 1.1x_{1}+x_{2}\leq 440 \\ 1.21x_{1}+1.1x_{2}+x_{3}\leq 484 \\ 1.331x_{1}+1.21x_{2}+1.1x_{3}+x_{4}\leq 532.4 \\ x_{i}\geq 0,i=1,2,3,4 \end{matrix}\right.

fun1.m函数:

function f=fun1(x);
f=-sqrt(x(1))-sqrt(x(2))-sqrt(x(3))-sqrt(x(4));

fun2.m函数

function [g,h]=fun2(x);
g=0;
h=0;

main.m函数

A=[1,0,0,0;1.1,1,0,0;1.21,1.1,1,0;1.331,1.21,1.1,1];
b=[400;440;484;532.4];
[x,y]=fmincon('fun1',rand(4,1),A,b,[],[],zeros(4,1),[],'fun2');
x,-y

结果为:

 

 

还有另外的做法,就是把所有的约束条件当成非线性规划,那么线性规划的约束条件为[ ] [ ] [ ] [ ] ,不过麻烦:

 fun1.m:

function f=fun1(x);
f=-sqrt(x(1))-sqrt(x(2))-sqrt(x(3))-sqrt(x(4));

fun2.m:

function [g,h]=fun2(x);
g(1)=x(1)-400;
g(2)=1.1*x(1)+x(2)-440;
g(3)=1.21*x(1)+1.1*x(2)+x(3)-484;
g(4)=1.331*x(1)+1.21*x(2)+1.1*x(3)+x(4)-532.4;
h=0;

 main.m:

[x,y]=fmincon('fun1',rand(4,1),[],[],[],[],zeros(4,1),[],'fun2');
x,-y

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Basic——C++类型转换(转型操作符详解)

C转型操作符 1.C语言类型转换存在的隐患2.static_cast3.const_cast介绍测试案例 4.dynamic_cast5.reinterpret_cast 1.C语言类型转换存在的隐患 数据丢失:当将一个较大的数据类型转换为较小的数据类型时,可能会导致数据丢失。例如,将一个浮点…

mac M1 安装nacos

背景 m1不支持本地安装,只能用docker : “由于 rocksdb 暂不支持 M1 平台,所以使用 Zulu JDK 的小伙伴们运行 Nacos 2.x 版本会报错,网上通用的解决方案是使用 Oracle JDK 来运行 Nacos 2.x 版本,但对于强迫症的我来说…

计算机网关原理、子网掩码原理(路由器、交换机)

文章目录 网关网关的历史网关的功能网关的原理相关疑问为什么用子网掩码与IP地址进行与运算来确定一个IP地址所属的子网?网关地址是谁定的,是配置路由的人随意定的吗?(配置人员定的)如何正确设置网关地址(路…

java的断言

断言介绍 Java的断言就是一条assert 声明,其中包含了一个布尔表达式。 断言可以被启用或者禁用,默认是禁用的。 断言被启用的情况下,执行到断言的声明,就会计算布尔表达式的值。如果表达式的值为false,那么就会抛出一…

【Elasticsearch】安装elasticsearch

目录 安装elasticsearch 1.部署单点es 1.1.创建网络 1.2.加载镜像 1.3.运行 2.部署kibana 2.1.部署 2.2.DevTools 3.安装IK分词器 3.1.在线安装ik插件(较慢) 3.2.离线安装ik插件(推荐) 1)查看数据卷目录 …

十三、Docker Compose使用和主要功能

学习参考:尚硅谷Docker实战教程、Docker官网、其他优秀博客(参考过的在文章最后列出) 目录 一、核心概念二、主要功能二、docker compose常用命令三、docker compose 案例3.1 自己写一个微服务模块3.2 用Dockerfile将上面的模块编排(不使用compose)3.3 使用compose编…

滑动平均值滤波(CODESYS ST源代码)

有关滑动平均值滤波算法的详细介绍请查看下面文章链接,这里不再赘述: 博途PLC各种平均值滤波算法对比(SCL+梯形图代码)_模拟量平均值滤波梯形图程序_RXXW_Dor的博客-CSDN博客此文会对比各种滤波算法的优劣,给出具体算法描述和测试代码算术平均值不区分原始数据的质量,特…

高阶组件/react组件复用

也可以用children模式 优化 高阶组件 组件名称相同设置组件名字 效果 解决props丢失 setstate是异步更新的 推荐语法 页面更新完后的回调函数 组件性能优化 1. 2.

WAIC2023会后记

听了3天WAIC的会, 大开眼界,算是上了堂大课。 本次参会的目的是听听AI企业信息化的想法、理论和实践。以进一步探索可能的业务场景。三天的会结束后,留下深刻印象的有如下几点。 大模型当道 2023这次大会的主题成了大模型,谈的…

超链接标签和列表标签

五、超链接标签 href: target: 行内标签,没有href属性和span没区别 有href不写值,跳转当前页面,即刷新效果 写完之后后端数据还没过来,不知道要跳转哪个页面,不想进行刷新页面,加#,叫锚点 回到底…

Gradle插件开发

Gradle插件开发 本文链接:https://blog.csdn.net/feather_wch/article/details/131623779 什么是插件? 开发方式 插件扩展 加固实战

[工业互联-16]:工业Windows操作系统与实时性方案

目录 第1章 Windows操作系统 1.1 简介 1.2 Windows架构 第2章 工业Windows操作系统 2.1 简介 2.2 常见的工业Windows操作系统版本 2.3 定制化工业Windows 第3章 EtherCAT实时Windows方案 3.1 实时Windows的缘由 3.2 总体框架 3.3 ROS2方案 3.4 方案1:使…

PXE-网络批量装机

目录 【1】安装dhcp、tftp-server、httpd、syslinux、关闭防火墙、挂载镜像 【2】配置dhcp服务 【3】配置tftp服务 【4】拷贝pxe服务器的相关文件到tftp的根目录 【5】创建pxelinux.cfg文件 【6】配置httpd 【7】Kickstart自动化文件 【8】重启所有服务 【9】验证 【1…

C#对DataGridView控件的常用操作

1998年我开始接触Powerbuilder 6.5之前,使用过FoxPro 2.5B和Visual Base 5,比较而言,对数据库应用的开发,FoxPro 2.5B对开发人员很友好,开发程序速度快,Visual Base 5则几乎没有多少的优势,用上…

webpack5搭建与基本配置

webpack基础构建 新建文件夹进入文件夹查看是否安装node,命令:node-v创建package.json文件,命令:npm init -y安装webpack和webpack-cli,(命令自动创建出package-lock.json文件和node_modules文件夹&#x…

残差网络(ResNet) -深度学习(Residual Networks (ResNet) – Deep Learning)

在第一个基于cnn的架构(AlexNet)赢得ImageNet 2012比赛之后,每个随后的获胜架构都在深度神经网络中使用更多的层来降低错误率。这适用于较少的层数,但当我们增加层数时,深度学习中会出现一个常见的问题,称为消失/爆炸梯度。这会导…

MachineLearningWu_6_FeatureScaling

x.1 feature scale 接下俩我们将考虑数据的不一致性,例如有的数据的范围很大,可能分布在好几千,但是我们的weight矩阵最好是在[-1, 1]的小数,如果数值太大就会导致我们的weight变化也很大,如下面这个例子就并不好&…

编译型语言和解释型语言的区别

1.操作系统怎么识别编程语言 计算机能识别二进制数,但是无法识别编程语言,比如你把 01000001100通过相关手段输入计算机中计算机就能识别其中的含义并且执行对应的命令,但是你输入 print(hello world)计算机就无法识别其含义,这就…

基于springboot+mybatis-plus+mysql+vue音乐网站管理系统

基于springbootmybatis-plusmysqlvue音乐网站管理系统 一、系统介绍1、系统主要功能:2.涉及技术框架:3.项目说明: 二、功能展示三、其它系统四、获取源码 一、系统介绍 1、系统主要功能: 音乐播放 用户登录注册 用户信息编辑、头…