数学规划问题2 .有代码(非线性规划模型,最大最小化模型,多目标规划模型)

news2025/1/24 5:02:58

 非线性规划模型

FIrst:转化为标准型

在matlab中求非线性规划的函数

练习题:

典型例题:

最大最小化模型

核心思想:

matlab的模型求解

经典例题:

多目标规划模型

基本概念

求解思路:

模型构建步骤

经典例题:


 非线性规划模型

非线性规划(Nonlinear Programming,简称 NLP)是运筹学的一个重要分支,用于解决目标函数或约束条件中至少有一个是非线性函数的优化问题。

与线性规划相比,非线性规划的目标函数和约束条件更为复杂,具有更强的描述实际问题的能力,但求解难度也更大。因为非线性函数的性质(如非凸性、不可微性等)使得传统的线性规划求解方法不再适用,需要开发专门针对非线性特性的求解技术。

应用

FIrst:转化为标准型

还是有AX<=b,Aeq*x=beq ,lb<=x<=ub 多了, C(x)<=0,Ceq(x) =0 两个非线性的约束

在matlab中求非线性规划的函数

[x,fval]=fmincon(@fun,X0,A,b,Aeq,beq,lb,ub,@nonlfun,option)

1,这里的X0十分重要,需要慎重选取,因为这个求的是局部最优解

2,如果要求全局最优解,可以:1,选取多个初始值,选取其中最优的,2先用蒙特卡洛模拟

3,option表示求解的方法,有:1,interior-point(内点法),2,Sqp(序列二次规划)3,active-set(有效集)

和trust-region-reflective(信赖域发射算法)

4,@fun表示目标函数,我们要编写一个独立的.m文件,来存储目标函数

5,@nonlfun表示非线性部分的约束,我们也需要写一个.m文件取存储非线性约束

x是行列向量取决于X0

6,这里的下标需写成()

7,不需要某个约束用[]代替,如果后谜案全是[]且option默认,就可以不写[]

% [x,fval] = fmincon(@fun,x0,A,b,Aeq,beq,lb,ub,@nonlfun,option)

% x0表示给定的初始值(用行向量或者列向量表示),必须得写

% A b表示线性不等式约束

% Aeq beq 表示线性等式约束

% lb ub 表示上下界约束

% @fun表示目标函数

% @nonlfun表示非线性约束的函数

% option 表示求解非线性规划使用的方法

练习题:

第一题:

先转化为 求 min型

两个不等式要取负变为小于等于

将线性不等式转化为<=b,非线性不等式转换为<=0

其他的都是[]

function f = fun1(x)

f = -x(1)^2-x(2)^2 +x(1)*x(2)+2*x(1)+5*x(2) ;

end

function [c,ceq] = nonlfun1(x)

c = [(x(1)-1)^2-x(2)]; % 千万別写成了: (x1-1)^2 -x2

ceq = [];

end

mian.m

x0 = [0 0]; %任意给定一个初始值

A = [-2 3]; b = 6;

[x,fval] = fmincon(@fun1,x0,A,b,[],[],[],[],@nonlfun1) % 注意 fun1.m文件和nonlfun1.m文件都必须在当前文件夹目录下

fval = -fval

(默认使用的内点法)

练习题2:

求的是min ,不用转换,

将两个非线性的不等式约束转换为<=0标准型,,两个非线性等式约束也转换为=0的标准型

典型例题:

这里就有16个决策变量了

function f = fun5(xx) % 注意为了避免和下面的x同号,我们把决策变量的向量符号用xx表示(注意xx的长度为16)

a=[1.25 8.75 0.5 5.75 3 7.25]; % 工地的横坐标

b=[1.25 0.75 4.75 5 6.5 7.25]; % 工地的纵坐标

x = [xx(13) xx(15)]; % 新料场的横坐标

y = [xx(14) xx(16)]; % 新料场的纵坐标

c = []; % 初始化用来保存工地和料场距离的向量 (这个向量就是我们的系数向量)

for j =1:2

for i = 1:6

c = [c; sqrt( (a(i)-x(j))^2 + (b(i)-y(j))^2)]; % 每循环一次就在c的末尾插入新的元素

end

end

% 下面我们要求吨千米数,注意c是列向量,我们计算非线性规划时给定的初始值x0是行向量

f = xx(1:12) * c;

end

% (2) 不等式约束

A =zeros(2,16); % 注意这里要改成16

A(1,1:6) = 1;

A(2,7:12) = 1;

b = [20,20]';

