优化:优化多个输入变量最小化输出
77(30天)
显示旧的评论
Anand Ra
2021年10月3日
你好
我想优化多个输入变量使用fminsearch最小化输出。
显然,我做错了:((见下文)以下是我最初的尝试。
最终想绑定的预测变量(x, y, z, p, q, r)
步骤0.1的0.1到100年
任何帮助将不胜感激。谢谢很多!
%目的:试图最小化函数输出对多个输入变量
%想最小化函数,战俘(X) = ((X * p) + (y * q) + (z * r)) * l * w),
%优化变量x, y, z, p, q, r。
% l和w是常数
%创建额外参数的目标函数(l, w)作为额外参数。
f = @ (X, l, w) X (X (1) * (4) + X (2) * (5) + X (3) * (6)) * l * w;%
%宣布额外的参数值
l = 2;
w = 1;
%单独创建一个匿名函数(x),包括参数的空间价值。
有趣= @ (X) f (X, l, w)
% x0 = (1.9);
X_guess = [1 1.5 1.25 1 2 1];
X_guess Xmin = fminsearch(有趣)
x1 = Xmin (1);
日元= Xmin (2);
z1 = Xmin (3);
p1 = Xmin (4);
p2 = Xmin (5);
p3 = Xmin (6);
4评论
Anand Ra
2021年10月3日
编辑:Anand Ra
2021年10月3日
的歉意。
下面是代码和输出(P)和优化变量(x1, y1, z1, p1, q1, r1)。显然他们是罄竹难书。
如果我和初始猜测,只需执行函数的输出P = 0。(添加下面这些计算。)
我猜测,可能是错误的与sybtaxm但我无法确定什么错了。
猜,我应该绑定(如果是这样,现在确定?)所以不离开图表,特别是我需要优化的变量保持正数。
%目的:试图最小化函数输出对多个输入变量
%想最小化函数,战俘(X) = ((X * p) + (y * q) + (z * r)) l * w)
%优化变量x, y, z, p, q, r。
% l和w是常数
%创建额外参数的目标函数(l, w)作为额外参数。
f = @ (X, l, w) X (X (1) * (4) + X (2) * (5) + X (3) * (6)) * l * w;%
%宣布额外的参数值
l = 2;
w = 1;
%单独创建一个匿名函数(x),包括参数的空间价值。
有趣= @ (X) f (X, l, w)
有趣的=function_handle与价值:
@ (X) f (X, l, w)
X_guess = [1 1.5 1.25 1 2 1];
X_guess Xmin = fminsearch(有趣)
退出:评估已经超过了最大数量的函数——增加MaxFunEvals选项。当前函数值:-302178148141371722286612819344701945253341106128754416021789277177203582000056690981679928524741379537028251648.000000
Xmin =
1×6
1.0 e + 55 * -0.1661 0.8198 0.0940 -1.8024 -2.2644 0.4914
x1 = Xmin (1);
日元= Xmin (2);
z1 = Xmin (3);
p1 = Xmin (4);
q1 = Xmin (5);
r1 = Xmin (6);
P = ((x1 * p1) + (y1 * q1) + (z1 * r1)) * l * w
P = -3.0218 e + 110
Anand Ra
2021年10月3日
如果我只是执行函数与初始猜测:
l = 2;
w = 1;
X = [1 1.5 1.25 1 2 1];
P = X (X (1) * (4) + X (2) * (5) + X (3) * (6)) * l * w
P = 9.7500
接受的答案
沃尔特·罗伯森
2021年10月3日
最终想绑定的预测变量(x, y, z, p, q, r)从0.1到100年的0.1步骤
fminsearch()不能绑定变量。不过fmincon()可以绑定变量。
然而,你有离散变量。fminsearch()和fmincon()不能处理离散变量。
你有几个选择:
- 使用ga()和每一个变量被标记为一个整数约束从1到1000(100),和每个变量除以10内的目标函数;或
- 使用ndgrid()构造所有可能的组合的输入,并评估它们的功能和最低的评价
- 认识到积极的价值乘以积极的价值观和总结他们总是有它的最小值尽可能小的时候,就把一切的下界,不打扰优化。
13个评论
Anand Ra
2021年10月4日
编辑:Anand Ra
2021年10月4日
@Walter罗伯森
沃尔特我跟着fmincon例子之一,下面是代码。对不起,我不知道如何整合ndgrid, ga()这段代码。不知道我要在正确的方向上。
有趣= @ (x) (x (1) * (4) + x (2) * (5) + x (3) * (6)) * l * w;;
%宣布额外的参数值
l = 2;
w = 1;
%看地区的积极的价值观,,。
磅= [0,0,0,0,0,0);
乌兰巴托= [10、10、10、10、10、10];
%的问题没有线性约束,所以这些参数设置为[]。
一个= [];
b = [];
Aeq = [];
说真的= [];
%开始连
x0 = (1 2 1 1.5 - 2 2);
%使用fmincon解决这个问题
x = fmincon (Aeq有趣,x0, A, b,说真的,磅,乌兰巴托)
未识别的函数或变量“l”。
错误的解决方案(1号线)
有趣= @ (x) (x (1) * (4) + x (2) * (5) + x (3) * (6)) * l * w;;
错误fmincon(第568行)
initVals。f =函数宏指令(funfcn {3}, X,变长度输入宗量{:});
引起的:
失败在初始目标函数评价。FMINCON无法继续。
%最小化功率
P = x (x (1) * (4) + x (2) * (5) + x (3) * (6)) * l * w
% %不同初始点可能会导致一个不同的解决方案。
x01 = x0/5;
x0 = fmincon (Aeq有趣,x0, A, b,说真的,磅,乌兰巴托)
%最小化功率
P1 = x (x (1) * (4) + x (2) * (5) + x (3) * (6)) * l * w
%实际功率
P2 = X (X (1) * (4) + X (2) * (5) + X (3) * (6)) * l * w
沃尔特·罗伯森
2021年10月4日
格式长g
%宣布额外的参数值
l = 2;
w = 1;
有趣= @ (x) (x (1) * (4) + x (2) * (5) + x (3) * (6)) * l * w;;
%看地区的积极的价值观,,。
磅= 0 (1,6);
乌兰巴托= 100 * 1 (1,6);
%的问题没有线性约束,所以这些参数设置为[]。
一个= [];
b = [];
Aeq = [];
说真的= [];
%开始连
x0 = (1 2 1 1.5 - 2 2);
%使用fmincon解决这个问题
(x, P) = fmincon (Aeq有趣,x0, A, b,说真的,磅,乌兰巴托)
局部最小值发现,满足约束。优化完成,因为目标函数中引入可行的方向,在最优值的宽容,和约束满足约束的值公差内。
x =
1×6
0.0000 0.0005 0.0000 0.2510 0.0005 0.7280
P =
1.27675251615493 e-06
% %不同初始点可能会导致一个不同的解决方案。
x01 = x0/5;
(x0, P1) = fmincon (Aeq有趣,x0, A, b,说真的,磅,乌兰巴托)
局部最小值发现,满足约束。优化完成,因为目标函数中引入可行的方向,在最优值的宽容,和约束满足约束的值公差内。
x0 =
1×6
0.0000 0.0005 0.0000 0.2510 0.0005 0.7280
P1 =
1.27675251615493 e-06
但就像我说的,真正的最小值是下界
乐趣(磅)
ans =
0
Anand Ra
2021年10月4日
@Walter罗伯森
谢谢你! !
我得到你在说什么。设置下限为0将默认所有变量为0的真正的最小值。是为了防止撞击与下界负值。
然而,假设变量是相互依存的,我能够最小化如果我提供下面的嵌套循环的方式吗?
x = 0.1 100步骤0.1
对于z = x + 0.1 100步骤0.1
100 w = 0.1步骤0.1
t = w + 0.1 100 0.1步骤
沃尔特·罗伯森
2021年10月4日
你可能没有足够的内存使用ndgrid方法组合多达100,但是你可以看到从这个最小值的下界,所以测试更高的价值是毫无意义的。
格式长g
%宣布额外的参数值
l = 2;
w = 1;
有趣= @ (x) (x (: 1)。* x (:, 4) + (:, 2)。* x (:, 5) + (:, 3)。* x (6)) * l。* w;
[X1, X2, X3, X4, X5, X6) = ndgrid (0: .1:2);
X = (X1 (:), X2 (:), X3 (:), X4 (:), X5 (:), X6 (:));
P (X) =乐趣;
[bestP, idx] =最小(P (:))
bestP =
0
idx =
1
best_X = X (idx:)
best_X =
1×6
0 0 0 0 0 0
Anand Ra
2021年10月5日
编辑:Anand Ra
2021年10月5日
我已经把我的问题,我希望现在有意义。
下面是代码,但是,我无法代码部分,我试图最小化,b和c。
%的目标:优化长度minimze电力使用一个新的变量。
%的常量
k = 1;
w = 1;
%变量长度
l1 = 3 * (5) ^ 0.5;
l2 = 5 * 0.5 (2) ^
l3 = sqrt (5);
v1 = sqrt (5);
v2 = 2 *√(2);
v3 = 2 *倍根号(5);
%表达l和v b和c。开放的表达不同
%如果它帮助下面的目标。
v1 = l1 *;
b = l2 * v2;
c = l3 * v3;
%实际功率
P = (l1 * v1 + v2 l2 * + l3 * v3) * k * w;%的权力
%的目标
%搜索和发现的值,b和c功率降到最低
%考虑x代表a, b和c。
有趣= @ (x) (x (: 1) + x (:, 2) + x (:, 3)) * k。* w;
(X1, X2, X3) = ndgrid (0: .1:2);%我应该给这个条件在一个嵌套循环吗?
X = (X1 (:), X2 (:), X3 (:));
P (X) =乐趣;
[bestP, idx] =最小(P (:))
best_X = X (idx:)
Anand Ra
2021年10月7日
对不起,先生。我想它被删除。下面是代码与约束。
我不知道下面到底有什么不妥之处
%的目标:优化长度minimze电力使用一个新的变量。
%的常量
k = 2;
w = 1;
v = 1.5
%变量
AB =√。^ 2 + b。^ 2);
公元前= sqrt (c。^ 2 + ((e d) / 2)。^ 2);
c = sqrt (c。^ 2 + ((e d) / 2)。^ 2);
还有VAB =√((((。* v) ^ 2 / (((b . ^ 2)。* 4))) + (v ^ 2) / 2)));
%根据=√((* v) ^ 2 / ((4 * * b)) + (v ^ 2) / 2));
风投= ((2 * c)。/ (e d))。* sqrt (AB . ^ 2);
VBC = CS。^ 2 + BC。^ 2;
%实际功率
P = (AB。*还有VAB + BC。* VBC + CS。* VCS)。* k * w;%的权力
%
%的目标
%搜索和发现的值,b, c d和埃托奥功率最小化
%不确定如何写上面的函数
有趣= @ (x) (x (: 1) + x (:, 2) + x (:, 3) + x (:, 4) + x (:, 5)) * k。* w;
一个= 0.1:20;
b = 0.1:20;
d = 0.1 +:20;
c = b + 0.1:20;
e = d + 0.1:20;
%
% (X1, X2, X3, X4, X5) = ndgrid (0: .1:2);%我应该给这个条件在一个嵌套循环吗?
%
X = [(:), b (:), c (:), d (:), e (:));
%
P (X) =乐趣;
[bestP, idx] =最小(P (:))
best_X = X (idx:)
Anand Ra
2021年10月7日
编辑:Anand Ra
2021年10月7日
我有以下限制补充道。我错误地以为可以包括在边界约束。我已经更新了代码与Optim问题的方法。不知道为什么它抛出错误。
%定义优化变量和一个优化问题对象。
一个= optimvar (“一个”,下界的,0.1,“UpperBound”,20);
b = optimvar (“b”,下界的,0.1,“UpperBound”,20);
c = optimvar (“c”,下界的,0.1,“UpperBound”,20);
d = optimvar (' d ',下界的,0.1,“UpperBound”,20);
e = optimvar (“e”,下界的,0.1,“UpperBound”,20);
概率= optimproblem;
k = 2;
w = 1;
v = 1.5;
%概率的目标函数。
概率。目标= P;
%的约束
% cons1 = e > = (+ d);
% cons2 = d > =;
% cons3 = b < = c;
% cons4 = (e d) > =(数字-模拟);
% cons5 = (cb) < = b;
cons1 = e - a - d > = 0.1;
cons2 = d - > = 0.1;
cons3 = cb > = 0.1;
cons4 = b - > = 0.1;
cons5 =(英汉)> = 0.1;
prob.Constraints。cons1 = cons1;
prob.Constraints。cons2 = cons2;
prob.Constraints。cons3 = cons3;
prob.Constraints。cons4 = cons4;
prob.Constraints。cons5 = cons5;
x0。= 4;
x0。b = 6;
x0。c = 8;
x0。d = 7;
x0。e = 12;
%的新变量
AB =√。^ 2 + b。^ 2);
公元前= sqrt (c。^ 2 + ((e d) / 2)。^ 2);
c = sqrt (c。^ 2 + ((e d) / 2)。^ 2);
还有VAB =√((((。* v) ^ 2 / (((b . ^ 2)。* 4))) + (v ^ 2) / 2)));
%根据=√((* v) ^ 2 / ((4 * * b)) + (v ^ 2) / 2));
风投= ((2 * c)。/ (e d))。* sqrt (AB . ^ 2);
VBC = CS。^ 2 + BC。^ 2;
%目标函数表达式的优化变量。
P = (AB。*还有VAB + BC。* VBC + CS。* VCS)。* k * w;
沃尔特·罗伯森
2021年10月8日
%定义优化变量和一个优化问题对象。
一个= optimvar (“一个”,下界的,0.1,“UpperBound”,20);
b = optimvar (“b”,下界的,0.1,“UpperBound”,20);
c = optimvar (“c”,下界的,0.1,“UpperBound”,20);
d = optimvar (' d ',下界的,0.1,“UpperBound”,20);
e = optimvar (“e”,下界的,0.1,“UpperBound”,20);
概率= optimproblem;
k = 2;
w = 1;
v = 1.5;
%的约束
% cons1 = e > = (+ d);
% cons2 = d > =;
% cons3 = b < = c;
% cons4 = (e d) > =(数字-模拟);
% cons5 = (cb) < = b;
cons1 = e - a - d > = 0.1;
cons2 = d - > = 0.1;
cons3 = cb > = 0.1;
cons4 = b - > = 0.1;
cons5 =(英汉)> = 0.1;
prob.Constraints。cons1 = cons1;
prob.Constraints。cons2 = cons2;
prob.Constraints。cons3 = cons3;
prob.Constraints。cons4 = cons4;
prob.Constraints。cons5 = cons5;
x0。= 4;
x0。b = 6;
x0。c = 8;
x0。d = 7;
x0。e = 12;
%的新变量
AB =√。^ 2 + b。^ 2);
公元前= sqrt (c。^ 2 + ((e d) / 2)。^ 2);
c = sqrt (c。^ 2 + ((e d) / 2)。^ 2);
还有VAB =√((((。* v) ^ 2 / (((b . ^ 2)。* 4))) + (v ^ 2) / 2)));
%根据=√((* v) ^ 2 / ((4 * * b)) + (v ^ 2) / 2));
风投= ((2 * c)。/ (e d))。* sqrt (AB . ^ 2);
VBC = CS。^ 2 + BC。^ 2;
%目标函数表达式的优化变量。
P = (AB。*还有VAB + BC。* VBC + CS。* VCS)。* k * w;
%概率的目标函数。
概率。目标= P;
索尔=解决(x0概率)
使用fmincon解决问题。目标函数值较低的可行点。局部最小值发现,满足约束。优化完成,因为目标函数中引入可行的方向,在最优值的宽容,和约束满足约束的值公差内。
索尔=结构体字段:
0.1000 b: 0.2000度:0.3000 d: 9.2995 e: 9.6959
更多的答案(0)
一个错误发生
无法完成的行动,因为页面所做的更改。重新加载页面更新状态。
你也可以从下面的列表中选择一个网站
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。