|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
使用fmincon求目标函数的最优解时,其中x【4】的值为12 14 16 18 20 22 25 28 32中的一个,因此我在约束函数nonlcon里设置了一行逻辑或的等式约束条件 但是最后求解出来的时候 x【4】是带小数的12.XXX 并没有满足这个约束 这时候什么情况 我该怎么解决 求大佬指导!谢谢
2 w% }3 x$ w) ~- r' b, p! F# Q( X
/ ]% c4 A" `; Y/ k: T+ h程序如下:6 W8 R; _9 U0 m* o! J
clc;2 h3 k. O2 t- @ H7 Z6 y& v& Y
clear all;
: P6 ^: ~6 z- Xclose all;& ]3 F# _' R( l/ K! U
. `2 n! W# A5 F7 g* {' A
x0 = [100,100,100,100];
* I; B9 `8 K- o5 @) C- a' H5 b6 O" r& v3 B: h- V* L
A=[-1,0,0,0;0,-1,0,0;1,-1,0,0;]% h( V% { m3 Q# X$ k; r6 E, @
B = [-200;0;0]
1 O5 S5 r s% dAeq = []
" B! {/ |/ D% F( MBeq = []
" Y+ t" u6 o, e% pLB =[200,0,4,12];
6 k# ]3 Q2 n: q. dUB =[1000,1000,20,32] + F3 T: Y/ w8 J/ H, F
[x, fval] = fmincon('fun', x0, A, B, Aeq, Beq, LB, UB,'nonlcon')( w U( `7 V2 X0 {2 ~
) p% y& N8 p* o9 L; C& Lfprintf('the minimum value in x:\n');
; g* G1 C0 ?3 J+ S+ Kfprintf('%f\n%f\n',x(1),x(2),x(3),x(4));
4 [$ r' ^( I% E. M2 }/ W8 cfprintf('the minimum value:\n');
$ F1 A! P5 |! ?- l. j- Pfprintf('%f\n',fval);
' d1 F6 t! D' }+ @) g- H# d' }2 a; |% A* Z6 |( e1 Z
' e* K; _' u/ C& V9 L. Z
5 d& e4 l6 X# Q1 k, o4 vfunction [c,ceq] = nonlcon(x);9 v# n; l" L! ?3 P3 l
fai=1.2687-0.0291*(6500/x(1))+0.0001*(6500/x(1))^2;+ B1 j6 z4 K8 t$ I% J/ @8 _" u& v
c=[651000-(1/1.2)*(10*x(1)*x(2)+310*x(3)*(pi*x(4)^2)/4)*fai ;
: M- V! n4 `9 R. Q- Q8 T" r5 T# b-x(3)*(pi*x(4)^2)/(4*x(1)*x(2))+0.008;
0 ~+ X: k3 B- H# {# w9 @( N4.52-x(3)*(pi*(10*x(4))^2)/4];
& |! c) t$ Z& U# `+ e, Gceq=[mod(x(3),1);
9 C7 r2 H; s) F6 G5 F9 x" b4 s' B0 C4 ^# v9 E Q
0 I) q4 X$ R7 c1 E: A" P" }' \
end% V4 a$ h/ X9 f9 h# ?
$ R4 H: T, ?8 Q" |5 I6 A3 T |
|