|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
使用fmincon求目标函数的最优解时,其中x【4】的值为12 14 16 18 20 22 25 28 32中的一个,因此我在约束函数nonlcon里设置了一行逻辑或的等式约束条件 但是最后求解出来的时候 x【4】是带小数的12.XXX 并没有满足这个约束 这时候什么情况 我该怎么解决 求大佬指导!谢谢
9 S% T. E+ h2 A7 W& c
9 [5 m# A: d: v- g$ M9 ^- `/ ^程序如下:
, M0 R1 k' @4 K9 d; e& N5 l8 L' mclc;
, L$ O. e% n! ]/ Kclear all;4 \. V) C: X# r% l4 s+ o# R! B
close all;& i: Y% Q; u3 I3 e2 r7 {
+ x8 ]5 Q( b6 F" b2 |; ~) e" o
x0 = [100,100,100,100];; u) U3 b; [; \- R( v, @2 U
5 |4 A% b' i) s1 R
A=[-1,0,0,0;0,-1,0,0;1,-1,0,0;]) |4 S1 K' q9 n- k: _2 N& k( o% @$ i
B = [-200;0;0]
5 {* h' h3 Z" d' N2 o) BAeq = []
$ l. O: R; M+ B0 {; P iBeq = []
# B7 ~3 K' C0 U J( x, @LB =[200,0,4,12];
, b( \ \1 O4 w9 IUB =[1000,1000,20,32] " m. l8 ?3 P- B1 D
[x, fval] = fmincon('fun', x0, A, B, Aeq, Beq, LB, UB,'nonlcon')
) D% K* k0 {( S A: p( e+ J9 B* [$ g4 e" X
fprintf('the minimum value in x:\n');, k# H6 s" }) h0 k( a; q
fprintf('%f\n%f\n',x(1),x(2),x(3),x(4));$ O& l! ?0 J$ Q. z; Z2 g
fprintf('the minimum value:\n');0 }* J1 j" u. p2 M
fprintf('%f\n',fval);
: S4 p0 b6 o' C9 X! d! @1 y: {4 ]! W; b f% m) L2 ]
# P& @+ @2 s1 c! Q
* k" l5 {2 f6 }
function [c,ceq] = nonlcon(x);
3 O1 p" C3 E! p8 V9 ?- hfai=1.2687-0.0291*(6500/x(1))+0.0001*(6500/x(1))^2;" |" V2 U( D4 j# P
c=[651000-(1/1.2)*(10*x(1)*x(2)+310*x(3)*(pi*x(4)^2)/4)*fai ;( T @' X2 _& G( r; w
-x(3)*(pi*x(4)^2)/(4*x(1)*x(2))+0.008;
* V3 v. C* C" ~4.52-x(3)*(pi*(10*x(4))^2)/4];4 |- k& a! u4 |! D# M
ceq=[mod(x(3),1);8 n" ]. F+ E i2 S1 F+ k
- K: B& d8 M; Z' `8 e" {0 n9 b
/ x- L5 V+ V. K3 y
end7 T# L+ _" G2 e# G
9 y) Y3 @- T% o: y
|
|