数学建模·非线性规划

整型规划

适用于一个变量或多个变量的值只能是整型的情况

整形规划的分类

0-1背包问题

对于一个物品来说,只有选和不选两种情况
表现为单下标,单变量问题

例:建设学校问题
在这里插入图片描述

  • 对于每个学校来说只有选和不选两种情况,在数学上我们用0-1变量来表示
    在这里插入图片描述

  • 约束条件如下
    例如对于A1来说,至少从x1,x2,x3中选择至少建设一所,反映在数学上就是0-1变量和>=1
    在这里插入图片描述

蒙特卡洛模拟代码

%% 蒙特卡洛建校问题
clear;clc;
n=10000;
res_min=+inf;
rex_x=0;
for i=1:nx=randi([0,1],1,6);if x(1)+x(2)+x(3)>=1&x(4)+x(5)>=1&x(3)+x(5)>=1&x(2)+x(4)>=1&x(5)+x(6)>=1&x(1)>=1if sum(x)<res_minres_min=sum(x);res_x=x;endend
end
disp("最终结果为");
disp(res_x);
disp(res_min);

指派问题

例:工厂的设备分配问题
在这里插入图片描述

拥有两个对象,将i指派给j,所以是双下标问题
类似于0-1背包问题,我们用带两个下标0-1向量表示问题
在这里插入图片描述

代码如下

%% 蒙特卡洛工厂分配问题
clear;clc;
n=10000;
c=[4,2,3,4;6 4 5 5; 7 6 7 6; 7 8 8 6;7 9 8 6;7 10 8 6];
res_x=0;
res=0;
for i=1:nflag=1;x=randi([1,4],1,6);for j=1:4if ismember(j,x)==0flag=0;break;endendsum=0;if flag==1for k=1:6sum=sum+c(k,x(k));endif sum>resres=sum;res_x=x;endend
end
disp("结果如下");
disp(res);
disp(res_x);

具体步骤

  • matlab具体函数求解
    在这里插入图片描述
  • 蒙特卡洛模拟

本质上是使用随机数不断模拟逼近最优解的形式
具体问题具体分析

非线性规划

在这里插入图片描述

具体定义

对于目标函数或约束条件不是线性的情况求极值

具体步骤

步骤如下,基本上就是填参数
在这里插入图片描述

代码模板

唯一要注意的点是f和nonlfun函数中的格式:

  • f函数

参数可以理解为x作为行向量,直接用行向量表示目标函数最后返回就行!

function[f]=f(x)%x一般指行向量,f是指函数f=x(1)^2+x(2)^2+x(3)^2+8;
end
  • nonlfun函数

这里有两个返回值ciq和ceq,第一个是不等式,第二个是等式
注意都要化为 =右侧为0的形式!

function[ciq,ceq]=nonlfun(x)%c是非线性不等式,ceq是等式
%等式或者不等式右侧必须都是0ciq=[x(1)+x(2)^2+x(3)^3-20];ceq=[-x(1)-x(2)^2+2];
end
  • 总模板如下
%% 非线性规划模板
clear;clc;
%matlab中的非线性规划只能解决最小值问题
%约束条件缺失用[]代替
%约束不等式Ax<=bdisp("现在开始进行非线性规划,请按照要求输入");
%disp("以下对应矩阵的维度均与原公式相同");
disp("请提前定义好非线性函数f和非线性约束nonlfun!")
x0=input("请以行向量形式输入初值\n");
A=input("请输入线性不等式的系数矩阵A\n");
b=input("请输入线性常向量b\n");
Aeq=input("请输入线性等式的系数矩阵Aeq\n");
beq=input("请输入线性等式的常向量beq\n");
lb=input("请以列向量形式输入对应的下界\n");
ub=input("请以列向量形式输入对应的上界\n");
[x,val]=fmincon(@f,x0,A,b,Aeq,beq,lb,ub,@nonlfun);
display(x);
display(val);

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

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

