MATLAB线性规划相关函数用法

2023-10-29

一.线性规划的Matlab标准形式及软件求解

1. MATLAB中规定线性规划的标准形式为
在这里插入图片描述
其中c和 x为n 维列向量, A、 Aeq 为适当维数的矩阵,b 、beq为适当维数的列向量。 (Aeq 对应约束条件中等式约束的系数矩阵,A为约不等式约束的系数矩阵)
在这里插入图片描述
2. MATLAB函数用法——linprog

[x,fval]=linprog(c,A,b,Aeq,beq,LB,UB,OPTIONS) 

这里 x返回最优值对应自变量大多数是一个向量,fval 返回目标函数的最优值,A是不等式矩阵,b不等式右边的列向量,Aeq等式约束矩阵,beq等式右边的列向量,LB 和 UB 分别是变量 x的下界和上界, OPTIONS 是控制参数。(b,beq,LB,UB均为列向量)

3.例题
在这里插入图片描述

clc;clear;
c=[2;3;-5];
A=[-2,5,-1;1,3,1]; 
b=[-10;12]; 
Aeq=[1,1,1]; 
beq=7; 
[x,fval]=linprog(-c,A,b,Aeq,beq,zeros(3,1)); %MATLAB中所给函数求的是最小值因为题目中求最大值所以-c
fval=-fval;

4.可以转化为线性规划的问题
①对绝对值的处理
在这里插入图片描述
对于“x=u-v”和“|x|=u+v”,任何一个数都可以被两个非负数表示如果这个数为正数+,那么x=u,v=0;如果这个数为负数-,那么x=v,u=0.
②例题
在这里插入图片描述

clc;clear;
c=1:4;
c=[c,c]';
A=[1 -1 -1 1;1 -1 1 -3;1 -1 -2 3];
A=[A,-A];                               %构造变换矩阵
b=[-2 -1 -0.5]';
[y,fval]=linprog(c,A,b,[],[],zeros(8,1));%没有等式约束,对应空矩阵[]
x=y(1:4)-y(5:end);                      %变回到原问题x=u-v,对于y前四个为u,后四个为v

对于这个方法我看到只能用一个字形容——妙啊

二.整数线性规划的Matlab求解

1. 线性规划中实际情况中,很多情况要求自变量为整数

在这里插入图片描述

2. 整数线性规划函数——intlinprog*

[x,fval]=intlinprog(c,intcon,A,b,Aeq,beq,LB,UB,x0,OPTIONS) 

这里intcon为代表了整数决策变量所在的位置,x0为初始变量(在求之前对所求变量做一个预估)。其它和linprog函数中的含义一样。

3. 例题
在这里插入图片描述

clc;clear;
c=[-3 -2 -1]';
intcon=3;        %整数变量的位置为3 如果有3个都是整数则intcon=[1,2,3]
A=ones(1,3);
b=7;
Aeq=[4,2,1];
beq=12;
LB=zeros(3,1);
UB=[Inf;Inf;1];%对于x1,x2都是非负数,而x3为0-1之间的整数即x3=0或者1
[x,fval]=intlinprog(c,intcon,A,b,Aeq,beq,LB,UB);

3.非线性规划的Matlab标准形式及软件求解

1.MATLAB中规定非线性规划的标准形式为
在这里插入图片描述
这里c(x)和ceq(x)为非线性向量函数

2. 非线性规划函数——fmincon

[x,fval]=fmincon(fun,x0,A,b,Aeq,beq,LB,UB,nonlcon,OPTIONS)

这里fun是用M文件定义的函数f(x),x0是x的初始值,nonlcon是用M文件定义的非线性向量函数c(x)和ceq(x)。
其它和linprog函数中的含义一样。

3. 例题
在这里插入图片描述

%% 编写函数fun
function f=fun1(x)
f=sum(x.^2)+8;
end	
%% 编写函数nonlcon
function [g,h]=fun2(x)
g=[-x(1)^2+x(2)-x(3)^2,x(1)+x(2)^2+x(3)^2-20];%非线性不等式约束
h=[-x(1)-x(2)^2+2,x(2)+2*x(3)^2-3];%非线性等式约束
end
%% 主文件程序
clc;clear;
[x,fval]=fmincon(@fun1,rand(3,1),[],[],[],[],zeros(3,1),[],@fun2);

