|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
使用fmincon求目标函数的最优解时,其中x【4】的值为12 14 16 18 20 22 25 28 32中的一个,因此我在约束函数nonlcon里设置了一行逻辑或的等式约束条件 但是最后求解出来的时候 x【4】是带小数的12.XXX 并没有满足这个约束 这时候什么情况 我该怎么解决 求大佬指导!谢谢! ?5 O% U( \/ {0 y# y
& d# H+ Z& {" f1 ~! {2 x, |程序如下:" ~5 Q& `& \) W6 d# m
clc;3 w0 N$ N: ~7 {1 R1 t. w% g! n
clear all;
- X+ Y/ C+ ]% B. M! O/ Tclose all;
8 Z2 [* q, d3 _; i; E
6 M/ G3 X5 y L# o) Nx0 = [100,100,100,100];
8 {3 J" z' z1 ]6 A5 `* Q/ _& S5 D8 o" k7 Y
A=[-1,0,0,0;0,-1,0,0;1,-1,0,0;]7 M7 [( Z/ M5 t# C
B = [-200;0;0]
& Y, ~$ S5 |' l. A e5 FAeq = []3 j( ^% _: ~5 y" B3 M2 \" O' y
Beq = []3 M: J& |7 z* I3 Y4 T
LB =[200,0,4,12];
. g! f1 W, m) ^8 d5 L7 t CUB =[1000,1000,20,32] 0 _+ c6 F3 O" t" O6 Q
[x, fval] = fmincon('fun', x0, A, B, Aeq, Beq, LB, UB,'nonlcon')7 K0 Q4 Z& w; n/ U
6 c6 E# i R* v% ufprintf('the minimum value in x:\n');
, g+ j0 ]# K# a4 f+ }fprintf('%f\n%f\n',x(1),x(2),x(3),x(4));& I) @( [( H5 K0 a2 [
fprintf('the minimum value:\n');
' I, ?+ r! Z7 Q& c# ]5 Cfprintf('%f\n',fval);
) @: a( \# @$ z. y
8 ?" S/ J% l& R1 I+ W0 V8 b" Z2 U4 K
/ ]% h$ `$ q* q* A
function [c,ceq] = nonlcon(x);
: h9 J3 B7 v9 Z2 V- Qfai=1.2687-0.0291*(6500/x(1))+0.0001*(6500/x(1))^2;
# W; p0 Q6 Y5 a- Yc=[651000-(1/1.2)*(10*x(1)*x(2)+310*x(3)*(pi*x(4)^2)/4)*fai ;% O/ x9 `' j' ?7 B( V
-x(3)*(pi*x(4)^2)/(4*x(1)*x(2))+0.008;
9 I; G) [ Y1 f9 P8 l p4.52-x(3)*(pi*(10*x(4))^2)/4];
+ [. V/ C2 Z5 W: f, Bceq=[mod(x(3),1); q/ Y; N. Y& @/ r& W }& o
9 p/ k/ d; ^' F
' m4 P' X/ a/ jend2 n/ M4 y% b# a, _* E
% l# I5 @/ V8 {3 n! c7 U
|
|