|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
使用fmincon求目标函数的最优解时,其中x【4】的值为12 14 16 18 20 22 25 28 32中的一个,因此我在约束函数nonlcon里设置了一行逻辑或的等式约束条件 但是最后求解出来的时候 x【4】是带小数的12.XXX 并没有满足这个约束 这时候什么情况 我该怎么解决 求大佬指导!谢谢
; {1 J2 M3 P& A; V2 t7 H. D, @3 H
* }. a) s( |; L' {- \- R4 Q程序如下:8 W7 x5 n' R' K1 P! l) Z
clc;# R3 ?/ J) f; F9 U7 F) J
clear all;
1 n) |. Z% o+ @. y3 E/ Wclose all;3 M- ?6 V6 @' I
+ L8 W& b. I, a! h+ mx0 = [100,100,100,100];
/ k% l9 |% T' b! r2 r5 f! O4 l" l* R* G3 ~* q9 u& ]
A=[-1,0,0,0;0,-1,0,0;1,-1,0,0;]
- H* |) Q [" WB = [-200;0;0]6 S" G' P6 N+ o) G2 \& b4 {
Aeq = []
$ ^( M/ k& b+ i: o) T- ^Beq = []
H! ?! ^0 `1 v5 ]LB =[200,0,4,12];
$ j$ [% e5 k3 @& R2 f- R! wUB =[1000,1000,20,32]
! {8 T. x$ n* E" v' Z[x, fval] = fmincon('fun', x0, A, B, Aeq, Beq, LB, UB,'nonlcon')
$ T8 R0 V% s2 w, L/ Y5 s4 y4 e5 z
2 v/ w7 L) @) ~& Z: _9 ]7 Gfprintf('the minimum value in x:\n');/ P" g! y- M# X- J; d( B
fprintf('%f\n%f\n',x(1),x(2),x(3),x(4));
1 ]& Q1 Q8 E/ a8 Y7 q8 u0 U' O& Cfprintf('the minimum value:\n');
/ Z( D5 ~6 B ?5 d, w7 J N; L" Cfprintf('%f\n',fval);
6 P, o" g9 @3 n9 U( C" m! E3 Q/ ?+ M6 A8 M
, f% Z" y1 q$ E/ Z" a% }
/ {/ {: q. T: S$ _
function [c,ceq] = nonlcon(x);5 s8 Z- i2 a; e% ]9 H1 q, O) G) N) I) r
fai=1.2687-0.0291*(6500/x(1))+0.0001*(6500/x(1))^2;
3 F' h' C+ E& T/ f8 I9 @c=[651000-(1/1.2)*(10*x(1)*x(2)+310*x(3)*(pi*x(4)^2)/4)*fai ;
, G* ?# e' b* @$ |* H/ p9 J: C-x(3)*(pi*x(4)^2)/(4*x(1)*x(2))+0.008;4 i, j, S O# E" [
4.52-x(3)*(pi*(10*x(4))^2)/4];" f9 H' V( b3 R
ceq=[mod(x(3),1);
4 Q3 `. H/ `6 j0 P% T* ?. F) c2 s* E3 z) V) I
" ^ G; Z" R9 \* q
end
, K- x, O f; W5 K5 x+ O- U4 H: O+ ?3 j; B! c. g" ^$ X
|
|