4.二次规划的Matlab标准形式及软件求解

1. MATLAB中规定二次规划的标准形式为
在这里插入图片描述
若某非线性规划的目标函数为自变量x的二次函数,约束条件又全是线性的,就称这种规划为二次规划

2. 二次规划函数——quadprog

[x,fval]=quadprog(H,f,A,b,Aeq,beq,LB,UB,x0,OPTIONS)

这里H为实对称矩阵,f相当于除去二次的线性规划系数

3. 例题
在这里插入图片描述

clc;clear;
H=[4,-4;-4,8];
f=[-6,-3]';
A=[1 1;4 1];
b=[3 9]';
[x,fval]=quadprog(H,f,A,b,[],[],zeros(2,1));%没有等式约束

5.无约束极值问题的数值解

1. fminunc和fminsearch

[x,fval] = fminunc(fun,x0,OPTIONS)
[x,fval] = fminsearch(fun,x0,OPTIONS)

使用optimset可以设置OPTIONS
fminsearch只能求出给定初值附近的一个极小值点(如果要求极大值求相反数)
2. 例题
在这里插入图片描述

clc;clear;
f=@(x)x(1)^3-x(2)^3+3*x(1)^2+3*x(2)^2-9*x(1);
g=@(x)-f(x);
[x1,fval1]=fminunc(f,rand(2,1));   %求极小值
[x2,fval2]=fminsearch(g,rand(2,1));%求极大值
fval2=-fval2;

6.约束极值问题的数值解

1. 单变量非线性函数极小值——fminbnd

在这里插入图片描述

[x,fval]=fminbnd(fun,x1,x2,OPTIONS)

fun是用M文件定义的函数、匿名函数(@)或者Matlab中单变量数学函数。x∈[x1,x2]
在这里插入图片描述

clc;clear;
f=@(x)(x-3)^2-1;
[f,fval]=fminbnd(f,0,5);

2.fseminf函数
在这里插入图片描述
这里c(x),ceq(x)为向量函数,Ki(x,wi)为标量函数,w1,w2,…,wn为附加变量。

[x,fval]=fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq,LB,UB,OPTIONS)

这里ntheta为半无穷约束Ki(x,wi)的个数,seminfcon用于定义非线性不等式约束c(x)、非线性等式约束ceq(x)和半无穷约束Ki(x,wi)的函数,seminfcon有两个输入参数x和s,s是推荐步长,也可以不使用。
在这里插入图片描述

%% 编写fun函数文件
function f=fun1(x)
f=sum((x-0.5).^2);
end
%% 编写seminfcon函数文件
function [c,ceq,k1,k2,s]=fun2(x,s)
c=[];ceq=[];%这里没有非线性等式和不等式约束
if isnan(s(1,1))%如果s是NaN
s=[0.2,0;0.2,0];
end
%取样值
w1=1:s(1,1):100;
w2=1:s(2,1):100;
%半无穷约束
k1=sin(w1*x(1)).*cos(w1*x(2))-1/1000*(w1-50).^2-sin(w1*x(3))-x(3)-1;
k2=sin(w2*x(2)).*cos(w2*x(1))-1/1000*(w2-50).^2-sin(w2*x(3))-x(3)-1;
%画图
plot(w1,k1,'-',w2,k2,'+');
end
%% 编写主程序
clc;clear;
x0=[0.5;0.2;0.3];%如果初值不合适可能得不到可行解
[x,feval]=fseminf(@fun1,x0,2,@fun2);

3. fminimax函数
在这里插入图片描述

[x,fval]=fminimax(fun,x0,A,b,Aeq,beq,LB,UB,nonlcon,OPTIONS)

这里nonlcon是用M文件定义的非线性向量函数c(x)和ceq(x)。
在这里插入图片描述

%% 编写函数文件
function f=fun(x)
f=[2*x(1)^2+x(2)^2-48*x(1)-40*x(2)+304,-x(1)^2-3*x(2)^2,x(1)+3*x(2)-18,-x(1)-x(2),x(1)+x(2)-8];
end
%% 编写主程序调用函数文件
clc;clear;
[x,fval]=fminimax(@fun,rand(2,1));

