出现运行结果无法符合部分约束关系的情况,代码如下,求高手帮助,感激不尽!
%objfun.m 文件
function f = objfun(x)
f=0;
for i=1:120
for u=0:11
for v=1:9
f=f+sum((1/9999)^((250-x(i))/abs(250-x(i))))*sum(x(u*10+v+1)-x(u*10+v)-25);
end
end
end
%confun.m文件
function[c,ceq] =confun(x)
%非线性不等式约束
for n=0:11
c2 =[x(n*10+1)-x(n*10+2)+25
x(n*10+2)-x(n*10+3)+25
x(n*10+3)-x(n*10+4)+25
x(n*10+4)-x(n*10+5)+25
x(n*10+5)-x(n*10+6)+25
x(n*10+6)-x(n*10+7)+25
x(n*10+7)-x(n*10+8)+25
x(n*10+8)-x(n*10+9)+25
x(n*10+9)-x(n*10+10)+25
x(n*10+121)-x(n*10+2)+2
x(n*10+122)-x(n*10+3)+2
x(n*10+123)-x(n*10+4)+2
x(n*10+124)-x(n*10+5)+2
x(n*10+125)-x(n*10+6)+2
x(n*10+126)-x(n*10+7)+2
x(n*10+127)-x(n*10+8)+2
x(n*10+128)-x(n*10+9)+2
x(n*10+129)-x(n*10+10)+2];
end
for a=11:60
c3 =[-(x(1)-x(a))^2+1
-(x(2)-x(a))^2+1
-(x(3)-x(a))^2+1
-(x(4)-x(a))^2+1
-(x(5)-x(a))^2+1
-(x(6)-x(a))^2+1
-(x(7)-x(a))^2+1
-(x(8)-x(a))^2+1
-(x(9)-x(a))^2+1
-(x(10)-x(a))^2+1
-(x(121)-x(a))^2+1
-(x(122)-x(a))^2+1
-(x(123)-x(a))^2+1
-(x(124)-x(a))^2+1
-(x(125)-x(a))^2+1
-(x(126)-x(a))^2+1
-(x(127)-x(a))^2+1
-(x(128)-x(a))^2+1
-(x(129)-x(a))^2+1
-(x(130)-x(a))^2+1];
end
for b=21:60
c4 =[-(x(11)-x(b))^2+1
-(x(12)-x(b))^2+1
-(x(13)-x(b))^2+1
-(x(14)-x(b))^2+1
-(x(15)-x(b))^2+1
-(x(16)-x(b))^2+1
-(x(17)-x(b))^2+1
-(x(18)-x(b))^2+1
-(x(19)-x(b))^2+1
-(x(20)-x(b))^2+1
-(x(131)-x(b))^2+1
-(x(132)-x(b))^2+1
-(x(133)-x(b))^2+1
-(x(134)-x(b))^2+1
-(x(135)-x(b))^2+1
-(x(136)-x(b))^2+1
-(x(137)-x(b))^2+1
-(x(138)-x(b))^2+1
-(x(139)-x(b))^2+1
-(x(140)-x(b))^2+1];
end
for d=31:60
c5 =[-(x(21)-x(d))^2+1
-(x(22)-x(d))^2+1
-(x(23)-x(d))^2+1
-(x(24)-x(d))^2+1
-(x(25)-x(d))^2+1
-(x(26)-x(d))^2+1
-(x(27)-x(d))^2+1
-(x(28)-x(d))^2+1
-(x(29)-x(d))^2+1
-(x(30)-x(d))^2+1
-(x(141)-x(d))^2+1
-(x(142)-x(d))^2+1
-(x(143)-x(d))^2+1
-(x(144)-x(d))^2+1
-(x(145)-x(d))^2+1
-(x(146)-x(d))^2+1
-(x(147)-x(d))^2+1
-(x(148)-x(d))^2+1
-(x(149)-x(d))^2+1
-(x(150)-x(d))^2+1];
end
for e=41:60
c6 =[-(x(31)-x(e))^2+1
-(x(32)-x(e))^2+1
-(x(33)-x(e))^2+1
-(x(34)-x(e))^2+1
-(x(35)-x(e))^2+1
-(x(36)-x(e))^2+1
-(x(37)-x(e))^2+1
-(x(38)-x(e))^2+1
-(x(39)-x(e))^2+1
-(x(40)-x(e))^2+1
-(x(151)-x(e))^2+1
-(x(152)-x(e))^2+1
-(x(153)-x(e))^2+1
-(x(154)-x(e))^2+1
-(x(155)-x(e))^2+1
-(x(156)-x(e))^2+1
-(x(157)-x(e))^2+1
-(x(158)-x(e))^2+1
-(x(159)-x(e))^2+1
-(x(160)-x(e))^2+1];
end
for f=51:60
c7 =[-(x(41)-x(f))^2+1
-(x(42)-x(f))^2+1
-(x(43)-x(f))^2+1
-(x(44)-x(f))^2+1
-(x(45)-x(f))^2+1
-(x(46)-x(f))^2+1
-(x(47)-x(f))^2+1
-(x(48)-x(f))^2+1
-(x(49)-x(f))^2+1
-(x(50)-x(f))^2+1
-(x(161)-x(f))^2+1
-(x(162)-x(f))^2+1
-(x(163)-x(f))^2+1
-(x(164)-x(f))^2+1
-(x(165)-x(f))^2+1
-(x(166)-x(f))^2+1
-(x(167)-x(f))^2+1
-(x(168)-x(f))^2+1
-(x(169)-x(f))^2+1
-(x(170)-x(f))^2+1];
end
for g=311:360
c8 =[-(x(301)-x(g))^2+1
-(x(302)-x(g))^2+1
-(x(303)-x(g))^2+1
-(x(304)-x(g))^2+1
-(x(305)-x(g))^2+1
-(x(306)-x(g))^2+1
-(x(307)-x(g))^2+1
-(x(308)-x(g))^2+1
-(x(309)-x(g))^2+1
-(x(310)-x(g))^2+1
-(x(301)-x(g-120))^2+1
-(x(302)-x(g-120))^2+1
-(x(303)-x(g-120))^2+1
-(x(304)-x(g-120))^2+1
-(x(305)-x(g-120))^2+1
-(x(306)-x(g-120))^2+1
-(x(307)-x(g-120))^2+1
-(x(308)-x(g-120))^2+1
-(x(309)-x(g-120))^2+1
-(x(310)-x(g-120))^2+1];
end
for h=321:360
c9 =[-(x(311)-x(h))^2+1
-(x(312)-x(h))^2+1
-(x(313)-x(h))^2+1
-(x(314)-x(h))^2+1
-(x(315)-x(h))^2+1
-(x(316)-x(h))^2+1
-(x(317)-x(h))^2+1
-(x(318)-x(h))^2+1
-(x(319)-x(h))^2+1
-(x(320)-x(h))^2+1
-(x(311)-x(h-120))^2+1
-(x(312)-x(h-120))^2+1
-(x(313)-x(h-120))^2+1
-(x(314)-x(h-120))^2+1
-(x(315)-x(h-120))^2+1
-(x(316)-x(h-120))^2+1
-(x(317)-x(h-120))^2+1
-(x(318)-x(h-120))^2+1
-(x(319)-x(h-120))^2+1
-(x(320)-x(h-120))^2+1];
end
for j=331:360
c10 =[-(x(321)-x(j))^2+1
-(x(322)-x(j))^2+1
-(x(323)-x(j))^2+1
-(x(324)-x(j))^2+1
-(x(325)-x(j))^2+1
-(x(326)-x(j))^2+1
-(x(327)-x(j))^2+1
-(x(328)-x(j))^2+1
-(x(329)-x(j))^2+1
-(x(330)-x(j))^2+1
-(x(321)-x(j-120))^2+1
-(x(322)-x(j-120))^2+1
-(x(323)-x(j-120))^2+1
-(x(324)-x(j-120))^2+1
-(x(325)-x(j-120))^2+1
-(x(326)-x(j-120))^2+1
-(x(327)-x(j-120))^2+1
-(x(328)-x(j-120))^2+1
-(x(329)-x(j-120))^2+1
-(x(330)-x(j-120))^2+1];
end
for k=341:360
c11 =[-(x(331)-x(k))^2+1
-(x(332)-x(k))^2+1
-(x(333)-x(k))^2+1
-(x(334)-x(k))^2+1
-(x(335)-x(k))^2+1
-(x(336)-x(k))^2+1
-(x(337)-x(k))^2+1
-(x(338)-x(k))^2+1
-(x(339)-x(k))^2+1
-(x(340)-x(k))^2+1
-(x(331)-x(k-120))^2+1
-(x(332)-x(k-120))^2+1
-(x(333)-x(k-120))^2+1
-(x(334)-x(k-120))^2+1
-(x(335)-x(k-120))^2+1
-(x(336)-x(k-120))^2+1
-(x(337)-x(k-120))^2+1
-(x(338)-x(k-120))^2+1
-(x(339)-x(k-120))^2+1
-(x(340)-x(k-120))^2+1];
end
for l=351:360
c12 =[-(x(341)-x(l))^2+1
-(x(342)-x(l))^2+1
-(x(343)-x(l))^2+1
-(x(344)-x(l))^2+1
-(x(345)-x(l))^2+1
-(x(346)-x(l))^2+1
-(x(347)-x(l))^2+1
-(x(348)-x(l))^2+1
-(x(349)-x(l))^2+1
-(x(350)-x(l))^2+1
-(x(341)-x(l-120))^2+1
-(x(342)-x(l-120))^2+1
-(x(343)-x(l-120))^2+1
-(x(344)-x(l-120))^2+1
-(x(345)-x(l-120))^2+1
-(x(346)-x(l-120))^2+1
-(x(347)-x(l-120))^2+1
-(x(348)-x(l-120))^2+1
-(x(349)-x(l-120))^2+1
-(x(350)-x(l-120))^2+1];
end
for m=1:120
c1 =[x(m)-x(m+120)+25
x(m)-x(m+240)+2
x(m+240)-x(m)-20];
end
c =[c1
c2
c3
c4
c5
c6
c7
c8
c9
c10
c11
c12];
%线性方程组
ceq=[];
%主程序
x0=[0 30 60 90 120 150 180 210 240 270 1 31 61 91 121 151 181 211 241 271 2 32 62 92 122 152 182 212 242 272 3 33 63 93 123 153 183 213 243 273 4 34 64 94 124 154 184 214 244 274 5 35 65 95 125 155 185 215 245 275 0 30 60 90 120 150 180 210 240 270 1 31 61 91 121 151 181 211 241 271 2 32 62 92 122 152 182 212 242 272 3 33 63 93 123 153 183 213 243 273 4 34 64 94 124 154 184 214 244 274 5 35 65 95 125 155 185 215 245 275 25 55 85 115 145 175 205 235 265 295 26 56 86 116 146 176 206 236 266 296 27 57 87 117 147 177 207 237 267 297 28 58 88 118 148 178 208 238 268 298 29 59 89 119 149 179 209 239 269 299 36 66 96 126 156 186 216 246 276 306 25 55 85 115 145 175 205 235 265 295 26 56 86 116 146 176 206 236 266 296 27 57 87 117 147 177 207 237 267 297 28 58 88 118 148 178 208 238 268 298 29 59 89 119 149 179 209 239 269 299 36 66 96 126 156 186 216 246 276 306 10 40 70 100 130 140 190 220 250 280 11 41 71 101 131 161 191 221 251 281 12 42 72 102 132 162 192 222 252 282 13 43 73 103 133 163 193 223 253 283 14 44 74 104 134 164 194 224 254 284 15 45 75 105 135 165 195 225 255 285 10 40 70 100 130 140 190 220 250 280 11 41 71 101 131 161 191 221 251 281 12 42 72 102 132 162 192 222 252 282 13 43 73 103 133 163 193 223 253 283 14 44 74 104 134 164 194 224 254 284 15 45 75 105 135 165 195 225 255 285];
lb = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0];
ub =[350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350];
options = optimset('Algorithm','active-set');
[x,fval] = fmincon(@objfun,x0,[],[],[],[],lb,ub,@confun,options)
运行结果:
x =
1 至 13 列
348.0000 2.9297 95.0760106.7977171.3970195.4469128.2319184.5274251.2488 0348.0000 ……
很明显x(2)<x(1)不符合第一个约束