|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
使用fmincon求目标函数的最优解时,其中x【4】的值为12 14 16 18 20 22 25 28 32中的一个,因此我在约束函数nonlcon里设置了一行逻辑或的等式约束条件 但是最后求解出来的时候 x【4】是带小数的12.XXX 并没有满足这个约束 这时候什么情况 我该怎么解决 求大佬指导!谢谢
( }4 ~9 p: a/ W9 w2 v2 }" H; ~; w8 S; _" P
程序如下:
) [ V1 Y) y: _5 j+ X! Jclc;
( o: `" [2 ~& G0 ]% A% e, @clear all;7 k( o8 v/ y" j, T7 c
close all;9 Z1 K) F) D$ f
7 s; l5 }' D$ j% Y" ^3 G( sx0 = [100,100,100,100];
- I1 E6 q5 g. y# E- E3 B
' v8 x$ ~. I) C# z" Q7 MA=[-1,0,0,0;0,-1,0,0;1,-1,0,0;]( Y S. @& c* i) {, W. V" B* c& [
B = [-200;0;0]
/ f, K7 p0 _4 ^, dAeq = []
, O4 D9 X% r4 _0 ~4 Q, o& H2 v. IBeq = []* f# p- V$ H9 }% r
LB =[200,0,4,12];/ S" O; K$ z% T+ X8 O1 b
UB =[1000,1000,20,32]
3 m2 M1 l2 B( z* Y. |6 y B3 [3 ?[x, fval] = fmincon('fun', x0, A, B, Aeq, Beq, LB, UB,'nonlcon')
0 M9 {6 G& k4 c7 h2 f+ Z- T- l4 z$ C+ N/ ^* w8 D% e) K# W' t. b
fprintf('the minimum value in x:\n');
& s) F6 v1 L, V, v% s/ Hfprintf('%f\n%f\n',x(1),x(2),x(3),x(4));) e1 h; h9 Y" H, ^# U; F# l
fprintf('the minimum value:\n');
, C1 c4 y( J5 ?7 V8 {2 _, z5 P: L9 efprintf('%f\n',fval);
% U: H: ?- s# y! a0 j& Y" H! w$ m6 R/ J
5 U- h# N. u' O( I( ^4 h
" C6 r5 j$ ]; I& ^: Pfunction [c,ceq] = nonlcon(x);6 i* w% A) b |# M8 y' d9 i
fai=1.2687-0.0291*(6500/x(1))+0.0001*(6500/x(1))^2;
% r5 v: J7 J+ `/ V3 d/ m# M Rc=[651000-(1/1.2)*(10*x(1)*x(2)+310*x(3)*(pi*x(4)^2)/4)*fai ;
1 V3 C7 v' V, f6 W1 L$ I+ ~-x(3)*(pi*x(4)^2)/(4*x(1)*x(2))+0.008;5 K+ J, r3 E6 A P2 f
4.52-x(3)*(pi*(10*x(4))^2)/4];
/ I5 V$ l( l8 Q* X7 e. Y; ]! ^& sceq=[mod(x(3),1);
3 f. P, E8 ~2 o5 e; G+ m1 a
1 v$ C7 I6 E/ a- X8 w" f9 [/ p9 o# o, _, g1 {
end0 a6 g" f- ^9 ^( [' f5 f9 P
! }, F& f$ a, c( i( J |
|