% (3) 等式约束

Aeq = zeros(6,16); % 注意这里要改成16

for i = 1:6

Aeq(i,i) = 1; Aeq(i,i+6) = 1;

end

beq = [3 5 4 7 6 11]'; % 每个工地的日需求量

%(4)上下界

lb = zeros(16,1);

x0 = [3 5 0 7 0 1 0 0 4 0 6 10 5 1 2 7]; % 用第一问的结果作为初始值

[x,fval] = fmincon(@fun5,x0,A,b,Aeq,beq,lb) % 注意没有非线性约束,所以这里可以用[]替代,或者干脆不写

reshape(x(1:12),6,2) % 将x的前12个元素变为6行2列便于观察(reshape函数是按照列的顺序进行转换的,也就是第一列读完,读第二列,即x1对应x_1,1,x2对应x_2,1)

最大最小化模型

一种在决策过程中考虑最坏情况,并试图将这种最坏情况的影响降到最低的数学模型,在博弈论、优化理论等领域有着广泛应用。

核心思想:

在存在不确定性或竞争的环境中,决策者面对多种可能的情况(策略组合),从所有可能的 “最坏结果” 中选取 “最好” 的结果。例如,在两人零和博弈中,一方的收益就是另一方的损失,每个参与者都试图最大化自己在最坏情况下的收益,即最小化对手可能造成的最大伤害。

模型的一般形式:比如在我们的投资风险中,我们希望最小化我们的最大投资风险

matlab的模型求解

[x,fval]=fminimax(@fun,X0,A,b,Aeq,beq,lb,ub,@nonlfun,option)

规则和上面的非线性规划一致

经典例题:

精简出来模型如下

返回的[x,fval]表示的是坐标(x1,y1) 和这个坐标下和其他10个点的曼哈顿距离

x0 = [6, 6]; % 给定初始值

lb = [3, 4]; % 决策变量的下界

ub = [8, 10]; % 决策变量的上界

[x,feval] = fminimax(@Fun,x0,[],[],[],[],lb,ub)

max(feval)

function f = Fun(x)

a=[1 4 3 5 9 12 6 20 17 8];

b=[2 10 8 18 1 4 5 10 8 9];

% 函数向量

f=zeros(10,1);

for i = 1:10

f(i) = abs(x(1)-a(i))+abs(x(2)-b(i));

end

% f(1) = abs(x(1)-a(1))+abs(x(2)-b(1));

% f(2) = abs(x(1)-a(2))+abs(x(2)-b(2));

% f(3) = abs(x(1)-a(3))+abs(x(2)-b(3));

% f(4) = abs(x(1)-a(4))+abs(x(2)-b(4));

% f(5) = abs(x(1)-a(5))+abs(x(2)-b(5));

% f(6) = abs(x(1)-a(6))+abs(x(2)-b(6));

% f(7) = abs(x(1)-a(7))+abs(x(2)-b(7));

% f(8) = abs(x(1)-a(8))+abs(x(2)-b(8));

% f(9) = abs(x(1)-a(9))+abs(x(2)-b(9));

% f(10) = abs(x(1)-a(10))+abs(x(2)-b(10));

end

多目标规划模型

数学规划领域中的重要内容,用于处理同时存在多个相互冲突目标的决策问题。

基本概念

多目标特性:在实际决策中,往往需要同时考虑多个目标。例如,在生产管理中,企业既希望最大化利润,又要最小化生产成本,同时还要考虑产品质量、生产效率等多个目标。这些目标之间通常相互矛盾,提升一个目标可能会导致其他目标的恶化。

目标函数:多目标规划模型包含多个目标函数,一般形式可表示为:

求解思路:

将我们的多规格函数目标函数进行加权组合,让问题变为一个单目标规划

注意:

1)要先将多个目标函数统一为最大化或者最小化问题后,才可以进行加权组合。

2)如果目标函数的量纲不相同,则需要对其进行标准化后再进行加权。标准化的方法一般是用目标函数除以某一个常量,该常量是这个目标函数的某个值,具体取何值可以根据经验确定。

3)对多目标函数进行加权求和时。权重需要由该问题领域的专家给定,但实际比赛中若无特殊的说明,我们可令权重相同。

模型构建步骤

确定目标:明确决策问题中需要优化的多个目标。例如在城市交通规划中,目标可能包括最小化交通拥堵、降低环境污染、减少建设成本等。

选择决策变量:确定影响目标实现的可调控因素作为决策变量。如在交通规划中,道路宽度、公交线路设置、停车场数量等都可以作为决策变量。

