25.10 matlab里面的10中优化方法介绍—— 函数fmincon(matlab程序)

1. 简述

关于非线性规划

非线性规划问题是指目标函数或者约束条件中包含非线性函数的规划问题。

前面我们学到的线性规划更多的是理想状况或者说只有在习题中,为了便于我们理解,引导我们进入规划模型的一种情况。相比之下,非线性规划会更加贴近实际的生活。那这节我们先通过一个类似于线性规划中linprog()函数的fmincon()来体会一下这类问题的解决过程。

一、fmincon()的基本形式

基本形式如下:x = fmincon('fun',x0,A,b,Aeq,beq,lb,ub,'nonlcon',options) ;

(1)'fun'为目标函数,注意需要单引号,或者@,或者直接在定义时写成匿名函数即可,后面的nonlcon为非线性约束(包括等式和不等式),形式要求同fun;

(2)x0表示决策变量的初始值,可以随机取一组符合约束条件的数据值,一般来讲没什么影响;

(3)A,b,Aeq,beq分别表示线性的不等式约束和等式约束,Ax<=b,Aeqx=beq;lb,ub同之前的linprog()函数,表示上下界的向量;

(4)使用 options 所指定的优化选项执行最小化。使用 optimoptions 可设置这些选项。如果没有非线性不等式或等式约束,请设置 nonlcon = \[\]。

基本要求就是以上这些,下面我们以几个例子来具体实现一下。

2. 代码

例子1

%% 用函数fmincon求约束最优化问题

clear all

f=inline('exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1)','x');

x0=-1 1;

x,fval=fmincon(f,x0,\[\],\[\],\[\],\[\],\[\],\[\],'fcon1212')

例子2

%% 用fmincon解线性约束的最优化

clear all

f=inline('-x(1)*x(2)*x(3)','x');

A=-1,-2,-2;1,2,2; %A*x<=b

b=0;72;

x0=10;10;10;

x,fval=fmincon(f,x0,A,b)

3. 运行结果

相关推荐
程序员老陆3 分钟前
C++ 未定义行为全景:对象模型、优化边界与工程防御
开发语言·c++·程序设计
知几蜗牛6 分钟前
GPT-6 与 Intelligent UI:从回答到可审计操作的产品迁移
人工智能
蟕初的梦想7 分钟前
Claude Haiku 5.5 效能实测与场景应用指南
数据库·人工智能·大模型
liron7112 分钟前
技术的诞生与演化--技术自举及其冷启动
人工智能·深度学习·神经网络·自然语言处理
知几蜗牛15 分钟前
Java 17 视觉识别结果的金额与字段门禁实现
人工智能
嘻嘻的AI日记16 分钟前
人工合规审查有盲区,智能合规如何补足文件风险识别短板
人工智能
UBIX泛联17 分钟前
机器人展风采,存储筑根基——泛联应邀参展电子科技大学70周年校庆展
人工智能·机器人·ai算力基础设施
嵌入式er17 分钟前
影石系统组 一二面OC面经
java·开发语言
徐小黑ACG18 分钟前
Golang 基础06 接口interface
开发语言·后端·golang
半杯咖啡半行码19 分钟前
Qt 开发基础:版本演进、常用工具与多平台安装
开发语言·qt