[转载]Matlab fmincon函数用法

[转载]Matlab fmincon函数用法原文地址:fmincon函数用法”style=”text-decoration:none;color:rgb(151,38,38)”>Matlab fmincon函数用法作者:长笛人倚楼Gloria这个函数在之前优化工具箱一文中已经介绍过,由于其应用广泛,所以这里通过实例单独整理一下其用法。一、基本介绍求解问题的标准型为minF(X)s.tAXAeqX=

大家好,又见面了,我是你们的朋友全栈君。

这个函数在之前优化工具箱一文中已经介绍过,由于其应用广泛,所以这里通过实例单独整理一下其用法。
一、基本介绍
求解问题的标准型为
min F(X)
s.t
AX <= b
AeqX = beq
G(x) <= 0
Ceq(X) = 0
VLB <= X <= VUB
 
其中X为n维变元向量,G(x)与Ceq(X)均为非线性函数组成的向量,其它变量的含义与线性规划,二次规划中相同,用Matlab求解上述问题,基本步骤分为三步:
1. 首先建立M文件fun.m定义目标函数F(X):
function f = fun(X);
f = F(X)
 
2. 若约束条件中有非线性约束:G(x) <= 0 或 Ceq(x) = 0,则建立M文件nonlcon.m定义函数G(X)和Ceq(X);
function [G, Ceq] = nonlcon(X)
G = …
Ceq = …
 
3. 建立主程序,非线性规划求解的函数时fmincon,命令的基本格式如下:
 
2. 第二种方法,通过函数设置边界
例2: min f(x) = exp(x1) * (4*x1^2 + 2*x2^2 + 4*x1*x2 + 2*x2 + 1)
x1 + x2 = 0
1.5 + x1 * x2 – x1 – x2 
 <= 0
-x1*x2 – 10 <= 0
function youh3
clc;
x0 [-1, 1];
[];b [];
Aeq []; beq [];
vlb []; vub [];
[x, fval] fmincon(@fun4, x0, A, b, Aeq, beq, vlb, vub, @mycon)
 
function fun4(x);
exp(x(1)) (4*x(1)^2 2*x(2)^2 4*x(1)*x(2) 2*x(2) 1);
 
function [g, ceq] mycon(x)
[1.5 x(1)*x(2) – x(1) – x(2); -x(1)*x(2) – 10];
ceq [x(1) x(2)];
 
3. 进阶用法,增加梯度以及传递参数
这里用无约束优化函数fminunc做示例,对于fmincon方法相同,只需将边界项设为空即可。
(1)定义目标函数
function [J, grad] costFunction(theta, X, y)
%COSTFUNCTION Compute cost and gradient for logistic regression
  COSTFUNCTION(theta, X, y) computes the cost of using theta as the
  parameter for logistic regression and the gradient of the cost
  w.r.t. to the parameters.
 
Initialize some useful values
length(y); number of training examples
 
You need to return the following variables correctly 
0;
grad zeros(size(theta));
 
====================== YOUR CODE HERE ======================
Instructions: Compute the cost of particular choice of theta.
              You should set to the cost.
              Compute the partial derivatives and set grad to the partial
              derivatives of the cost w.r.t. each parameter in theta
%
Note: grad should have the same dimensions as theta
%
 
theta;
hx ./ (1 exp(-z));
1/m sum([-y’ log(hx) – (1 – y)’ log(1 – hx)]);
 
for  1: length(theta)
    grad(j) 1/m sum((hx – y)’ X(:,j));
end
 
 
=============================================================
 
end
 
(2)优化求极小值
 Set options for fminunc
options optimset(‘GradObj’‘on’‘MaxIter’400);
 
 Run fminunc to obtain the optimal theta
 This function will return theta and the cost 
[theta, cost] 
    fminunc(@(t)(costFunction(t, X, y)), initial_theta, options);
 
[theta, cost] 
  fminunc(@(t)(costFunction(t, X, y)), initial_theta);
Print theta to screen
fprintf(‘Cost at theta found by fminunc: %fn’cost);
fprintf(‘theta: n’);
fprintf(‘ %f n’theta);
 
 
 
 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/145940.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • centos安装tomcat「建议收藏」

    centos安装tomcat「建议收藏」一、安装安装jdk:https://www.cnblogs.com/Createsequence/p/11445211.html1上传安装包3启动tomcat二、如果tomcat启动过慢

    2022年8月16日
    7
  • 理解dropout

    理解dropout开篇明义,dropout是指在深度学习网络的训练过程中,对于神经网络单元,按照一定的概率将其暂时从网络中丢弃。注意是暂时,对于随机梯度下降来说,由于是随机丢弃,故而每一个mini-batch都在训练不同的网络。dropout是CNN中防止过拟合提高效果的一个大杀器,但对于其为何有效,却众说纷纭。在下读到两篇代表性的论文,代表两种不同的观点,特此分享给大家。

    2022年4月27日
    44
  • jsp中得到ContextPath的两种方法

    jsp中得到ContextPath的两种方法1.script 2.el ${pageContext.request.contextPath}

    2022年9月17日
    2
  • 使用谷歌搜索攻略_Google浏览器

    使用谷歌搜索攻略_Google浏览器由于谷歌被封,无法使用谷歌搜索。但是对于研发人员来说,很多问题只有在谷歌中才能找到答案。后来一朋友推荐了archsocks代理服务1、访问https://github.com/archsocks/archsocks链接,下载windows版本安装。 如果没有,附件中有安装文件2、按照readme中的操作步骤来操作。 3、配置pac代理。 首先打开网络网络和共享中…

    2025年9月7日
    7
  • 产品经理高质量产物的五步思维法

    产品经理高质量产物的五步思维法nbsp 产品经理高质量产物的五步思维法职场中经常会遇到以下场景 领导安排工作跨部门会议技术探讨需求问题你遇到这些场景后 接下来会有哪些行为呢 其实 每个场景的本质 都是解决一个或多个问题 找到最合适答案 而不同人接收问题到成果输出的流程机制却不尽相同 也就导致最后的成果质量大相径庭 他人非常满意 高度认可 亦或他人十分失望 你的职场形象大打折扣 结果两极分化的原因是最核心的环节出了问题 即接收问题到成果

    2025年7月23日
    4
  • 抽象类和接口(我学习做的笔记供大家参考)

    抽象类和接口(我学习做的笔记供大家参考)

    2021年5月24日
    97

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号