用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)<=183.55;
x(4)+x(5)+x(6)<=283.55;
x(7)+x(8)+x(9)<=383.55;
x(10)+x(11)+x(12)<=183.55;
x(1)+x(4)+x(7)+x(10)>=116.45;
x(2)+x(5)+x(8)+x(11)>=316.45;
x(3)+x(6)+x(9)+x(12)>=416.45;
x(1),…x(12)>=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) 即可。
%=================================
function fff
clear;clc;
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,EXITFLAG]=fmincon(@myobj,x0,A,b,[],[],lb,ub)

function f=myobj(x)
c = [12 21 21; 13 20 23; 15 17 27; 17 19 31];
x =zeros(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;
%=============================

运行结果:
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
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-01-25
Global optimal solution found.
Objective value: 112550.5
Objective bound: 112550.4
Infeasibilities: 0.000000
Extended solver steps: 83
Total solver iterations: 4753
Variable Value Reduced Cost
X1 50.65000 0.000000
X2 0.000000 7.000000
X3 132.9000 0.000000
X4 0.000000 3.438348
X5 0.000000 8.438348
X6 283.5500 0.000000
X7 65.80000 0.000000
X8 316.4500 0.000000
X9 0.000000 0.1050611E+09
X10 0.000000 2.000000
X11 0.000000 2.000000
X12 0.000000 0.1050611E+09
Row Slack or Surplus Dual Price
1 112550.5 -1.000000
2 0.000000 3.000000
3 0.000000 5.438348
4 1.300000 0.000000
5 183.5500 0.000000
6 0.000000 -215.0000
7 0.000000 -217.0000
8 0.000000 -40.97349

...求解一个优化问题(目标函数非线性,约束函数线性)?
x(1) = -4.0301e+016 x11 x(2) = -5.3913e+016 x12 x(3) = -4.4068e+016 x13 x(4)= -4.5546e+016 x14 x(5) = -4.5676e+016 x21 x(6)= -4.9899e+016 x22 x(7) = -4.7096e+016 x23 x(8) = -5.1703e+016 x24 x(9) = -4.1...

如何用matlab求解非线性约束优化问题
此题的问题描如下图。由于本经验主要是谈非线性约束下的最优化问题,对于其他线性约束就不再考虑。然后启动matlab。新建一个函数文件,用来写目标函数。在编辑器窗口中写入我们要求的目标函数,并保存,注意使函数名与文件名相同。然后再新建一个函数文件,用来编写非线性约束条件。步骤及其注意事项同上。额...

MATLAB罚函数法解非线性有约束优化问题,毕业设计急用!哪位大神能帮这个...
function[c,ceq]=confuna(x)c(1)=2-x(3);c(2)=x(3)-40;c(3)=17-x(1);c(4)=5*x(3)-x(2);c(5)=x(2)-17*x(3);c(6)=2000-689*x(1);c(7)=2758.91-x(1)^2*x(3)^3;c(8)=20.48-x(1)*x(2)*sqrt(x(3));ceq=[];第二个:function f = myfuna(x)...

用matlab进行卧室储罐的结构优化目标函数是非线性,约束条件有非线性的...
1、确定结构优化目标函数,是最大值还是最小值 2、根据非约束条件(不等式)和约束条件(等式),确定结构优化约束函数 3、确定变量的初值(有必要时,需要调整)4、用fmincon()函数求得,其最优解 5、对最优解进行验证,是否符合不等式条件和等式条件。如满足,则求解成功。

matlab遗传算法优化问题中,非线性等式约束怎么添加啊?
建立约束条件函数,把非线性的等式约束条件添加加在[c,ceq]中。如 function [c,ceq]=NonCon(x)c=x(1)^2+x(2)^2-9;ceq=[];然后,再用ga()函数调用,如 [x, fval, exitflag] =ga(o@FitFun,nvars,A,b,Aeq,beq,lb,ub,NonCon)

matlab非线性约束优化设计-求大神指教,最好能发个源程序供参考_百度知 ...
根据上述,可以用matlab的fmincon()最小值函数求解,得到最优解。首先、建立目标函数,fmincon_fun(x)第二,建立约束函数,fmincon_con(x)第三,用fmincon函数求解,即 [x,fval,exitflag] = fmincon(@(x) fmincon_fun(x),x0,[],[],[],[],lb,ub,@(x) fmincon_con(x));求解结果 x1=...

matlab 向凸优化非线性约束函数传递参数 fmincon
计算x处的非线性不等约束 的函数值。Ceq = …计算x处的非线性等式约束 的函数值。lambda是Lagrange乘子,它体现哪一个约束有效。output输出优化信息;grad表示目标函数在x处的梯度;hessian表示目标函数在x处的Hessiab值。注意:1. fmincon 函数提供了大型优化算法和中型优化算法。默认时,若在 fun 函数...

使用matlab的fmincon优化解决非线性问题,一直报错,求大神解答,小白在线...
这道题我试了fmincon函数,效果不明显,所以改用全局搜索函数GlobalSearch。另外说明一下,这都是求极小值的函数,如果要求m的最大值,那就先求出-m的最小值,其相反数即为最大值。下面给出优化过程:先在m文件中创建约束函数 function [c,ceq] = fun_con(x) % 非线性不等约束 c = [];...

优化模型Matlab的求解方法,附代码演示
- 目标函数 - 约束函数(所有变量为正)【解答】a. 首先,根据题目确认这是一个线性规划问题。线性规划的通用数学表达式和MATLAB标准形式为:创建符合标准格式的A、b、Aeq、beq、lb、ub参数,才能顺利运行优化算法。b. 对于线性规划的优化求解步骤(也适用于其他优化方案),建议如下:1) 选择优化求解器...

利用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...

相似回答