2020/2/11今天看了数学建模线性相关的知识,感觉有很多不知道的函数用法,所以自己总结一下,以上全部来自于《数学建模算法与应用》。第一次写CSDN,可能写的有点乱。这些函数如果不经常用很可能忘所以记下来方便以后复习,重要的是大家一起分享吧!!!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MATLAB线性规划相关函数用法 的相关文章

  • 在 Matlab、VB6 和 VB.NET 程序之间发送消息的最简单方法

    我们正在将一套数据采集和分析例程从 VB6 程序升级为 VB NET VB6 和 Matlab 程序的混合体 我们希望保持系统模块化 单独的 EXE 以便我们可以轻松创建专门的独立分析程序 而无需不断升级大型应用程序 当所有程序都是用 VB
  • 在Matlab中使用中心切片定理实现滤波反投影算法

    我正在研究一种使用中心切片定理的滤波反投影算法作为家庭作业 虽然我理解纸上的理论 但在 Matlab 中实现它时遇到了问题 我得到了一个可以遵循的框架 但我认为我可能误解了一个步骤 这是我所拥有的 function img sampleFB
  • 如何将向量标准化/非标准化到范围 [-1;1]

    我怎么能够正常化到范围的向量 1 1 我想使用函数norm 因为它会更快 也让我知道我该怎么做非规范化之后的向量正常化 norm对向量进行归一化 使其平方和为 1 如果要对向量进行归一化 使其所有元素都在 0 和 1 之间 则需要使用最小值
  • 有没有办法在 MATLAB 中执行函数内联?

    我可以使用什么语言功能或开箱即用的技巧来完成 MATLAB 中的函数内联 令人烦恼的是 Google 搜索 matlab 内联函数 http www google com search q matlab inline function揭示了
  • Matlab 中二维插值的函数形式

    我需要从二维数据数组构造一个插值函数 我需要返回实际函数的东西的原因是 我需要能够将函数作为我需要进行数值积分的表达式的一部分进行计算 因此 interp2 并没有解决这个问题 它不返回函数 我可以使用 TriScatteredInterp
  • 朴素分类器 matlab

    在 matlab 中测试朴素分类器时 即使我在相同的样本数据上进行训练和测试 我也会得到不同的结果 我想知道我的代码是否正确 是否有人可以帮助解释这是为什么 dimensionality reduction columns 6 U S V
  • 在 MATLAB 中高效地形成动态窗口

    有人可以帮助我提供一种有效的方法 或者帮助我执行提供的代码 以尽可能少的步骤获得相同的结果 我将感激你 我有一个原始数组 A 1 1 1 4 3 4 5 4 4 3 3 1 0 0 2 6 2 6 3 6 6 2 7 4 8 7 2 2 2
  • 如何在Matlab脚本中将泰勒级数系数存储到数组中

    这个问题是在 m 脚本的上下文中 我知道如何获取函数的泰勒级数 但我没有看到任何命令允许将级数的系数存储到数组中 sym2poly似乎不起作用 如何将系数存储到数组中 例如这个函数 syms x f 1 x 2 4 x 9 我们怎样才能得到
  • 是否有一个函数可以将两个元胞数组“压缩”在一起? [复制]

    这个问题在这里已经有答案了 假设我有一个元胞数组A and B as so A A B C D B 1 2 3 4 我想创建元胞数组C通过将 A 和 B 压缩 在一起 如下所示 C zip A B C A 1 B 2 C 3 D 4 这样的
  • 如何检测图像中对象的实例?

    我有一张包含几个特定对象的图像 我想检测这些物体在该图像中的位置 为此 我有一些模型图像 其中包含我想要检测的对象 这些图像在我想要检测的对象实例周围得到了很好的裁剪 这是一个例子 在这张大图里 我想检测此模型图像中表示的对象 自从你最初发
  • MATLAB 在 MATLAB 7.10.0 学生版中似乎找不到 csaps()

    我有一些代码使用csaps Matlab的三次平滑样条拟合函数 http www mathworks com help toolbox curvefit csaps html我想将其提供给使用 MATLAB 7 10 0 R2010a 的学
  • 在 Matlab 中对列进行排序

    我有 2 列使用 textscan 导入的数据 数据看起来像这样 其中U is undetect and D is detect mydata 51 U 57 D 48 U 47 D my data 4x1 double 4x1 char
  • 图像增强 - 从书写中清除给定图像

    我需要清理这张照片 删除 清理我 的字样并使其变亮 作为图像处理课程作业的一部分 我可能会使用 matlab 函数 ginput 来查找图像中的特定点 当然 在脚本中您应该对所需的坐标进行硬编码 您可以使用 conv2 fft2 ifft2
  • 使用 python 在网络上部署 matlab 应用程序

    您好 我想使用 python 在网络上部署 matlab 应用程序 有没有办法做到这一点 我已按照数学工作网站上的文档将我的应用程序转换为 jar 文件 java 类 有人能指出我前进的正确方向吗 事实上 您的 Matlab 代码打包为 J
  • 如何选择部分密集数据集的均匀分布子集?

    P是一个 n d 矩阵 持有nd 维样本 P某些地区的密度是其他地区的几倍 我想选择一个子集P其中任意样本对之间的距离大于d0 并且我需要将其传播到整个区域 所有样本都具有相同的优先级 无需优化任何内容 例如覆盖面积或成对距离之和 这是执行
  • Matlab 编辑器不使用 emacs 快捷方式

    Is there some way I can make the matlab integrated editor not use emacs shortcut but use more normal shortcuts such that
  • 是否有一个函数可以检查矩阵是否对角占优(行占优)

    矩阵是对角占优 http en wikipedia org wiki Diagonally dominant matrix 按行 如果对角线处的值在绝对意义上大于该行中所有其他绝对值的总和 对于列也是如此 只是相反 matlab中有没有函数
  • 在 MATLAB 中创建共享库

    一位研究人员在 MATLAB 中创建了一个小型仿真 我们希望其他人也能使用它 我的计划是进行模拟 清理一些东西并将其变成一组函数 然后我打算将其编译成C库并使用SWIG https en wikipedia org wiki SWIG创建一
  • 优化 MATLAB 代码(嵌套 for 循环计算相似度矩阵)

    我正在 MATLAB 中基于欧几里德距离计算相似度矩阵 我的代码如下 for i 1 N M N is the size of the matrix x for whose elements I am computing similarit
  • 为什么 MATLAB 在打印大量 (.png) 图形时速度会变慢?

    我正在将大量数字打印为 png 文件 每个图都是数据矩阵中的一列图 我获取 png 文件并将它们串在一起形成动画 我的问题是 前几百张图像打印得很快 但创建每个新图形的时间却迅速增加 从前几百个 png 文件的约 0 2 秒到第 800 个

