EDA365电子论坛网

标题: 目标函数最优解 [打印本页]

作者: zzz.dan    时间: 2020-7-17 10:52
标题: 目标函数最优解
使用fmincon求目标函数的最优解时,其中x【4】的值为12 14 16 18 20 22 25 28 32中的一个,因此我在约束函数nonlcon里设置了一行逻辑或的等式约束条件  但是最后求解出来的时候  x【4】是带小数的12.XXX  并没有满足这个约束 这时候什么情况 我该怎么解决  求大佬指导!谢谢4 |$ X0 U( A# [, d3 v9 a

3 Z5 u; \- {8 A! V% G程序如下:
3 v# K" w& [% h. z7 h2 J. p, P# Rclc;
- w& T! N0 Q$ hclear all;) H* D- N7 I" m2 V4 G
close all;
0 z/ n# d; z$ I
0 p$ J3 \: p: p- Sx0 = [100,100,100,100];% X+ p2 o! ^5 I3 l" c& I

. M  C. K- R1 Z) y5 CA=[-1,0,0,0;0,-1,0,0;1,-1,0,0;]6 e+ [* g4 v4 {1 x' _- ?
B = [-200;0;0]4 k* K' n8 K! N& p- {
Aeq = []7 ]: p! M4 |/ Q* G1 Z" z" y
Beq = []9 T+ ?" V3 G  G  A  x  e
LB =[200,0,4,12];! K' o5 }6 `/ `- C
UB =[1000,1000,20,32]  
! t7 b8 g6 _- V, N[x, fval] = fmincon('fun', x0, A, B, Aeq, Beq, LB, UB,'nonlcon')- Y( N6 a, Q) t4 k$ i. c5 G
% `# W3 M" U. |1 Z& Q9 i7 S
fprintf('the minimum value in x:\n');
7 _" F$ s2 w6 z6 pfprintf('%f\n%f\n',x(1),x(2),x(3),x(4));6 P- ~7 ^- h5 `& m3 U/ i
fprintf('the minimum value:\n');$ E- t" ~# W) k) `7 g
fprintf('%f\n',fval);; `4 f, K( f0 ~8 K( e- j( O

% J2 M8 U; w5 ?0 A% ~( _2 h9 _: w, K
: S# U1 S8 E2 h) n  e- y$ v
function [c,ceq] = nonlcon(x);$ L* a2 m4 `! `) X
fai=1.2687-0.0291*(6500/x(1))+0.0001*(6500/x(1))^2;
+ y9 U. x; U, X& [5 A* I& [# nc=[651000-(1/1.2)*(10*x(1)*x(2)+310*x(3)*(pi*x(4)^2)/4)*fai ;$ G) {. G" `" B
-x(3)*(pi*x(4)^2)/(4*x(1)*x(2))+0.008;4 g2 R# l9 R4 @  i
4.52-x(3)*(pi*(10*x(4))^2)/4];4 A/ F' A7 a/ x( A( V
ceq=[mod(x(3),1);# {) ^; m2 B; f5 P+ E$ Q

1 s2 c9 e. d& U! `2 t; R. ~. d* w0 o. B4 v# U0 V$ b# w
end* H7 e2 d# A; L- \: e3 _! n
$ q! S9 F" L+ d) F& D0 H0 p

作者: nkkopd    时间: 2020-7-17 11:12
帮你顶一下
作者: 大小的小    时间: 2020-7-21 11:13

. ?/ V  u) `+ I2 o* \2 k5 ^你等式约束的方式写成(x-12)*(x-14)*(x-16)*(x-18)*(x-20)*(x-22)*(x-25)*(x-28)=0,设置下精度试试% b4 \/ l3 r) _; }' z$ }# q

作者: llbnmo    时间: 2020-7-21 11:17
二楼正解。。
作者: shuddkk    时间: 2020-7-21 14:06





欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2