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# R
clc;
- w& T! N0 Q$ h
clear all;
) H* D- N7 I" m2 V4 G
close all;
0 z/ n# d; z$ I
0 p$ J3 \: p: p- S
x0 = [100,100,100,100];
% X+ p2 o! ^5 I3 l" c& I
. M C. K- R1 Z) y5 C
A=[-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 p
fprintf('%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& [# n
c=[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