matlab如何求解带参数的非线性规划

例如,max z=2*x1+3*x2+5*x3
x1^2+x2^2+x3^2=1
0<= x1, x2, x3<=1
可以求解如下:
nonlfun.m
function f=nonlfun(x)
f=-2*x(1) -3* x(2) -5* x(3);
nonlcon.m
function [c,ceq]=nonlcon (x)
ceq=[x(1)^2+ x(2)^2+x(3)^2-1];
c=[];
[x,fval]=fmincon(@nonlfun,[1,1,1],[],[],[],[],[0,0,0],[1,1,1], @nonlcon)

但是如果目标函数是带参数的,例如fun=CX,C为1*n矩阵,n的大小不确定,应该怎么求解呢?请高手赐教!
例如:C为m*n参数矩阵(m,n大小不确定),例如C为2*4矩阵 [1 2 3 4;5 6 7 8] ;我要分别求解
max(x1+2*x2+3*x3+4*x4),
max(5*x1+6*x2+7*x3+8*x4),
约束均为
x1^2+x2^2+x3^2+x4^2=1
0<= x1, x2, x3,x4<=1
若C为1*5矩阵 C=[3,4,5,6,7],就要求解
max(3*x1+4*x2+5*x3+6*x4+7*x5),
约束均为
x1^2+x2^2+x3^2+x4^2+x5^2=1
0<= x1, x2, x3,x4,x5<=1

假设你的参数为:C,其声明和调用方法如下
nonlfun.m
function f=nonlfun(x,C)
f=-2*x(1) -3* x(2) -5* x(3);
nonlcon.m
function [c,ceq]=nonlcon (x,C)
ceq=[x(1)^2+ x(2)^2+x(3)^2-1];
c=[];
[x,fval]=fmincon(@nonlfun,[1,1,1],[],[],[],[],[0,0,0],[1,1,1], @nonlcon,C)
这样就可以实现带参数求优化,我没有调试,希望对你有帮助。
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-10-11
你把那个参数设个步长,之后用for循环,一个个试就行了。

利用matlab 求解非线性规划问题
利用matlab 求解非线性规划问题,其运行代码编写,可以这样来考虑:1、创建目标函数,myobj(x)f=-(2*x1+3*x1^2+3*x2+x2^2+x3)2、创建约束条件函数,mycon(x)根据给出的条件,来写不等式条件和等式条件 3、使用fmincon()函数,求解x1,x2,x3。即 [x,fval,exitflag]=fmincon(@myobj,x...

matlab 求解非线性规划 代码
matlab 求解非线性规划可以用fmincon函数来求解。求解过程如下:第一步、自定义目标函数,fmin(x)fmin=@(x) 0.007395768*x(1)^2 + 0.002729374*x(2)^2 + 0.006876885*x(1)*x(2)第二步、确定初始条件,即x0=[0,0]第三步、确定等式条件,即Aeq=[1,1],beq=[1]第四步、确定x的上下...

三用matlab或lingo求解以下非线性规划问题:(1maxf(x)=x2 +x22 +x...
在这个代码中,我们首先定义了目标函数f,然后使用lsqminconf函数来求解最小值。由于该问题没有等式约束,因此我们只需要定义一个空的A和b。最后,我们使用默认的初始值x0=0作为搜索的起点。运行这个代码,MATLAB将输出最优解和最小值。

matlab非线性规划fmincon函数中目标函数参数传递问题,怎么解?
1、在到达迭代次数阈值或目标函数估值次数阈值时,求解器没有最小化目标到要求的精度,此时求解器停止。接下来,可以尝试以下方法:(1)设置‘Display’为‘iter’,查看每步的迭代信息,这些信息包括:目标函数(Fval or f(x) or Resnorm)是否是下降的;检查约束越界(Max constraint)是否是递减趋向于...

用matlab求非线性规划问题的最优解
题主给出的非线性规划问题,其最优解可以用matlab的fmincon函数求解,求解方法如下:1、根据条件,确定x、y、z的上下限 lb=[0,0,5];ub=[15,5,8];2、自定义目标函数,fmincon_fun(k),即 x=k(1);y=k(2);z=k(3);m=21.6*sqrt(5^2+(8-z)^2 )+7.2*(sqrt(x^2+(5-x)^2...

如何在MATLAB中用蒙特卡洛法解非线性规划问题
MATLAB编程步骤:1 确定求解的非线性规划问题 2 依次编写三个m文件,首先编写目标函数的m文件 3 然后编写约束条件的m文件 4 再依据蒙特卡洛法求解的基本思想编写主程序的m文件。先初始化,利用unifrnd函数产生服从均匀分布的随机数,作为试验点。5 然后调用目标函数和约束条件的m文件,找出最优解 6 最后...

求助一个用Matlab求解非线性规划的问题,不胜感激!
1. 把[x,fval]=fmincon('fun',x0,A,b,Aeq,beq,VLB,VUB,'mycon')改为 [x,fval]=fmincon('fun',x0,A,b,Aeq,beq,VLB,VUB)我不是太清楚你为什么要加mycon没用吧。2. 目标函数加负号(因为fmincon是求最小值)function f=fun(x)f=-(3.4854*x(1)+6.2879*x(3)+5.6932*x(4))...

求助:MATLAB求非线性规划的问题
用fmincon()函数,可以求得非线性规划 x1*x2 的最大值。x1=8,x2=0.36788,f=2.943 代码如下:

求解各位大神,matlab的一道简单非线性规划问题
用matlab求解这类极值问题,是无法求得其结果。必须给出n、b的已知值,如n=10,b=1050时,可以用fmincon函数求得。实现方法:x0=ones(1,10);lb=[0,0,0,0,0,0,0,0,0,0];ub=[];[x,fval] = fmincon(@(x) fmincon_fun(x),x0,[],[],[],[],lb,ub,@(x) fmincon_con(x));...

MATLAB 非线性规划问题
function [g,h] = fun2(x)g(1) =[x(1)-1];g(2) =[x(2)-1];h = [];2、选项问题。options = optimset('largescale','off'),此选项不适用于fmincon()函数。应做如下改动 options = optimoptions('fmincon','Algorithm','interior-point');x0=[0,0][x,fval,exitflag] = ...

相似回答
大家正在搜