|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
使用fmincon求目标函数的最优解时,其中x【4】的值为12 14 16 18 20 22 25 28 32中的一个,因此我在约束函数nonlcon里设置了一行逻辑或的等式约束条件 但是最后求解出来的时候 x【4】是带小数的12.XXX 并没有满足这个约束 这时候什么情况 我该怎么解决 求大佬指导!谢谢
! o2 f: [; e# g
& h# C) g) Y8 |# Z0 u: Z% w程序如下:/ ]; t$ ?$ I+ m' C
clc;5 `' @. F/ V& r9 X/ ?6 b
clear all;' v9 y' |5 H" d; @, ]
close all;3 }( @4 q; ]9 N* \6 r
6 F+ W; v, `) k
x0 = [100,100,100,100];
* F- e0 b% c; g! T- s9 i' R8 s- n" H1 C$ r$ e, ?7 B a1 M) {
A=[-1,0,0,0;0,-1,0,0;1,-1,0,0;]) n/ p) \1 E, r' k, l9 ^- ?& d+ K
B = [-200;0;0]
1 s: n6 [+ L- mAeq = []! h7 n5 I; P! J5 N" G! h9 t
Beq = []( `, P+ w8 s+ L2 F! R
LB =[200,0,4,12];; t0 ^: P7 o1 A* q7 P
UB =[1000,1000,20,32]
# f! a0 j: K$ j[x, fval] = fmincon('fun', x0, A, B, Aeq, Beq, LB, UB,'nonlcon')6 `5 L% q2 d; Q- X/ F3 y
! `* Z9 u# d; P3 b5 \0 R Z, h
fprintf('the minimum value in x:\n');
+ y0 u( H4 b @. w: F) Ffprintf('%f\n%f\n',x(1),x(2),x(3),x(4));6 G5 ~2 Y2 w1 ` A; k {# c
fprintf('the minimum value:\n');
# d# n! p; k9 \5 y$ m9 v2 nfprintf('%f\n',fval);
, @) u& X6 Z+ W9 D9 r) R" ]& \' Z. N' N% Y+ p$ R2 I. J
9 E* k9 z" q$ b* ?4 d& }2 G$ o+ m/ V$ c# W, B
function [c,ceq] = nonlcon(x);
4 ]) `7 U, v1 a' D9 Rfai=1.2687-0.0291*(6500/x(1))+0.0001*(6500/x(1))^2;
$ p$ \" [) }2 g8 D4 o* Zc=[651000-(1/1.2)*(10*x(1)*x(2)+310*x(3)*(pi*x(4)^2)/4)*fai ;
1 R8 c9 N2 G% D1 _; q% `-x(3)*(pi*x(4)^2)/(4*x(1)*x(2))+0.008;
; y. d7 C9 r% w4 m( i2 Z* I4.52-x(3)*(pi*(10*x(4))^2)/4];. S5 J( \- ]( B* a& S
ceq=[mod(x(3),1);' k6 Z. p& N9 ^$ X9 N
. W5 s* N9 n6 H, R$ o
- T- c a% b1 ^, O" vend" ~' z% X! C; C8 Z5 {
. c; s- K. u h7 _. c, [5 [3 w3 v) m) _ |
|