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

规划模型Matlab代码

文章目录

  • 数学规划定义
    • 一般形式
    • 分类
  • 1.线性规划(linear programming)
  • 2.非线性规划(nonlinear programming)
  • 3. 整数规划(integer programming)
  • 4. 0-1规划(0-1 programming)
  • 5. 最大最小化模型
  • 6. 多目标规划模型
  • 7.敏感性分析(对权重)
    • [例题]

数学规划定义

数学规划是统筹学的一个分支,用来研究:在给定条件下(约束条件),如何按照某一行衡量指标(目标函数)来寻求计划、管理工作中的最优方案。

通俗的讲,就是求目标函数在一定约束条件下的极值问题。

一般形式

min(或max):z = f(x)
x:决策变量(一般有多个自变量)
f(x):目标函数
不等式约束、等式约束、整数约束:约束条件

分类

线性规划
非线性规划
整数规划
0-1规划

1.线性规划(linear programming)

目标函数f(x)和约束条件均是决策变量的线性表达式。
在这里插入图片描述
注:linprog函数 只能求解最小值问题,最大值问题要在目标函数前加负号,转化为最小值问题,将结果 fval = - fval 即可。

2.非线性规划(nonlinear programming)

目标函数f(x) 和 约束条件中存在决策变量的非线性表达式。

注:解决起来比线性规划困难,目前没有通用的算法,大多数算法都是在选定决策变量的初始之后通过一定的收索方法寻求最优的决策变量。
在这里插入图片描述

3. 整数规划(integer programming)

存在变量要求取整数值的数学规则,分为 线性整数规划 和 非线性整数规划 。

注:目前所流行的求解整数规划的算法往往只适用于线性整数规划。

[x,fval] = intlinprog(c,intcon,A,b,Aeq,beq,lb,ub)
% Matlab线性整数规划求解
% intcon 参数可以指定哪些决策变量是整数(行向量)。

0-1规划(0-1 programming)

4. 0-1规划(0-1 programming)

整数规划的特例,整数变量的取值只能为0和1。

[x,fval] = intlinprog(c,intcon,A,b,Aeq,beq,lb,ub)
% 仍然使用线性整数规划的 intlinprog 函数,只不过在lb和ub上做文章。
% 0-1变量的 lb = 0, ub = 1。

5. 最大最小化模型

在最不利的的条件下,寻求最有利的策略。

[x,feval] = fminimax(@Fun,x0,A,b,Aeg,beg,lb,ub,@nonlfun,option)
max(feval)

% 目标函数 Fun 用一个函数向量表示
% 其他变量与非线性规划相同

6. 多目标规划模型

一个规划问题中有多个目标。

解决方案:对多目标函数进行加权组合将问题变为单目标规划。

[x fval] = linprog(c, A, b, Aeq, beq, lb,ub, x0)

% 仍然使用线性规划的 linprog 函数
% c中系数乘上了相应权重,并除以某一个常数(做标准化)

注:
多个目标函数统一为最大化或最小化问题后才可以进行加权组合。
如果目标函数量纲不相同,则需要对其进行标准化后再进行加权。标准化的方法一般是由目标函数除以某一个常数,该常数是指目标函数某个取值具体取值可根据经验确定。
对多目标函数进行加权求和时,权重需要由该问题领域的专家给定。实际建模比赛中若无特殊要求我们可另权重相同。

7.敏感性分析(对权重)

通过逐一改变相关变量数值的方法来解释关键指标受这些因素变动影响大小规律。

[例题]

某化工厂今年拟生产两种新产品 A 和 B,其生产费用分别为 2 万元/吨和 5 万元/吨。这两种产品均将造成环境污染,每生产一吨 A 产品会产生 0.4 吨的污染,每生产一吨 B产品会产生 0.3 吨的污染。由于条件限制,工厂生产产品A和B的最大生产能力各为每月5吨和 6 吨,而市场需要这两种产品的总量每月不少于7 吨。该工厂决策认为,这两个目标中环境污染应优先考虑,且根据经验生产费用的参考值为 30 万元,污染量参老缜园试问工厂如何安排生产计划,在满足市场需要的前提下,使设备的花费和产生的污染均达最小。