相关文章

轻松上手MYSQL:掌握MYSQL聚合函数,数据分析不再难

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》《MYSQL》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 ✨欢迎加入探索MYSQL聚合函数之旅✨ &#x1f44b; 大家好&#xff01;文本学习和探…

微服务-注册中心

一. 分布式系统架构与微服务 分布式系统架构和微服务是现代软件开发中常见的两种概念&#xff0c;它们通常结合使用来构建灵活、可扩展和高效的应用程序。 分布式系统架构&#xff1a; 分布式系统架构是指将一个单一的应用程序或服务拆分成多个独立的部分&#xff0c;这些部分…

第一部分:C++入门

目录 前言 1、C关键字(C98) 2、命名空间 2.1、命名空间定义 2.2、命名空间的使用 3、C输入&输出 4、缺省参数 4.1、缺省参数的概念 4.2、缺省参数的分类 5、函数重载 5.1、函数重载的概念 5.2、C支持函数重载的原理 6、引用 6.1、引用的概念 6.2、引用特性 …

ensp实现ICMP重定向实验

1 概述 ICMP重定向报文是ICMP控制报文中的一种。在特定的情况下&#xff0c;当路由器检测到一台机器使用非优化路由的时候&#xff0c;它会向该主机发送一个ICMP重定向报文&#xff0c;请求主机改变路由。路由器也会把初始数据包向它的目的地转发。 2 实验复现 拓扑如下 PC1配…

RedHat Linux8 修改root管理员账户密码命令

RedHat Linux8 修改root管理员账户密码命令&#xff1a; sudo passwd root RedHat重置root管理员密码&#xff1a; 1. 查看Linux系统版本信息 cat /etc/redhat-release2. 重置密码 2.1 进入内核编辑界面 重启Linux系统并出现引导界面&#xff0c;按下键盘上的e键进入内…

ftp服务

文章目录 一、概述1.1 标准模式1.2 被动模式 二、FTP作用与工作原理2.1 FTP的作用和模式以及通信方式2.2 FTP工作原理与流程2.2.1 主动模式的工作原理2.2.2 被动模式的工作原理2.2.3 主动和被动模式的区别 三、搭建和配置FTP服务3.1 安装前准备工作3.1.1 关闭防火墙和增强型安全…

交易平台Zero Hash现已支持SUI交易

Zero Hash是一家领先的加密货币和稳定币基础设施平台&#xff0c;为包括Stripe、Shift4和Franklin Templeton在内的公司提供支持&#xff0c;现在也支持对SUI的访问。此举使Zero Hash的客户及其终端用户能够使用SUI。 提供API和SDK以及专注于无缝连接法币、加密货币和稳定币的…

Linux rsync文件同步工具

scp的不足 1. 性能问题 单线程传输 SCP只使用单线程进行传输&#xff0c;这意味着在传输大文件或大量小文件时&#xff0c;其传输速度和效率可能不如其他多线程工具。 无法压缩数据传输 SCP不支持内置的压缩机制&#xff0c;这在传输大文件时会导致带宽使用效率较低。 2.…

【Python 项目】类鸟群:仿真鸟群

类鸟群&#xff1a;仿真鸟群 仔细观察一群鸟或一群鱼&#xff0c;你会发现&#xff0c;虽然群体由个体生物组成&#xff0c;但该群体作为一个整体似乎有它自己的生命。鸟群中的鸟在移动、飞越和绕过障碍物时&#xff0c;彼此之间相互定位。受到打扰或惊吓时会破坏编队&#xf…

香橙派AIpro:体验强劲算力,运行ROS系统

文章目录 前言一、香橙派AIpro开箱及功能介绍1.1香橙派AIpro开箱1.2香橙派AIpro功能介绍 二、香橙派AIpro资料下载及环境搭建2.1资料下载2.2环境搭建2.3使用串口启动进入开发板2.4使用HDMI线接入屏幕启动 三、部署ROS系统四、香橙派AIpro的使用和体验感受 前言 本篇文章将带体…