建立目标函数:根据目标与决策变量之间的关系,构建相应的目标函数。这些函数可以是线性的,也可能是非线性的,取决于实际问题的性质。例如,以最小化交通拥堵为目标,可将交通流量、平均车速等因素纳入目标函数,通过建立数学关系来量化拥堵程度。

确定约束条件:分析实际问题中的限制条件,转化为数学上的等式或不等式约束。例如,土地资源限制可能会对道路建设面积、停车场规模等决策变量形成约束;建设资金预算会限制交通设施建设的投入。

经典例题:

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

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

相关文章

linux 下tensorrt的yolov8的前向推理(c++ 版本)的实现

一、环境搭建 cuda 11.4 ubuntu 20.04 opencv-4.5.2 1.1 配置tensorrt 根据本机的硬件配置及cuda的版本&#xff0c;选择TensorRT-8.6.1.6的版本&#xff0c;下载网址为: TensorRT SDK | NVIDIA Developer 根据官网的说明&#xff0c;下载对应的压缩包即可。解压后&…

VUE elTree 无子级 隐藏展开图标

这4个并没有下级节点&#xff0c;即它并不是叶子节点&#xff0c;就不需求展示前面的三角展开图标! 查阅官方文档如下描述&#xff0c;支持bool和函数回调处理&#xff0c;这里咱们选择更灵活的函数回调实现。 给el-tree结构配置一下props&#xff0c;注意&#xff01; :pr…

windows git bash 使用zsh 并集成 oh my zsh

参考了 这篇文章 进行配置&#xff0c;记录了自己的踩坑过程&#xff0c;并增加了 zsh-autosuggestions 插件的集成。 主要步骤&#xff1a; 1. git bash 这个就不说了&#xff0c;自己去网上下&#xff0c;windows 使用git时候 命令行基本都有它。 主要也是用它不方便&…

Glary Utilities Pro 多语便携版系统优化工具 v6.21.0.25

Glary Utilities是一款功能强大的系统优化工具软件&#xff0c;旨在帮助用户清理计算机垃圾文件、修复系统错误、优化系统性能等。 软件功能 清理和修复&#xff1a;可以清理系统垃圾文件、无效注册表项、无效快捷方式等&#xff0c;修复系统错误和蓝屏问题。 优化和加速&…

【Python使用】嘿马python基础入门全体系教程第12篇:__init__()方法,说明:【附代码文档】

本教程的知识点为&#xff1a;计算机组成 计算机是由什么组成的&#xff1f; 1. 硬件系统&#xff1a; 2. 软件系统&#xff1a; 目标 运算符的分类 1. 算数运算符 2. 赋值运算符 3. 复合赋值运算符 判断语句和循环语句 if嵌套 1. if嵌套的格式 2. if嵌套的应用 if嵌套执行流程…

从入门到精通:RabbitMQ的深度探索与实战应用

目录 一、RabbitMQ 初相识 二、基础概念速览 &#xff08;一&#xff09;消息队列是什么 &#xff08;二&#xff09;RabbitMQ 核心组件 三、RabbitMQ 基本使用 &#xff08;一&#xff09;安装与环境搭建 &#xff08;二&#xff09;简单示例 &#xff08;三&#xff09;…

【Block总结】WTConv,小波变换(Wavelet Transform)来扩展卷积神经网络(CNN)的感受野

论文解读&#xff1a;Wavelet Convolutions for Large Receptive Fields 论文信息 标题: Wavelet Convolutions for Large Receptive Fields作者: Shahaf E. Finder, Roy Amoyal, Eran Treister, Oren Freifeld提交日期: 2024年7月8日arXiv链接: Wavelet Convolutions for La…

Couchbase UI: Indexes

在Couchbase中&#xff0c;索引的这些指标可以帮助你评估索引的性能和状态。下面是每个指标的详细解释&#xff0c;以及如何判断索引的有效性&#xff1a; 1. Index Name&#xff08;索引名称&#xff09; 描述&#xff1a;每个索引都有一个唯一的名称。这个名称通常会包括表…

(3)STM32 USB设备开发-USB存储设备

例程&#xff1a;STM32USBdevice: 基于STM32的USB设备例子程序 - Gitee.com 本篇为使用芯片内部flash作为USB存储设备的例程&#xff0c;没有知识&#xff0c;全是实操&#xff0c;按照步骤就能获得一个STM32的U盘。本例子是在野火F103MINI开发板上验证的&#xff0c;如果代码…

