|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
使用fmincon求目标函数的最优解时,其中x【4】的值为12 14 16 18 20 22 25 28 32中的一个,因此我在约束函数nonlcon里设置了一行逻辑或的等式约束条件 但是最后求解出来的时候 x【4】是带小数的12.XXX 并没有满足这个约束 这时候什么情况 我该怎么解决 求大佬指导!谢谢
1 Z2 }! C2 J# e4 A- \7 B
* M1 Q1 T* U6 a/ Q程序如下:" s& v |5 N& N- F* I" ]
clc;% b6 D- U% }* L F
clear all;7 e& _1 r" z Q! M, P. \
close all;% W& U9 y. ~3 n/ @9 u- g1 g, E3 ~' l
2 g0 e& [/ i$ W
x0 = [100,100,100,100];
" O2 Q; B* g( j6 E! _: b d" M$ b
: m3 N3 y9 z& W9 |7 RA=[-1,0,0,0;0,-1,0,0;1,-1,0,0;]
$ O ^ h, p1 D1 W6 L2 aB = [-200;0;0]
9 a2 x( E8 [4 b( GAeq = []
) W, s2 D2 r' P [) kBeq = []& J2 N2 {; @5 K/ x
LB =[200,0,4,12];
: _1 a3 t. |" j% BUB =[1000,1000,20,32]
- z; y2 V: \; S7 E+ D" u[x, fval] = fmincon('fun', x0, A, B, Aeq, Beq, LB, UB,'nonlcon')
7 _$ }' f' u( ^; f- N
4 c% y4 W8 d3 m) u' Gfprintf('the minimum value in x:\n');
- ~ |5 k/ j" Xfprintf('%f\n%f\n',x(1),x(2),x(3),x(4));! a% o4 `- N0 v) Y5 K9 a
fprintf('the minimum value:\n');
$ v {- H. d/ s; Z7 h) @! {! Gfprintf('%f\n',fval);
5 g) t. E: i* y! F) { o* r# q/ w+ m/ b8 X$ |1 U' e9 s
- z* ^! F) Q& F, f* }" \% E7 c8 r
7 H# ~ W7 p' b, U" tfunction [c,ceq] = nonlcon(x);8 C+ Q }: o0 p! ]3 @" P6 ^6 w
fai=1.2687-0.0291*(6500/x(1))+0.0001*(6500/x(1))^2;; e/ P% C; k2 j. f! E
c=[651000-(1/1.2)*(10*x(1)*x(2)+310*x(3)*(pi*x(4)^2)/4)*fai ;
9 t! c: C b& ]) _7 ~7 ?5 K4 \-x(3)*(pi*x(4)^2)/(4*x(1)*x(2))+0.008; Z3 [7 ~' m0 C* G. k: y# F0 @2 `& p5 R
4.52-x(3)*(pi*(10*x(4))^2)/4];, S6 w4 d% W) e& A
ceq=[mod(x(3),1);
- e7 T2 ?/ i' e. c2 c3 x# m ~7 h3 Y# b3 A! Y
% q: f5 `! q- n0 H. J! J l% N/ Hend- s& z, P! x/ [) e i( u& ]2 r
# c0 k+ C' h3 y/ A1 h3 U* |6 T' h3 j
|
|