Matlab 非线性规划问题模型代码

非线性规划问题的基本内容
非线性规划解决的是自变量在一定的非线性约束或线性约束组合条件下,使得非线性目标函数求得最大值或者最小值的问题。
当目标函数为最小值时,上述问题可以写成如下形式:
\]
\left\{\begin{array}{l}
{\mathbf{A}\mathbf{X} \leqslant \mathbf{B}}
\\ {\mathbf{A}_{\mathrm{eq}} \mathbf{X}=\mathbf{B}_{\mathrm{eq}}}
\\ G(x) \leqslant 0
\\ H_{\mathrm{eq}}(x) = 0
\\ {\mathbf{LB} \leqslant \mathbf{X} \leqslant \mathbf{UB}}
\end{array}\right.
\]
其中
\(F(x)\) 为非线性目标函数
\(G(x)\) 为非线性不等式约束条件
\(H_\mathrm{eq}(x)\) 为非线性等式约束条件
\(\mathbf{X}\) 为决策变量向量
\(\mathbf{A}\) 为线性不等式系数矩阵
\(\mathbf{B}\) 为线性不等式右端常数向量
\(\mathbf{A}_\mathrm{eq}\) 为线性等式系数矩阵
\(\mathbf{B}_\mathrm{eq}\) 为线性等式右端常数向量
\(\mathbf{L B}\) 为决策变量下界向量
\(\mathbf{U B}\) 为决策变量上界向量
Matlab模型代码
调用形式
[X,FVAL,EXITFLAG,OUTPUT,LAMBDA] = fmincon(FUN,X0,A,B,Aeq,Beq,LB,UB,NONLCON) % 统一形式
[X,FVAL,EXITFLAG,OUTPUT,LAMBDA] = fmincon(F,X0,A,B,Aeq,Beq,LB,UB,NONLCON) % 线性目标函数,包含非线性约束
[X,FVAL,EXITFLAG,OUTPUT,LAMBDA] = fmincon(@(X)MYOBJ(X),X0,A,B,Aeq,Beq,LB,UB,@(X)MYCON(X)) % 自己定义目标函数和非线性约束函数
% 目标函数
function F = MYOBJ(X)
F = ......
% 非线性约束函数
function [G,Heq] = MYCON(X)
G = ..... % 非线性不等式约束条件
Heq = ..... % 非线性等式约束条件
输入变量
- FUN 为目标函数,可以自己定义,输入变量X,输出目标值
- X0 为初始解
- A 为不等式约束系数矩阵(注意默认不等式方向为小于等于,若为大于等于,需要将其取相反数)
- B 为不等式右端常数向量(注意默认不等式方向为小于等于,若为大于等于,需要将其取相反数)
- Aeq 为等式约束系数矩阵
- Beq 为等式右端常数向量
- LB 为决策变量下界向量
- UB为决策变量上界向量
- NONLCON 为非线性约束,可以自己定义,其中包括非线性不等式约束,非线性等式约束两种约束。输入变量X,输出不等式计算值,等式计算值
在调用时,输入参数不存在时,可以将其输入用 [] 空矩阵表示。
输出变量
- X 为最优解
- FVAL 为最优目标值
- EXITFLAG 为运行结束标志,当等于1时,表示程序收敛于解 X;当等于0时,表示程序运行次数到达最大;当小于0时,说明情况较多
- OUTPUT 为程序迭代次数
- LAMBDA 为解X相关的Largrange乘子和影子价格
案例演示
目标函数与约束条件
\]
Matlab程序
clc
clear
close all
x0=rand(2,1); % 随机产生初始解
A=[];
B=[];
Aeq=[];
Beq=[];
LB=[0,0];
UB=[];
[x,fval,exitflag]=fmincon(@(x)myobj(x),x0,A,B,Aeq,Beq,LB,UB,@(x)mycon(x))
% 目标函数
function F = myobj(x)
F = x(1)^2+x(2)^2+8;
end
% 非线性约束函数
function [G,Heq] = mycon(x)
G = -x(1)^2+x(2);
Heq = -x(1)-x(2)^2+2;
end
运行结果
x =
1.0000
1.0000
fval =
10.0000
exitflag =
1
Matlab 非线性规划问题模型代码的更多相关文章
- Matlab 线性规划问题模型代码
线性规划问题的基本内容 线性规划解决的是自变量在一定的线性约束条件下,使得线性目标函数求得最大值或者最小值的问题. \[ \min z=\sum_{j=1}^{n} f_{j} x_{j} \] \[ ...
- Matlab 图论最短路问题模型代码
最短路问题的基本内容 最短路问题研究的是,在一个点与点之间连接形成的网络图中,对应路径赋予一定的权重(可以理解为两点之间的距离),计算任意两点之间如何和走,路径最短的问题.在这里的距离可以理解成各种两 ...
- Matlab 模拟退火算法模型代码
function [best_solution,best_fit,iter] = mySa(solution,a,t0,tf,Markov) % 模拟退化算法 % ===== 输入 ======% % ...
- Matlab 整数线性规划问题模型代码
整数线性规划问题的基本内容 整数线性规划解决的是自变量在一定的线性约束条件下,使得线性目标函数求得最大值或者最小值的问题.其中自变量只能取整数.特别地,当自变量只能取0或者1时,称之为 0-1 整数规 ...
- [原创] Matlab 指派问题模型代码
指派问题的基本内容 一般来说指派问题解决的是如何将任务分配到人,使得任务完成的效益最大化(成本型效益则求最小值,利润型效益则求最大值).上述问题一个 0 - 1 整数规划问题. 问题围绕着任务和人展开 ...
- MATLAB Coder从MATLAB生成C/C++代码步骤
MATLAB Coder可以从MATLAB代码生成独立的.可读性强.可移植的C/C++代码. 使用MATLAB Coder产生代码的3个步骤: 准备用于产生代码的MATLAB算法: 检查MATLAB代 ...
- 转 举例说明使用MATLAB Coder从MATLAB生成C/C++代码步骤
MATLAB Coder可以从MATLAB代码生成独立的.可读性强.可移植的C/C++代码. http://www.mathworks.cn/products/matlab-coder/ 使用MATL ...
- 多路复用I/O模型poll() 模型 代码实现
多路复用I/O模型poll() 模型 代码实现 poll()机制和select()机制是相似的,都是对多个描述符进行轮询的方式. 不同的是poll()没有描述符数目的限制. 是通过struct pol ...
- Windows Socket五种I/O模型——代码全攻略(转)
Winsock 的I/O操作: 1. 两种I/O模式 阻塞模式:执行I/O操作完成前会一直进行等待,不会将控制权交给程序.套接字 默认为阻塞模式.可以通过多线程技术进行处理. 非阻塞模式:执行I/O操 ...
随机推荐
- Educational Codeforces F. Remainder Problem
[传送门] 题意就是单点加以及查询下标为等差数列位置上的值之和.刚开始看到这道题.我以为一个数的倍数是log级别的.就直接写了发暴力.就T了.还在想为啥,优化了几发才发现不太对劲.然后才想到是$\df ...
- [React] Handle React Suspense Errors with an Error Boundary
Error Boundaries are the way you handle errors with React, and Suspense embraces this completely. Le ...
- 验证码破解 | Selenium模拟登陆12306
12306官网登录的验证码破解比较简单,验证码是常规的点触类型验证码,使用超级鹰识别率比较高. 思路: (1)webdriver打开浏览器: (2)先对整个屏幕截屏,通过标签定位找到验证码图片,并定位 ...
- 如何让SublimeText3更好用
有关如何让Sublime Text3更好用 序言 某天在网上看到对于SublimeText3的介绍:一款插件功能强大的编辑器 ... 如果没有插件的话根本就是个稍微有点快捷键.配色喜人的普通编辑器,跟 ...
- shell 命令行参数(基本)
命令行参数 $0 表示程序名.$1 至 \$9则是位置参数.$# 表示参数的个数.$* 将所有参数当做一个整体来引用$@ 把每个参数作为一个字符串返回,可以使用for循环来遍历$? 最近一个执行的命令 ...
- Incorrect string value: 'è·å...' for column 'result' at row 1
错误详情信息: ### Error updating database. Cause: java.sql.SQLException: Incorrect ### The error may invol ...
- shell之批量新增用户脚本(http-basic-auth)
user.txt(用户名记录文件) test001@.com test002@.com user.sh(shell脚本): for line in `cat user.txt` do echo $li ...
- docker-Harbor仓库映像
部署环境: centos-7.2 docker-engine-1.12.5 docker-compose-1.9.0 harbor-0.5.0 1.下载所需的软件包(以下需要-翻-墙-下载的地方你们自 ...
- 数据结构(一)二叉树 & avl树 & 红黑树 & B-树 & B+树 & B*树 & R树
参考文档: avl树:http://lib.csdn.net/article/datastructure/9204 avl树:http://blog.csdn.net/javazejian/artic ...
- 第1001次安kali
第1001次安kali 由于VMware跟win10有仇等原因,最终投入了VirtualBox的怀抱 主要参考这个博客Kali Linux安装教程--VirtualBox 参考Kali安装教程(Vir ...