细说STM32F407单片机电源低功耗StopMode模式及应用示例

目录 一、停止模式基础知识 1、进入停止模式 2、停止模式的状态 3、退出停止模式 4、SysTick定时器的影响 二、停止模式应用示例 1、示例功能和CubeMX项目配置 &#xff08;1&#xff09;时钟 &#xff08;2&#xff09;RTC &#xff08;3&#xff09;ADC1 &#xf…

Blazor-Blazor WebAssmbly项目结构(上)

创建项目 今天我们来创建一个BlazorWebAssmbly项目&#xff0c;来看看项目结构是如何得&#xff0c;我们创建带模板得项目&#xff0c;会创建出一个demo&#xff0c;来看看项目结构。 创建的项目可以直接启动运行&#xff0c;首次启动会看见加载的过程&#xff0c;这个过程…

【2024年终总结】我与CSDN的一年

&#x1f449;作者主页&#xff1a;心疼你的一切 &#x1f449;作者简介&#xff1a;大家好,我是心疼你的一切。Unity3D领域新星创作者&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6; &#x1f449;记得点赞 &#x1f44d; 收藏 ⭐爱你们&#xff0c;么么哒 文章目录 …

开篇:吴恩达《机器学习》课程及免费旁听方法

课程地址&#xff1a; Machine Learning | Coursera 共包含三个子课程 Supervised Machine Learning: Regression and Classification | Coursera Advanced Learning Algorithms | Coursera Unsupervised Learning, Recommenders, Reinforcement Learning | Coursera 免费…

推荐一个开源的轻量级任务调度器!TaskScheduler!

大家好&#xff0c;我是麦鸽。 这次推荐一款轻量级的嵌入式任务调度器&#xff0c;目前已经有1.4K的star&#xff0c;这个项目比较轻量化&#xff0c;只有5个源文件&#xff0c;可以作为学习的一个开源项目。 核心文件 项目概述&#xff1a; 这是一个轻量级的协作式多任务处理&…

暑期实习准备:C语言(持续更新)

1.局部变量和全局变量 局部变量的作用域是在变量所在的局部范围&#xff0c;全局变量的作用域是整个工程&#xff1b;局部变量的生命周期是作用域内&#xff0c;全局变量的生命周期是整个程序的生命周期&#xff0c;当两者命名冲突时&#xff0c;优先使用的是局部变量。 2.C语言…

Harmony Next 支持创建分身

应用分身能实现在一个设备上安装多个相同的应用&#xff0c;实现多个账号同时登录使用和运行并且互不影响。主要应用场景有社交账号双开、游戏大小号双开等&#xff0c;无需账号切换&#xff0c;从而省去频繁登录的繁琐。 Harmony Next 很容易就能让 App 支持创建分身。 官方文…

java ,springboot 对接支付宝支付,实现生成付款二维码,退款,查询订单状态等接口

查看文档 支付宝文档地址&#xff1a; 小程序文档 - 支付宝文档中心 使用沙箱环境 沙箱登录地址 登录 - 支付宝 点击查看 才能看钥匙截图写错了。。 问号可以看默认加密方式 点击沙箱帐号 这里我们就具备所有条件了 实战开始 pom文件增加依赖 <dependency> <gro…

深入内核讲明白Android Binder【三】

深入内核讲明白Android Binder【三】 前言一、服务的获取过程内核源码解析1. 客户端获取服务的用户态源码回顾2. 客户端获取服务的内核源码分析2.1 客户端向service_manager发送数据1. binder_ioctl2. binder_ioctl_write_read3. binder_thread_write4. binder_transaction4.1 …

chrome游览器JSON Formatter插件无效问题排查,FastJsonHttpMessageConverter导致Content-Type返回不正确

问题描述 chrome游览器又一款JSON插件叫JSON Formatter&#xff0c;游览器GET请求调用接口时&#xff0c;如果返回的数据是json格式&#xff0c;则会自动格式化展示&#xff0c;类似这样&#xff1a; 但是今天突然发现怎么也格式化不了&#xff0c;打开一个json文件倒是可以格…

canvas基础

今天我们简单的来认识学习一下canvas的基础概念和使用方法。 1. 认识canvas 1.1 什么是canvas 在网页开发中&#xff0c;canvas是html5中的一个元素&#xff0c;用于通过JavaScript绘制图形。它可以用来制作简单的图表、动画和游戏等。 1.2. 使用场景 游戏开发&#xff1a…