%%  多目标规划
w1 = 0.4;  w2 = 0.6;  % 两个目标函数的权重  x1 = 5  x2 = 2
% w1 = 0.5;  w2 = 0.5;  % 两个目标函数的权重  x1 = 5  x2 = 2
% w1 = 0.3;  w2 = 0.7;  % 两个目标函数的权重  x1 = 1  x2 = 6
c = [w1/30*2+w2/2*0.4 ;w1/30*5+w2/2*0.3];  % 线性规划目标函数的系数
A = [-1 -1];  b = -7; % 不等式约束
lb = [0 0]'; ub = [5 6]'; % 上下界
[x,fval] = linprog(c,A,b,[],[],lb,ub) % 求解线性规划时使用 —— 目标函数和约束条件都是线性的
f1 = 2*x(1)+5*x(2)
f2 = 0.4*x(1) + 0.3*x(2)%% 敏感性分析
clear;clc
W1 = 0.1:0.001:0.5;  W2 = 1- W1;  
n =length(W1);
F1 = zeros(n,1);  F2 = zeros(n,1);   X1 = zeros(n,1);  X2 = zeros(n,1);   FVAL = zeros(n,1);
A = [-1 -1];  b = -7; % 不等式约束
lb = [0 0]; ub = [5 6]; % 上下界
for i = 1:nw1 = W1(i);  w2 = W2(i);c = [w1/30*2+w2/2*0.4 ;w1/30*5+w2/2*0.3];  % 线性规划目标函数的系数[x,fval] = linprog(c,A,b,[],[],lb,ub);F1(i) = 2*x(1)+5*x(2);F2(i) = 0.4*x(1) + 0.3*x(2);X1(i) = x(1);X2(i) = x(2);FVAL(i) = fval;
end% 「Matlab」“LaTex字符汇总”讲解:https://blog.csdn.net/Robot_Starscream/article/details/89386748
% 在图上可以加上数据游标,按住Alt加鼠标左键可以设置多个数据游标出来。
figure(1)
plot(W1,F1,W1,F2)
xlabel('f_{1}的权重')
ylabel('f_{1}和f_{2}的取值')
legend('f_{1}','f_{2}')figure(2)
plot(W1,X1,W1,X2)
xlabel('f_{1}的权重')
ylabel('x_{1}和x_{2}的取值')
legend('x_{1}','x_{2}')figure(3)
plot(W1,FVAL)  % 看起来是两个直线组合起来的下半部分
xlabel('f_{1}的权重')
ylabel('综合指标的值')

相关文章:

规划模型Matlab代码

文章目录 数学规划定义一般形式分类 1.线性规划(linear programming)2.非线性规划(nonlinear programming)3. 整数规划(integer programming)4. 0-1规划(0-1 programming)5. 最大最小化模型6. 多目标规划模型7.敏感性分析(对权重)[例题] 数学规划定义 数…...

用html+javascript打造公文一键排版系统11:改进单一附件说明排版

