|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
使用fmincon求目标函数的最优解时,其中x【4】的值为12 14 16 18 20 22 25 28 32中的一个,因此我在约束函数nonlcon里设置了一行逻辑或的等式约束条件 但是最后求解出来的时候 x【4】是带小数的12.XXX 并没有满足这个约束 这时候什么情况 我该怎么解决 求大佬指导!谢谢
0 U7 w4 F: }: I* L v. o, X
" S, k6 ]: ~) z! F! T% U! w程序如下: U5 k ` x4 {5 C
clc;( i3 j# |, f5 P; t4 g( G8 g( x
clear all;
! E" \5 U, \; i* G# N: ^close all;
+ o" u5 M# @7 i6 t3 F# \
; w. h! M) }, g9 n/ o( s6 Bx0 = [100,100,100,100];
8 A0 K: z) F# [. C2 ]" b$ L# x3 D) i* M1 v4 p
A=[-1,0,0,0;0,-1,0,0;1,-1,0,0;]; c }1 w6 A2 @1 I0 Y+ ?4 [
B = [-200;0;0]
8 s6 D% Q2 b" nAeq = []
1 _: f; ~, W3 z7 wBeq = []
8 \: m8 I% V* i" z `0 F. MLB =[200,0,4,12];3 k: F$ i# j3 G+ \( W
UB =[1000,1000,20,32]
0 z6 s; ~3 W& n1 G# F[x, fval] = fmincon('fun', x0, A, B, Aeq, Beq, LB, UB,'nonlcon')
& T) H4 \& q! I# |7 U
! u8 j7 _+ V+ j. n! \3 l2 E( Dfprintf('the minimum value in x:\n');8 A5 N( a% H9 o. ^3 p S
fprintf('%f\n%f\n',x(1),x(2),x(3),x(4));
. [; r4 T j6 Z; K# o3 gfprintf('the minimum value:\n');8 z3 e' ?' P+ c; z
fprintf('%f\n',fval);
( c& J4 J8 ]& p5 ^5 {3 W4 r
' q. Z9 s) T& T8 h& s
' H7 d1 A+ y }& w0 E( M: y0 j7 Y" m+ K+ q
function [c,ceq] = nonlcon(x);3 ]. M; H4 X- ^' @
fai=1.2687-0.0291*(6500/x(1))+0.0001*(6500/x(1))^2;4 G" S( @ n/ Z; l9 k# G
c=[651000-(1/1.2)*(10*x(1)*x(2)+310*x(3)*(pi*x(4)^2)/4)*fai ;' ?+ t3 v6 O2 Y0 t+ ]
-x(3)*(pi*x(4)^2)/(4*x(1)*x(2))+0.008;
( w+ l K/ V1 M$ @0 y5 F4.52-x(3)*(pi*(10*x(4))^2)/4];" G) {+ y# U% b
ceq=[mod(x(3),1);" n. ^% I3 m* d" u# W
) m8 q. d4 R1 ?( t- r% s
# H6 {8 D+ Z' X1 D5 c7 B% N- p
end! E5 ^2 Y4 q3 g$ I1 k1 c3 p
! m, [/ ~5 g A9 \6 E9 _+ O |
|