|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
使用fmincon求目标函数的最优解时,其中x【4】的值为12 14 16 18 20 22 25 28 32中的一个,因此我在约束函数nonlcon里设置了一行逻辑或的等式约束条件 但是最后求解出来的时候 x【4】是带小数的12.XXX 并没有满足这个约束 这时候什么情况 我该怎么解决 求大佬指导!谢谢
+ L7 y1 q. P5 H% G; T2 {
) ]7 o0 j3 i& V程序如下:& R0 \% ^4 d# }! [5 V% p
clc;. u- I( U7 [( P/ ?4 V
clear all;
8 u6 I; _8 x% z& G1 `close all;7 r, }& ~1 R# a" s
9 }9 d( e+ i, j6 j' d2 U
x0 = [100,100,100,100];9 w& G3 Y& l2 c. s& g
6 F1 p+ k; `# ~; r6 B% y0 @5 }
A=[-1,0,0,0;0,-1,0,0;1,-1,0,0;]$ a7 c) l. v! w
B = [-200;0;0]: o* W$ a6 K( |' g
Aeq = []+ _3 Y9 N3 ]( {9 r
Beq = []2 M9 F2 R' A3 M1 \% u! J1 C
LB =[200,0,4,12];
9 M2 A1 {9 [- b9 R0 K: I; B. q5 hUB =[1000,1000,20,32] 9 q7 x% a d6 M& `3 V/ k
[x, fval] = fmincon('fun', x0, A, B, Aeq, Beq, LB, UB,'nonlcon')" Q, \% I# A; J6 o
9 M$ U: [& J" t7 G0 X; Wfprintf('the minimum value in x:\n');1 i9 Y; ]9 Z- g: v H* N9 t9 L
fprintf('%f\n%f\n',x(1),x(2),x(3),x(4));
- h" R7 E/ C5 I) ~5 H \8 Lfprintf('the minimum value:\n');
1 V. X4 f1 ^$ }0 T5 F4 P% Wfprintf('%f\n',fval);
3 I6 G! Q9 _$ W) T' V
- K' z- u; J' O5 {
$ M% X% B6 f$ y. z% ?$ i3 ~( u9 L, j5 C1 ?7 |. V
function [c,ceq] = nonlcon(x);
S3 y5 a) m' B9 R& E$ U: j4 Afai=1.2687-0.0291*(6500/x(1))+0.0001*(6500/x(1))^2;
: M3 u) Z+ V$ K5 k% Gc=[651000-(1/1.2)*(10*x(1)*x(2)+310*x(3)*(pi*x(4)^2)/4)*fai ;9 u& b9 v5 T" a" q: h
-x(3)*(pi*x(4)^2)/(4*x(1)*x(2))+0.008;
K2 O. [' G; ~/ G5 k4.52-x(3)*(pi*(10*x(4))^2)/4];, O$ j1 |1 g" ?( o9 I) X4 q% U/ i9 q" Y
ceq=[mod(x(3),1);: u3 ], P4 q* B2 }6 L0 V
5 c( P, _$ ]( K1 ?- X
" j: V, x: g) O, n3 [4 h6 u7 wend
; e( S2 S) Y8 Q9 L1 `7 w/ v) b" r, q7 t0 P: U
|
|