查找PPT中某种字体的全部对应文字

本文章的目的是找到某种字体的文字&#xff0c;而不是替换某种字体的文字&#xff0c;也不是将某种字体全部替换为另外一种文字。 第一步&#xff1a;在PPT中按下ALTF11 出现以下窗口 第二步&#xff1a;点击插入->模块 第三步&#xff1a;将以下代码输入到窗体中 Sub F…

[leetcode]partition-list 分隔链表

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:ListNode* partition(ListNode* head, int x) {ListNode *smlDummy new ListNode(0), *bigDummy new ListNode(0);ListNode *sml smlDummy, *big bigDummy;while (head ! nullptr) {if (head->val &l…

钉钉扫码登录第三方

钉钉文档 实现登录第三方网站 - 钉钉开放平台 (dingtalk.com) html页面 将html放在 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>登录</title>// jquery<script src"http://code.jqu…

redis redisson(仅供自己参考)

redis 通过setnx实现的分布式锁有问题 如图&#xff1a; 解决的新的工具为&#xff08;闪亮登场&#xff09;&#xff1a;redisson redisson可重入锁的原理 实现语言lua&#xff1a; 加锁实现脚本语言&#xff1a; 释放锁的脚本语言&#xff1a; 加锁的lua -- 首先判断这个锁…

[GWCTF 2019]我有一个数据库

我起初以为是sql注入 抓包什么都没有 扫描一下吧 全是文件包&#xff0c;找找有没有有用的 没啥用&#xff0c;但是我们还扫到了一个东西 访问phpmuyadmin/index.php发现什么用 然后我把index.php搞掉了发现version CVE-2018-12613 那么我们看看哦 ?targetdb_sql.php%…

hutool处理excel时候空指针小记

如图所示&#xff0c;右侧的会识别不到 参考解决方案&#xff1a; /***Description: 填补空缺位置为null/空串*Param: hutool读取的list*return: 无*Author: y*date: 2024/7/13*/public static void formatHutoolExcelArr(List<List<Object>> list) {if (CollUtil…

SCI一区级 | Matlab实现GJO-CNN-LSTM-Multihead-Attention多变量时间序列预测

SCI一区级 | Matlab实现GJO-CNN-LSTM-Mutilhead-Attention多变量时间序列预测 目录 SCI一区级 | Matlab实现GJO-CNN-LSTM-Mutilhead-Attention多变量时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现GJO-CNN-LSTM-Mutilhead-Attention金豺优化算…

【C语言】指针(3):探索-不同类型指针变量

目录 一、字符指针变量 二、数组指针变量 三、二维数组传参的本质 四、函数指针变量 4.1 函数指针变量 4.2 函数指针变量的使用 4.3 函数指针变量的拓展 五、函数指针数组 六、转移表的应用 通过深入理解指针&#xff08;1&#xff09;和深入理解指针&#xff08;2&am…

【Redis】简单了解Redis中常用的命令与数据结构

希望文章能给到你启发和灵感&#xff5e; 如果觉得文章对你有帮助的话&#xff0c;点赞 关注 收藏 支持一下博主吧&#xff5e; 阅读指南 开篇说明一、基础环境说明1.1 硬件环境1.2 软件环境 二、Redis的特点和适用场景三、Redis的数据类型和使用3.1字符串&#xff08;String&…

【HTML入门】第十二课 - iframe框架

在早期没有出现Vue和React之前呢&#xff0c;做管理系统&#xff0c;iframe是非常普遍的技术。比如管理系统左侧有非常多的菜单&#xff0c;然后点击菜单后&#xff0c;右边就要展现不同的页面。 又或者呢&#xff0c;我们看一些网站&#xff0c;他们侧边展示着五彩绚烂的广告&…