我正在使用Matlab fminsearch来最小化带有两个变量的方程sum((interval-5).^2, 2)*factor间隔是一个包含5个值的向量。 只能从1到30的步长为1的顺序选择它们。因子是0.1到0.9的值。

代码如下。 我认为区间值是正确的,但因子值是错误的。

间隔值:[3 4 5 6 7]因子值:0.6最终输出:6

我认为因子值应为0.1,最终输出应为1作为全局最小值。

%% initialization of problem parameters

minval = 1;

maxval = 30;

step = 1;

count = 5;

minFactor = 0.1;

maxFactor = 0.9;

%% the objective function

fun = @(interval, factor) sum((interval-5).^2, 2)*factor;

%% a function that generates an interval from its initial value

getinterval = @(start) floor(start) + (0:(count-1)) * step;

getfactor =@(start2) floor(start2 * 10)/10;

%% a modified objective function that handles constraints

objective = @(start, start2) f(start, fun, getinterval, minval, maxval, getfactor, minFactor, maxFactor);

%% finding the interval that minimizes the objective function

start = [(minval+maxval)/2 (minFactor+maxFactor)/2];

y = fminsearch(objective, start);

bestvals = getinterval(y(1));

bestfactor = getfactor(y(2));

eval = fun(bestvals,bestfactor);

disp(bestvals)

disp(bestfactor)

disp(eval)

该代码使用以下函数f 。

function y = f(start, fun, getinterval, minval, maxval, getfactor, minFactor, maxFactor)

interval = getinterval(start(1));

factor = getfactor(start(2));

if (min(interval) < minval) || (max(interval) > maxval) || (factormaxFactor)

y = Inf;

else

y = fun(interval, factor);

end

end

我按照亚当的建议尝试了GA函数。 考虑到我的变量来自不同的范围和步骤,我将其更改为两个不同的集合。 这是我的零钱。

step1 = 1;

set1 = 1:step1:30;

step2 = 0.1;

set2 = 0.1:step2:0.9;

% upper bound depends on how many integer used for mapping

ub = zeros(1, nvar);

ub(1) = length(set1);

ub(2) = length(set2);

然后,我改变了目标函数

% objective function

function y = f(x,set1, set2)

% mapping

xmap1 = set1(x(1));

xmap2 = set2(x(2));

y = (40 - xmap1)^xmap2;

end

运行代码后,我想我会得到想要的答案。

