Matlab:找到for循环的最大点

时间:2014-10-26 03:08:18

标签: matlab fminsearch

对于两个变量函数,比如说 f(x,y)= x ^ 2 + y + b ,其中 b 是:

b=raylrnd(1*sqrt(2/pi),10^6,1)  %% b is 1x1000000 vector

并受以下约束: 2 * x + 1< = b

我想找到一个区间的函数的最大值,假设x在[-10,10]之间,y在[-10,10]之间(当然,我的实际函数比这更完整,我将需要帮助来设置框架,以便我可以将它应用于我的实际功能)。

有没有办法实现这个?


尝试:

第1步:写一个文件objfun.m。

function f = objfun(x,b)
f = x(1)^2+(2)+b;

步骤2:为非线性约束写一个文件confuneq.m。

function [c, ceq] = confuneq(x)
% Nonlinear inequality constraints
c = 2*x(1)+1-b;

步骤3:调用约束优化例程。

for i=1:1:length(b)
bi=b(i);
x0 = [-1,1];            % Make a starting guess at the solution
options = optimoptions(@fmincon,'Algorithm','sqp');
[x,fval] = fmincon(@objfun,x0,[],[],[],[],[],[],... 
   @confuneq,options);

0 个答案:

没有答案