随机推荐

  • 【cdk的使用】C语言 一个仅用200行代码实现的logger系统 使用

    Github地址 https github com wujin1989 cdk 经常有人说 一个好的代码 不需要记录太多的log 确实 我信了 这也导致cdk也是基于这点出发的 所以cdk的logger系统很简单 仅仅200行左右代码 但是
  • [转]新一代 Linux 文件系统 btrfs 简介

    刘 明 ovis poly sina com 软件工程师 上海交通大学电子与通信工程系 2009 年 8 月 20 日 Btrfs 被称为是下一代 Linux 文件系统 近年来 ext2 3 遇到越来越多的扩展性问题 在期待 ext4 的同
  • 网编(20):UDP传输数据经常遇到的问题

    相对于TCP 协议的程序设计 UDP 协议的程序虽然程序设计的环节要少一些 但是由于UDP 协议缺少流量控制等机制 容易出现一些难以解决的问题 UDP 的报文丢失 报文乱序 connect 函数 流量控制 外出网络接口的选择等是比较容易出现
  • 简单谈谈weex、nvue和vue

    1 区别 weex we except 自己的理解 支持原生和vue并写 原生渲染 但是组件库不完善 仅支持编写app nvue嵌入了weex引擎 又有uniapp丰富的组件库 相当于dcloud写的weex升级版 在uniapp中支持使用
  • 把xml转为成javaBean javaBean转为成xml

    1 先定义javaBean package com wutka jox test import com wutka jox import java util public class TestBean implements java io
  • 【满分】【华为OD机试真题2023 JS】计算网络信号

    华为OD机试真题 2023年度机试题库全覆盖 刷题指南点这里 计算网络信号 知识点广搜数组 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 网络信号经过传递会逐层衰减 且遇到阻隔物无法直接穿透 在此情况下需要计算某个位置的网
  • Selenium成长之路-09简单对象定位之link text方法

    有的时候 我们需要操作的元素是一个文字链接 那么我们可以通过 linktext 或 partiallinktext 进行元素 定位 今天我们先来介绍link text元素定位 百度首页上面的 新闻 hao123 地图 等就可以使用link
  • 用Go语言开发以太坊合约

    转发请注明出处 https blog csdn net ahy231 article details 114112638 序 网上关于 go 语言开发 DApp 的教程较少 因此我只能通过官方文档来系统学习 go 语言的 DApp 开发 这
  • MacOS13+系统运行Stable Diffusion出现的问题及解决方法汇总

    目录 先睹为快 开发环境 问题一 点 生成 按钮就退出程序 问题二 生成的图片是马赛克 第一步 解决环境问题 第二步 更新指定的torch版本包 步骤一 更新指定的torch包 步骤二 重新安装pytorch nightly版本的包 问题三
  • 解决虚拟机VM和WSL2切换问题

    操作环境 windows11 虚拟机 wsl2用的都是Ubuntu 18 04 问题描述 因为之前一直使用wsl2 很久没有使用VM虚拟机 今天打开的时候发现VM不能用了 于是查资料发现用VM和wsl2会冲突 解决办法 首先说一下怎么从之前
  • C和C++中字符串说明与记录

    文章目录 目的 C语言 字符基本说明 字符串声明与操作 字符串常用函数说明 属性 复制 合并 替换 查询 比较 类型检查 类型转换 C C 字符串基本说明 C string和C语言字符串转换 C string常用方法说明 属性 类型转换 修
  • flutter滚动Text文本

    GlobalKey scrollTextKey new GlobalKey Timer scrollTextTimer ScrollController controller int index 0 override void initSt
  • js实现首页图片的轮播效果

    在大多数的网站里面首页都会有一个图片轮播的效果 而我们开发者要实现这种效果要么是使用第三方插件 要么是使用js自己写函数来实现这种效果 而我自己就是自己写js来实现这种效果 首先 我们来看一下最终完成的效果 这个就是最终实现的效果 下面我们
  • Qt5.0+msvc2010:解決中文乱码的问题

    1 在Qt Creator的工具列 选择 工具 gt 选项 进入设置界面 2 在弹出的设置界面里面 选择 文本编辑器 选择 行为 选项卡 把 行为 选项卡下面的 默认编码 置成 UTF 8 同时 UTF 8 BOM 置成 总是删除 最后点
  • MySQL(69)MySQL查看视图

    MySQL查看视图 创建好视图后 可以通过查看视图的语句来查看视图的字段信息以及详细信息 本节主要讲解如何使用 SQL 语句来查看视图的字段信息以及详细信息 查看视图的字段信息 查看视图的字段信息与查看数据表的字段信息一样 都是使用 DES
  • docker安装fastdfs

    1 搜索fastdfs docker search fastdfs 2 拉取镜像 docker pull morunchang fastdfs 3 运行tracker docker run d name tracker net host m
  • Gerrit 使用git常见问题

    目录 git push 失败报错 remote rejected master gt master prohibited by Gerrit git push报错 ERROR missing Change Id in message foo
  • Android Logcat&debug实用技巧

    logcat 作为我们最常用的调试手段 相信大家都不会陌生 这里总结一下 在使用Logcat过程中 常用的一些debug技巧 目的是为了快速有效的帮助找到并解决问题 先来看一看Logcat打印结构 常用 logcat v threadtim
  • 网上投稿地址大全

    网上投稿地址大全 上海科技报 kgbshen online sh cn 厂长经理日报 cjb490 sina com 四川日报 sichuandaily scol com cn 四川农村日报 country scol com cn 华西都市
  • MATLAB线性规划相关函数用法

    一 线性规划的Matlab标准形式及软件求解 1 MATLAB中规定线性规划的标准形式为 其中c和 x为n 维列向量 A Aeq 为适当维数的矩阵 b beq为适当维数的列向量 Aeq 对应约束条件中等式约束的系数矩阵 A为约不等式约束的系