matlab多变量优化,matlab - Matlab使用fminsearch优化多变量 - 堆栈内存溢出相关推荐

  1. matlab编译错误怎么查找,matlab - Matlab mex文件编译错误-“未启用SSE2指令集” - 堆栈内存溢出...

    在Matlab中编译mex文件的工具箱时,出现以下错误: In file included from /home/josh/Desktop/Project/code/toolbox/channels/ ...

  2. matlab两个数组竖向叠加,matlab - 过滤器同时使用两个数组中的元素 - 堆栈内存溢出...

    解决这个问题的方法是找到一种方法来组合A和B中的信息,以便过滤本身变得容易. 我想到的第一件事是沿着第三维连接A和B,并使用过滤器掩码传递,该过滤器掩码将从'A-slice'获取8个元素,从'B-sl ...

  3. matlab循环迭代6,matlab - Matlab中每个for循环迭代的速度降低 - 堆栈内存溢出

    经过一番来回的思考,我想我知道您要达到的目标以及阻碍您前进的道路. 我已经对您的代码进行了编辑,以使其更快,更易读. 大多数情况下,操作花费的时间略高于0.05秒,并且在某些时间点,操作可能比预期的时 ...

  4. matlab读取格式重复,matlab - 为什么Xlsread以字符串形式读取(日期时间) - 堆栈内存溢出...

    我正在尝试阅读Excel工作表. 在同一台计算机上,我得到不同的结果. 我应该怎么做才能将日期时间读为日期而不是字符串? 我知道以后可以更改它,但是我需要为Octave和Matlab使用相同的代码. ...

  5. c 传图片数据给matlab,c++ - 如何通过UDP将数据从C ++应用程序发送到Matlab并进行绘制 - 堆栈内存溢出...

    我想使用Winsock通过UDP将数据从我的C ++应用程序发送到Matlab,并实时绘制数字. 例如:我得到了从1到10的数字,我想从C ++发送1,在Matlab中接收它,将其放在图形上(图,条等 ...

  6. matlab中rsa,matlab - Matlab中的RSA代码 - 堆栈内存溢出

    我想加密一条消息,例如" HELO1234" ,然后解密以获取原始消息.我已经在matlab中编写了无法正常工作的RSA代码. 参数计算 temp=1; range=1:10; k ...

  7. Matlab 生成vhdl,matlab - 使用HDL Workflow Advisor将Matlab代码转换为vhdl - 堆栈内存溢出...

    我制作了一个Matlab程序,它可以检测2个圆是否相交,并输出相交的坐标. 现在,我正在尝试将代码转换为vhdl以进行FPGA实现. 我的代码中在HDL Workflow Advisor中仍然存在错误 ...

  8. matlab输出pdf图片超出边框,matlab - 将Matlab Simulink模型保存为PDF,带有紧密的边界框 - 堆栈内存溢出...

    给定Simulink框图(模型),我想生成稍后在LaTeX文档中使用的"屏幕截图". 我希望这个截图是PDF(矢量图形, - > pdflatex),带有一个紧密的边界框,我 ...

  9. matlab 空间方程,matlab - 如何从MNA方程组到MATLAB中的状态空间[A,B,C,D] mimo? - 堆栈内存溢出...

    我想以编程方式从生成的MNA(修正的节点分析)方程组生成状态空间[ABCD]系统. 我不知道要调用哪个MATLAB函数. 我使用Erik Cheever的SCAM 链接脚本生成方程组. 我制作了文件e ...

最新文章

  1. python 笔记:函数
  2. Zedboard学习(六):XADC读取数据
  3. 汇编逻辑运算指令笔记
  4. Spring学习之AOP(面向切面编程)
  5. 使用WebService与Oracle EBS进行集成(上)
  6. Shell通过过滤条件(比如IP)分类流量包,最后合并流量包
  7. Mac OS绑定80端口
  8. 单调栈 BZOJ2364 城市美化
  9. 25个很酷的jQuery倒计时脚本–添加动态计数器!
  10. 盛天海电商:拼多多的定价策略有哪些?
  11. 7.sqli-labs-Less7
  12. 用前端框架开发一款APP要多少钱
  13. c语言韦达定理求方程解,高一上韦达定理,高次,多元方程解法.doc
  14. 在 react 中添加enter键出搜索
  15. 惠普HP LaserJet Enterprise M4555 MFP 驱动
  16. ajax + laypage实现分页
  17. 【java毕业设计】基于java+BS的QQ屏幕截图工具设计与实现(毕业论文+程序源码)——屏幕截图工具
  18. python--第四章 python流程控制语句
  19. 开始菜单中计算机栏里没有桌面,有效快速解决电脑桌面开始菜单不见了
  20. uniapp 中APP端调用uni.getLocation偶尔获取不到address解决方法

热门文章

  1. Java黑皮书课后题第7章:*7.11(统计:计算标准差)编程练习题5.45计算数字的标准差。本题…计算标准差,使用一个数组存储x的每个数。编写测试程序,提示用户输入10个数字,显示平均值和标准差
  2. linux系统分区不,其中,不属于Linux系统分区的是()。
  3. pycharm在401跑程序需要每个py文件加一句
  4. Python第二天学习
  5. Unity 游戏框架搭建 (七) 减少加班利器-QApp类
  6. ASP.NET MVC4 微信公众号开发之网页授权(一):搭建基础环境
  7. [转]系统吞吐量(TPS)、用户并发量、性能测试概念和公式---学习
  8. 河源市计算机组装竞赛,计算机组装大赛决赛圆满结束
  9. [Python人工智能] 二十三.基于机器学习和TFIDF的情感分类(含详细的NLP数据清洗)
  10. Python之分享常用的五款动态数据可视化工具