matlab求解优化问题,如果没有目标函数,只有约束条件,可否随机生成一
目标函数形式不是很重要,fmincon不需要知道目标函数的结果是怎么求出来的
只要是利用一个x未知向量输入,得到一个结果的函数就可以
你的约束条件好像也并不复杂,奇怪的是如果要权重x加起来是1
那么每个x分量的值应该是0~1之间的正数才是
而你给输入初始化x0的值是-1~1之间的随机数,所以这里比较奇怪
问题的关键就是多目标的问题
fmincon是只能寻找一个目标的,也就是目标函数只有一个返回值
如果要多目标优化,那么需要使用遗传算法或其它办法
但是多目标优化本来就是一个可能不能完全实现所有目标的优化结果
也就是说多个目标很多时候是无法同时达到的,和多时候只能得到离多个目标都比较近的结果
所以,多目标的优化一般会给帕累托解集
不过,也有简单一点的办法,因为很多时候,我们是知道鱼与熊掌是不能兼得的
我们要优化结果只是尽量靠近目标就可以了
对于有多目标的,很多时候我们需要的只是一个离所有目标都比较接近的解
例如最小二乘法意义的最优解
这个时候可以根据得到的theta,计算 theta(1) - 0.24,theta(2) - 0.38,........
等多个目标的平方和的开方,利用这个总的"距离"作为优化目标
如果得到的theta是向量,而多个目标o,o(1)=0.24,o(2)=0.38,.......
也可以表示为向量,那么最终的最小二乘目标函数就是 sqrt( sum((theta-o).^2))
也可以有其它非最小二成的目标例如绝对值和 sum(abs(theta-o))
也就是把多目标按照一定的策略变为1个目标,然后还是可简单的用fmincon解决问题
当然,如果目标很多,图像数据也很大,可能运行比较耗时间
不管你的目标函数和约束条件都好复杂,但其优化过程都是一样的。实现方法:
1、建立目标函数,myfun(x)
2、建立约束条件函数,mycon (x)
3、给定初值,x0
4、给定x变量的lb上限值和ub下限值
5、使用fmincon函数,求出最优解x(i)。
[x,fval,exitflag]=fmincon(myfun,x0,A,b,Aeq,beq,lb,ub,mycon);
6、验证。(主要验证x(i)值是否满足约束条件)
只要是利用一个x未知向量输入,得到一个结果的函数就可以
你的约束条件好像也并不复杂,奇怪的是如果要权重x加起来是1
那么每个x分量的值应该是0~1之间的正数才是
而你给输入初始化x0的值是-1~1之间的随机数,所以这里比较奇怪
问题的关键就是多目标的问题
fmincon是只能寻找一个目标的,也就是目标函数只有一个返回值
如果要多目标优化,那么需要使用遗传算法或其它办法
但是多目标优化本来就是一个可能不能完全实现所有目标的优化结果
也就是说多个目标很多时候是无法同时达到的,和多时候只能得到离多个目标都比较近的结果
所以,多目标的优化一般会给帕累托解集
不过,也有简单一点的办法,因为很多时候,我们是知道鱼与熊掌是不能兼得的
我们要优化结果只是尽量靠近目标就可以了
对于有多目标的,很多时候我们需要的只是一个离所有目标都比较接近的解
例如最小二乘法意义的最优解
这个时候可以根据得到的theta,计算 theta(1) - 0.24,theta(2) - 0.38,........
等多个目标的平方和的开方,利用这个总的"距离"作为优化目标
如果得到的theta是向量,而多个目标o,o(1)=0.24,o(2)=0.38,.......
也可以表示为向量,那么最终的最小二乘目标函数就是 sqrt( sum((theta-o).^2))
也可以有其它非最小二成的目标例如绝对值和 sum(abs(theta-o))
也就是把多目标按照一定的策略变为1个目标,然后还是可简单的用fmincon解决问题
当然,如果目标很多,图像数据也很大,可能运行比较耗时间
matlab全局优化与局部优化
matlab中的提供的传统优化工具箱(Optimization Tool),能实现局部最优,但要得全局最优,则要用全局最优化算法(Global Optimization Tool),主要包括: GlobalSearch 全局搜索和 MultiStart 多起点方法产生若干起始点,然后它们用局部求解器去找到起始点吸引盆处的最优点。ga 遗传算法用一组起始点(...
如何用matlab求解非线性约束优化问题
如何用matlab求解非线性约束优化问题 先建立M文件fun.m定义目标函数:function f=fun(x)f=((x(1)+1)^2+4*(x(2)-1.5)^2)*((x(1)-1.2)^2+0.4*(x(2)-0.5)^2);再建立M文件mycon.m定义非线性约束:function [g,ceq]=mycon(x)g=[2*x(1)-x(1)*x(2)+5*x(2)-6;x(...
如何用matlab求解非线性最优化
数学模型:min z=f(x)s.t. Ax
应用MATLAB优化工具箱编程,求解如下不等式约束优化问题。
x^2-y+1');grid on;两个函数文件function f=myfun1(x) f=x(1)^2+x(2)^2-4*x(1)+4;endfunction [g,ceq]=mycon1(x)g=[-x(1)+x(2)-2; x(1)^2-x(2)+1];ceq=0;最优化问题从几何上看是在第一象限(x1,x2>0), 直线即抛物线之下(两个约束条件), 最大的椭圆 ...
matlab 优化求解 :线性约束能写到中去吗 nonlcon
1、首先,可以肯定,把线性约束写到非线性约束函数中去是允许的。从理论上说,线性可以看成非线性的一种特殊情况;而从实际应用看,我也曾多次这样用过。2、对求解结果和速度的影响很难说,与很多因素有关,包括目标函数、其它约束、初始条件、算法等等,包括不同版本的MATLAB可能也存在差别,不能凭对于...
用matlab求解多目标优化问题的程序,如何对目标函数进行加权?
对各个目标值的权重进行计算,如有三个目标x1,x2,x3,每个目标的权重设分别为a(1),a(2),a(3),则最终的目标函数为a(1)*x1+a(2)*x2+a(3)*x3。具体权重怎么设置有很多种方法,也可以根据各个目标的重要性进行人为的设定,设定完后三个目标的权重之和要为1,即:a(1)+a(2)+a(3)=...
由matlab中的函数linprog求解最优化问题时能否输出所有的迭代点,而不...
可以的啦。例如 f = [-5; -4; -6]A = [1 -1 1 3 2 4 3 2 0];b = [20; 42; 30];lb = zeros(3,1);options = optimset('Display','iter','TolFun',1e-8);[x,fval,exitflag,output,lambda] = linprog(f,A,b,[],[],lb,[],[],options)结果:f = -5 ...
关于matlab的一个问题,怎样得到一个隐性函数的优化解?
[-50 50]);set(h, 'linew', 2)h = plot(xy0(1), xy0(2), 'ro', 'markerfacecolor', 'r');% 优化xy = fmincon(@obj,xy0,[],[],[],[],[],[],@nonlcon,opt,c0, h);% 图2:在曲面上标出最大值点figure(2)clfhold onh = ezmesh('1000*y\/(x^2+y^2+600)^1.5...
在matlab中为什么改变目标函数,优化结果不变呢,哪儿出错了,或者有没有...
在matlab中为什么改变目标函数,优化结果不变呢,哪儿出错了?一、实现题主给出的代码是无法得到最优解的,方法错误。二、分析题主给出的具体问题,该问题实际非线性函数优化问题,应该使用fmincon()函数才对。求解方法的思路是:1、自定义目标函数,myfun(x)。即 x1=x(1);y1=x(2);z1=x(3);f...
求解下面最优化问题 matlab 急急急 求解大神帮忙
此最优化问题,可以用fmincon()求得,其结果 x = 0.7782 0.3846 40.3196 200.0000 fval = 3.4820e+03 目标函数:function f =myfun(x)f=0.6224*x(1)*x(2)*x(3)*x(4)+1.7781*x(2)*x(3)^2+3.1661*x(1)^2*x(4)+19.84*x(1)^2*x(3);end 约束函数...
采宏乳癖: >> [x,y]=meshgrid(0:0.02:5);>> z=x.^2-8*x+y.^2-6*y-0.1*x.*y+50;>> mesh(x,y,z)>> minz=min(min(z))>> xx=x(find(z==minz))>> yy=y(find(z==minz))
衡山县18234517577: 用MATLAB编程编程解决优化问题 - ?
采宏乳癖: 打开matlab2014a程序,在主工具栏找到应用程序一栏,打开optimization选项.问题输入 在optimization程序中,首先根据不同的问题类型选择不同的模型,同时输入约束等.选择优化程序运行的条件 在最中间的一栏中添加优化程序运行的条件,如优化截止的标准,画图的要求等等.开始运算 点击start即可实现优化程序的运行,在图示的框中即可出现运行结果.5 查看帮助文件 在程序的最右边,是一个帮助文件,如果你有什么疑问,可以直接在帮助文件中查找.
衡山县18234517577: 如何用matlab求解非线性约束优化问题 - ?
采宏乳癖: 此题的问题描如下图.由于本经验主要是谈非线性约束下的最优化问题,对于其他线性约束就不再考虑.然后启动matlab.新建一个函数文件,用来写目标函数.在编辑器窗口中写入我们要求的目标函数,并保存,注意使函数名与文件名相同.然后再新建一个函数文件,用来编写非线性约束条件.步骤及其注意事项同上.额外需要注意的是,需要将两个函数文件放在同一个文件夹中.最后,在命令行窗口处写入fmincon命令.此处需要注意的是,对于没有的线性约束条件的位置药用空矩阵代替,并且初始条件需要满足非线性约束条件(本例中写的是[1,2]).敲下键盘上的enter建,结果得出.可以发现exitflag=1是大于0的,所以结果正确.
衡山县18234517577: 求解matlab约束优化问题 - ?
采宏乳癖: 该极小值约束优化问题可以用fmincon()优化函数来解决.解决方法:1、自定义目标函数 myfun(x)2、自定义约束函数 mycon(x)3、运用fmincon()函数 x0=[3;3] %初值 [x,fval] = fmincon(@(x) myfun(x),x0,[],[],[],[],[],[],@(x) mycon(x)); %使用格式4、运行结果
衡山县18234517577: 用MATLAB求解以下优化问题 - ?
采宏乳癖: clear clc%求解优化函数 f=@(x) x(1).*x(1)+x(2).*x(2)+2.*x(3).*x(3)+x(4).*x(4)-5.*x(1)-5.*x(2)-21.*x(3)+7.*x(4)+1; x0=[1,1,1,1]; %初始解向量 options=optimset('maxfunevals',10000,'algorithm','active-set'); m=fmincon(f,[1,2,2,2],[],[],[],[],[],[],@mycon1,...
衡山县18234517577: MATLAB函数调用格式 - ?
采宏乳癖: x--最有解 fval--目标函数值 exitflag--exitflag>0说明目标函数收敛于解;exitflag<0说明目标函数不收敛于解;exitflag=0说明目标函数振荡 output--优化结果输出,一般会显示迭代次数、最后一次迭代对目标函数计算次数、最后一次迭代步长、解出...
衡山县18234517577: 没有目标函数的优化问题. 1、目标函数是有的,只是和变量没有显式. 2、目标函数是可以通过实测得到. - ?
采宏乳癖: 遗传算法.NSGA2.举个最简单的例子,给出一组这4个变量的值,你确定出相应的目标函数,那如果遍历完所有的解呢,就确定了所有的目标函数值.没有明确的关系应该指的是不能用解析式表达出来吧,能用仿真或者程序计算就行了,遗传算法是可以没有表达式的.网上有相应的程序,也可以用matlab的工具箱.http://www.pudn.com/downloads123/sourcecode/math/detail522443.html
衡山县18234517577: matlab处理优化问题的基本步骤??
采宏乳癖: 建立优化问题的数学模型--->选择合适的优化方法(matlab提供的或自己设计的)---->matlab编程----->仿真测试
衡山县18234517577: MATLAB优化计算 - ?
采宏乳癖: 第一步:目标函数 在Matlab下输入:edit,然后将下面两行百分号之间的内容,复制进去,保存 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function y=zhidao_xiaowind00(x) x1=x(1); x2=x(2); y=...
衡山县18234517577: 如何利用matlab中的优化工具箱求解下面的问题啊????各位大神帮帮忙吧!!! - ?
采宏乳癖: 2. 采用Matlab软件,利用最速下降法求解无约束优化问题 常用格式如下: (1)x= fminbnd (fun,x1,x2) (2)x= fminbnd (fun,x1,x2 ,options) (3)[x,fval]= fminbnd(...) (4)[x,fval,exitflag]= fminbnd(...) (5)[x,fval,exitflag,output]= fminbnd(...) 其中(3)、(4)、(5)的等式右边可选用(1)或(2)的等式右边.函数fminbnd的算法基于黄金分割法和二次插值法,它要求目标函数必须是连续函数,并可能只给出局部最优解.或者fminunc、fminsearch命令.