|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
使用fmincon求目标函数的最优解时,其中x【4】的值为12 14 16 18 20 22 25 28 32中的一个,因此我在约束函数nonlcon里设置了一行逻辑或的等式约束条件 但是最后求解出来的时候 x【4】是带小数的12.XXX 并没有满足这个约束 这时候什么情况 我该怎么解决 求大佬指导!谢谢
! u6 V# i. X5 I4 D1 w! U0 R/ T6 _) y2 `! T [% Y/ r
程序如下:. e7 P v/ V& F7 E7 s
clc;
( N+ p. [. l& V4 pclear all;0 R H. T* p1 |1 R4 Z" C" P
close all;6 @6 n. S6 s. a" G2 s
% o2 a. O2 K9 a! j
x0 = [100,100,100,100];
) l2 y2 j$ R$ ^
, \9 O% U3 R0 x( V9 a, zA=[-1,0,0,0;0,-1,0,0;1,-1,0,0;]/ V$ K+ {# q) z$ H+ W3 Y% H# z( v
B = [-200;0;0]7 X/ l1 _2 Q) B% W
Aeq = []- y' V6 } [) ~. g1 j5 x
Beq = [] ]) n& K! w0 K% A
LB =[200,0,4,12];/ f: b# _; T7 R' A/ `/ t& Z
UB =[1000,1000,20,32] $ ]3 p* O; z# g- l! I3 m/ Y' L
[x, fval] = fmincon('fun', x0, A, B, Aeq, Beq, LB, UB,'nonlcon')" @: a/ h7 j; C/ A+ M! }
- j$ o- _& W: B1 yfprintf('the minimum value in x:\n');1 w2 e* x8 P- ^* @3 @6 I* P0 |
fprintf('%f\n%f\n',x(1),x(2),x(3),x(4));5 N1 b# R. _; M7 ^# K# A% E
fprintf('the minimum value:\n');
8 Y( W* D7 @; L8 S" }+ Y( M" Kfprintf('%f\n',fval);
2 a! ^& B& f1 F9 |$ }4 N! g
1 @: y( W0 O1 F1 s$ U! m
2 d$ @* n2 \0 I( R' N+ S
& a3 Q* J! I' f' Pfunction [c,ceq] = nonlcon(x);
0 u. ~7 r) c `5 }, @8 e5 Sfai=1.2687-0.0291*(6500/x(1))+0.0001*(6500/x(1))^2;2 x% B% S; ?0 d
c=[651000-(1/1.2)*(10*x(1)*x(2)+310*x(3)*(pi*x(4)^2)/4)*fai ;
% Q8 l9 B/ e, s" e @9 y' l-x(3)*(pi*x(4)^2)/(4*x(1)*x(2))+0.008;
5 ?' N9 h/ l: t/ N4.52-x(3)*(pi*(10*x(4))^2)/4];
& R0 `- y b9 `7 e' R7 Xceq=[mod(x(3),1);' b1 O) u+ H0 E; V j* }3 Y: ]
; U7 t, ~4 z( Q1 [5 P9 C
2 E: U* g$ B1 n9 R( ]end- ?' w5 K) X9 x: P4 ^- T
0 O2 @9 j4 e; G/ q& T! k) C
|
|