优化加权和
32视图(30天)
显示旧的评论
我想优化权重
的总和
,在那里
z
是深度(厘米)
。条款
向量(代表剂量)的尺寸吗
为
已经固定的,知道输入值。我需要优化这些权重
在该地区
,在那里
是一个常数向量的大小
(见附图),为了平高原尽可能多。
谁能帮我解决一下这个问题吗?
许多感谢提前任何指导和考虑!
3评论
接受的答案
马特·J
2022年3月28日
编辑:马特·J
2022年3月28日
你不包括Dconst或相应的z,所以我的输赢都从你的附加jpg图像。
负载Dose.mat
C = (D1、D2、D3、D4 D5, D6, D7, D8);
[m, n] =大小(C);
Dconst = 0.1 * 1 (m, 1);%近似从jpg图像
z = linspace(0、8.5米);%近似从jpg图像
英国石油(bp) = 5.5 < = & z < = 8.5;%布拉格峰间隔
w = lsqlin (C(英国石油(bp):), Dconst (bp), [], [], (1, n), 1, 0 (n, 1), (n, 1));
情节(z, [C * w, Dconst]);传奇(“Dtot”,“Dconst”,“位置”,“东南”)
答案(1)
约翰D 'Errico
2022年3月28日
编辑:约翰D 'Errico
2022年3月28日
首先,学习使用数组! ! ! ! ! ! ! !
不要创建8种不同编号的变量。为什么有意义,当你可以创建一个数组,称之为剂量?
剂量= [D1、D2、D3、D4 D5, D6, D7, D8);
MATLAB语言是一个矩阵。学会使用它。无论如何,为了使用lsqlin,您将需要一个数组。
接下来,您实际上并不提供Dtot。所以我们可以帮你更多吗?可能不是真的,如果你的目标是真正achueve特定剂量的目标。如果你的目标是实现一个尽可能大的总剂量在整个地区,那么你可能会这样做:
达因= 0.12 * 1 (501 1);%无法实现,但谁在乎呢?恒星的目的。
磅= 0 (1,8);
乌兰巴托= 1 (1,8);
= 1 (1,8);%等式约束:之和必须等于1
B = 1;
W = lsqlin(剂量,达因,[][],A, B,磅,乌兰巴托)
最低发现满足约束条件。
优化因为目标函数引入在完成
可行的方向,在最优值的宽容,
和约束满足约束的值公差内。
<停止标准详细信息>
W =
0.0271916622048387
0.043945469132034
0.0555504667354272
0.0671084337012187
0.0905029933411581
0.113513538791469
0.167454011263868
0.434733424829987
情节(剂量* W)
事先,我玩一些数字,想知道解决方案会是什么样子。这大约是我发现,至少如果你的目标是一条曲线看起来模糊的像你策划的目标。
如果你想要更高的加载在左边,你需要什么东西和一些质量。然而,通过目标只是有点下降,你可以使结果,只是一点。
达因= 0.1 * 1 (501 1);
W = lsqlin(剂量,达因,[][],(1,8),1,0 (8),(1,8))
最低发现满足约束条件。
优化因为目标函数引入在完成
可行的方向,在最优值的宽容,
和约束满足约束的值公差内。
<停止标准详细信息>
W =
0.0800640800727342
0.0450974697116315
0.0615545440518655
0.0676444663541099
0.0843898048745855
0.110747769607969
0.135846098000183
0.414655767326922
情节(剂量* W)
这显然有一个平坦的高原,你显示的是你的目标。