matlab非线性目标函数约束怎么求解,用matlab求解一个优化问题(目标函数非线性,约束函数线性)...

博主在MATLAB中尝试解决一个目标函数非线性、约束函数线性的优化问题,遇到指数运算下标错误及求解器警告。经过分析,问题出在目标函数定义和变量转换上。一位匿名网友指出将`size(x)=[4,3]`改为`x=zeros(4,3)`即可修正。经过修改后,程序成功运行并给出了优化结果。博客讨论了MATLAB优化工具箱的使用和错误调试技巧。
摘要由CSDN通过智能技术生成

导航:网站首页 >

用matlab求解一个优化问题(目标函数非线性,约束函数线性)

时间:2018-5-1

用matlab求解一个优化问题(目标函数非线性,约束函数线性)

min f(x)=12*x(1)+21*x(2)+21*x(3)+13*x(4)+20*x(5)+23*x(6)+15*x(7)+17*x(8)+27*x(9)+17*x(10)+19*x(11)+31*x(12)+200*[(x(1)+x(2)+x(3))^0.6+(x(4)+x(5)+x(6))^0.6+(x(7)+x(8)+x(9))^0.6+(x(10)+x(11)+x(12))^0.6]

s.t. x(1)+x(2)+x(3)=0;

我是这样求的:

目标函数(运行显示下标不对)

function f=myobj(x)

c = [12 21 21; 13 20 23; 15 17 27; 17 19 31];

size(x) = [4,3];

y = c.*x;

y = sum(y(:));

s = 0;

for i = 1:4

sg = sum(x(i,:));

s = s+sg^0.6;

end

f = y+200*s;

command window

A= [1,1,1,0,0,0,0,0,0,0,0,0;

0,0,0,1,1,1,0,0,0,0,0,0;

0,0,0,0,0,0,1,1,1,0,0,0;

0,0,0,0,0,0,0,0,0,1,1,1;

-1,0,0,-1,0,0,-1,0,0,-1,0,0;

0,-1,0,0,-1,0,0,-1,0,0,-1,0;

0,0,-1,0,0,-1,0,0,-1,0,0,-1]

b=[200-1.645*10;

300-1.645*10;

400-1.645*10;

200-1.645*10;

-100-1.645*10;

-300-1.645*10;

-400-1.645*10]

x0=[0,0,0,0,0,0,0,0,0,0,0,0];

lb=[0,0,0,0,0,0,0,0,0,0,0,0];

ub=[];

[X,FVAL]=fmincon(@myobj,x0,A,b,[],[],lb,ub)

运行显示:

Warning: Large-scale (trust region) method does not currently solve this type of problem,

switching to medium-scale (line search).

> In fmincon at 260

? Error using ==> fmincon

FMINCON cannot continue because user supplied objective function failed with the following error:

Subscript indices must either be real positive integers or logicals.

请热心人士帮忙看下怎么改?谢谢!

fval不可能是0.我觉得求出来的x是1*12矩阵,需转换为4*3矩阵,代到目标函数中算才有结果,但我不知道怎么转换。

相关问题:

匿名网友:

程序编的非常好,只有一句:size(x) = [4,3]改为x =zeros(4,3) 即可.

%

运行结果:

X =

19.5167 69.5167 94.5167 38.7083 88.7083 113.7083 38.7083 88.7083 113.7083 19.5167 69.5167 94.5167

FVAL =

0

EXITFLAG =

1

大家还关注:

问题推荐

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值