一、用htmljavascript打造公文一键排版系统10中的一个bug 在 用htmljavascript打造公文一键排版系统10:单一附件说明排版 中,我们对附件说明的排版函数是: function setAtttDescFmt(p) {var t p;var a ;if (-1 ! t.indexOf(:))//是半角冒…...

snap xxx has “install-snap“ change in progress

error description * 系重复安装,进程冲突 solution 展示snap的改变 然后sudo snap abort 22即可终止该进程 之后重新运行install command~~ PS: ubuntu有时候加载不出来,执行resolvectl flush-caches,清除dns缓存…...

Elasticsearch 性能调优指南

目录 1、通用优化策略 1.1 通用最小化法则 1.2 职责单一原则 1.3 其他 2、写性能调优 2.1 基本原则 2.2 优化手段 2.2.1 增加 flush 时间间隔, 2.2.2 增加refresh_interval的参数值 2.2.3 增加Buffer大小, 2.2.4 关闭副本 2.2.5 禁用swap 2…...

学习Boost一:学习方法和学习目的

学习目的 Boost 的学习目的: 因为从知乎和CSND上根据了解内容来看,Boost作为一个历史悠久的开源库,已经脱离了一个单纯的库的概念了,他因庞大的涉及面应当被称之为库集。 并且,因为boost库优秀的试用反馈和开发人员的…...

c语言每日一练(1)

前言: 每日一练系列,每一期都包含5道选择题,2道编程题,博主会尽可能详细地进行讲解,令初学者也能听的清晰。每日一练系列会持续更新,暑假时三天之内必有一更,到了开学之后,将看学业情…...

iOS开发-CocoaLumberjack日志库实现Logger日志功能

iOS开发-Logger日志功能实现 在iOS开发中,常用CocoaLumberjack来作为日志功能实现的日志框架 一、CocoaLumberjack是什么? CocoaLumberjack 是 支持 iOS 和 Mac 平台的日志框架,使用简单,功能强大且不失灵活,它的主…...

深度学习(34)—— StarGAN(2)

深度学习(34)—— StarGAN(2) 完整项目在这里:欢迎造访 文章目录 深度学习(34)—— StarGAN(2)1. build model(1)generator(2&#…...

use lua

-- basic.lua print("hello ".."world") local a 1 --only this file can see b 2 -- global see -- not declare vaiable all asign to nil print(fuck) -- 字符串可以"" , ,[[]] -- 一些数值运算支持,进制数,科学数&a…...

网络——初识网络

网络基础 文章目录 网络基础计算机网络产生的背景认识网络协议网络协议初识协议分层OSI七层模型TCP/IP四层模型网络传输基本流程协议报头 认识IP地址认识MAC地址ifconfig查看主机地址ifconfig查看主机地址 计算机网络产生的背景 独立模式:计算机之间相互独立 早期的…...

调试技巧(2)

6. 如何写出好(易于调试)的代码 6.1 优秀的代码: 代码运行正常bug很少效率高可读性高可维护性高注释清晰文档齐全 常见的coding技巧: 使用assert尽量使用const养成良好的编码风格添加必要的注释避免编码的陷阱。 这里讲一下assert…...

骨传导耳机真不伤耳吗?骨传导耳机有什么好处?

骨传导耳机真不伤耳吗?骨传导耳机有什么好处? 我先来说说骨传导耳机的工作原理吧,骨传导是一种传声方式,声波通过颅骨、颌骨等头部骨头的振动,将声音传到内耳。其实骨传导的现象我们很常见,就像我们平时嗑瓜…...

mac切换jdk版本

查询mac已有版本 1、打开终端,输入: /usr/libexec/java_home -V注意:输入命令参数区分大小写(必须是-V) 2.目前本地装有两个版本的jdk xxxxedydeMacBook-Pro-9 ~ % /usr/libexec/java_home -V Matching Java Virtual Machines (2):20.0.1 (…...

go 基本语法(简单案例)

!注: go中 对变量申明很是严格,申明了,在没有使用的情况下,也会产生编译错误 1.行分隔符 一行就是代码,无;分割,如果需要在一行展示,需要以;分割,…...

Permute 3 for mac音视频格式转换

Permute是一款Mac平台上的媒体格式转换软件,由Chaotic Software开发。它可以帮助用户快速地将各种音频、视频和图像文件转换成所需格式,并提供了一些常用工具以便于用户进行编辑和处理。 Permute的主要特点包括: - 支持大量格式:支…...

线程概念linux

何为线程: 线程是程序中负责执行的单位,它可以被看作是进程的一部分,是进程的子任务。线程与进程的区别在于,进程是一个资源单位,而线程是进程的一部分,它只有栈这个独立的资源,其他资源如代码…...

【Yolov5+Deepsort】训练自己的数据集(1)| 目标检测追踪 | 轨迹绘制

📢前言:本篇是关于如何使用YoloV5Deepsort训练自己的数据集,从而实现目标检测与目标追踪,并绘制出物体的运动轨迹。本章讲解的为第一个内容:简单介绍YoloV5Deepsort中所用到的目标检测,追踪及sort&Depp…...

express学习笔记4 - 热更新以及express-boom

我们每次改动代码的时候都要重启项目,现在我们给项目添加一个热更新 npm install --save-dev nodemon # or using yarn: yarn add nodemon -D 在package.json添加一行代码 "dev": "nodemon ./bin/www" 重启项目 然后随便做改动&#xff…...

Ajax_02学习笔记(源码 + 图书管理业务 + 以及 个人信息修改功能)

Ajax_02 01_Bootstrap框架-控制弹框的使用 代码 <!-- 引入bootstrap.css --> <link href"https://cdn.jsdelivr.net/npm/bootstrap5.2.2/dist/css/bootstrap.min.css" rel"stylesheet"><button type"button" class"btn btn…...

Python-数据类型转换

当涉及数据类型转换时&#xff0c;Python提供了多种内置函数来执行不同类型之间的转换 以下是每个方法的详细说明和示例案例 整数和浮点数转换&#xff1a; int(x, base10): 将给定的参数x转换为整数。x可以是一个整数、浮点数或字符串。如果x是字符串&#xff0c;则可以提供…...

突破平台局限:AirPods跨平台体验增强方案全解析

突破平台局限&#xff1a;AirPods跨平台体验增强方案全解析 【免费下载链接】AirPodsDesktop ☄️ AirPods desktop user experience enhancement program, for Windows and Linux (WIP) 项目地址: https://gitcode.com/gh_mirrors/ai/AirPodsDesktop AirPodsDesktop是一…...

从选型到贴片:启英泰伦CI13XX芯片硬件设计避坑指南(附PCB布局建议)

启英泰伦CI13XX芯片硬件设计实战&#xff1a;从选型到量产的工程化解决方案 在智能语音硬件开发领域&#xff0c;启英泰伦CI13XX系列芯片凭借其高度集成的BNPU V3神经网络处理器和丰富的接口资源&#xff0c;已成为离线语音识别方案的热门选择。然而&#xff0c;从芯片选型到最…...

GetQzonehistory:QQ空间数据备份工具全指南

GetQzonehistory&#xff1a;QQ空间数据备份工具全指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 一、价值定位&#xff1a;数字记忆的守护者 1.1 数据永存的必要性 在数字时代&…...

C语言字符串必知:末尾有个隐藏的\0,新手易踩坑

C语言字符串 在C语言程序设计体系当中&#xff0c;字符串属于处理文本信息的核心载体&#xff0c;其设计逻辑跟底层实现深深地展现了C语言贴近硬件兼具高效灵活的语言特性&#xff0c;和一部分高级语言不一样&#xff0c;C语言并没有设置独立的字符串数据类型&#xff0c;而是经…...

Z-Image-Turbo-辉夜巫女效果实测:LoRA微调模型在Gradio界面的高清出图表现

Z-Image-Turbo-辉夜巫女效果实测&#xff1a;LoRA微调模型在Gradio界面的高清出图表现 1. 模型简介与部署 Z-Image-Turbo-辉夜巫女是基于Z-Image-Turbo模型进行LoRA微调后的特殊版本&#xff0c;专门针对生成"辉夜巫女"风格图片进行了优化。该模型通过Xinference框…...

macOS极简部署:OpenClaw与Qwen3-14B镜像云端联调指南

macOS极简部署&#xff1a;OpenClaw与Qwen3-14B镜像云端联调指南 1. 为什么选择云端联调 去年冬天&#xff0c;当我第一次尝试在本地MacBook Pro上部署OpenClaw时&#xff0c;整整两天时间都耗在了环境配置上。从Homebrew版本冲突到Node.js权限问题&#xff0c;再到CUDA驱动不…...

手把手教你用Postman调试DolphinScheduler 3.x创建任务API(附数据库查Code指南)

手把手教你用Postman调试DolphinScheduler 3.x创建任务API&#xff08;附数据库查Code指南&#xff09; 在分布式任务调度系统的日常运维中&#xff0c;API调试是开发者和运维人员必须掌握的硬核技能。DolphinScheduler作为一款开源的分布式易扩展可视化工作流任务调度平台&…...

交换机接口全解析:从RJ-45到光纤,一文掌握所有连接技巧

1. 交换机接口基础&#xff1a;认识常见的物理接口类型 第一次拆开交换机包装时&#xff0c;面对密密麻麻的接口面板&#xff0c;新手常会感到无从下手。其实这些接口按照传输介质可分为两大阵营&#xff1a;电口和光口。电口就是我们熟悉的RJ-45接口&#xff0c;而光口则包含…...

Java中的修饰符,类,接口,多态

最近学了Java中的修饰符&#xff0c;类&#xff0c;接口&#xff0c;多态1.修饰符学了public&#xff0c;默认&#xff0c;protected&#xff0c;private。public是公用的&#xff0c;都能访问。默认的话只能在同类中和同包中调用&#xff0c;而protected则可以在同类中&#x…...

MemSifter 核心机制深度解析(非常详细),4B小模型管理大模型记忆从入门到精通,收藏这一篇就够了!

一句话总结&#xff1a;MemSifter训练一个4B参数的代理模型&#xff0c;通过"先推理再检索"的方式&#xff0c;替大模型从海量历史对话中筛选相关记忆&#xff0c;速度比全上下文方案快12倍&#xff0c;效果还更好。 论文标题&#xff1a;MemSifter: Offloading LLM …...