Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 将压力容器的总成本降至最低,但答案不是';我们不能满足约束条件_Matlab_Optimization_Constraints_Minimization - Fatal编程技术网

Matlab 将压力容器的总成本降至最低,但答案不是';我们不能满足约束条件

Matlab 将压力容器的总成本降至最低,但答案不是';我们不能满足约束条件,matlab,optimization,constraints,minimization,Matlab,Optimization,Constraints,Minimization,我写了一个算法来解决压力容器设计问题。目标是最小化总成本,包括材料、成型和焊接成本 该解决方案有四个值x1,x2,x3和x4,其中: x1是外壳的厚度 x2是头部的厚度 x3是内半径(R) x4是容器圆柱形截面的长度 这个问题的一个限制条件是,x1和x2应该是0.0625的整数倍。尽管得到了更好的结果,但我的算法并不满足这个约束。我在MATLAB代码中提供了目标函数和约束函数。如何在我的最终答案中满足这些约束 最小化问题可以表述为: function y = PrPf(x) y = 0.6224

我写了一个算法来解决压力容器设计问题。目标是最小化总成本,包括材料、成型和焊接成本

该解决方案有四个值
x1
x2
x3
x4
,其中:
x1
是外壳的厚度
x2
是头部的厚度
x3
是内半径(R)
x4
是容器圆柱形截面的长度

这个问题的一个限制条件是,
x1
x2
应该是
0.0625
的整数倍。尽管得到了更好的结果,但我的算法并不满足这个约束。我在MATLAB代码中提供了目标函数和约束函数。如何在我的最终答案中满足这些约束

最小化问题可以表述为:

function y = PrPf(x)
y = 0.6224*x(1)*x(3)*x(4)+1.7781*x(2)*x(3)^2+3.1661*x(1)^2*x(4)+19.84*x(1)^2*x(3);
MATLAB中的约束函数为:

function [g,geq]=constraint(x)
%Inequality constraints 
g(1)=-x(1)+0.0193*x(3);
g(2)=-x(2)+0.00954*x(3);
g(3)=-pi*x(3)^2*x(4)-(4/3)*pi*x(3)^3+1296000;
g(4)=x(4)-240;
% If no equality constraint at all, put geq=[] as follows
geq=[];
其中:

0 <= x1 <= 99
0 <= x2 <= 99
10 <= x3 <= 200 
10 <= x4 <= 200 `
如您所见,
x1
x2
的值不是
0.0625
的倍数。检查了这么多文章后,我发现许多方法都得到了这些值:

x1 = 0.812500
x2 = 0.437500

0.0625
的倍数。需要做什么才能迫使我的算法满足这些约束。

请遵循stackoverflow标准提问。编辑非常糟糕,用户很难理解并帮助您解决问题。
x1 = 0.812500
x2 = 0.437500