作者asiabanana (bananabrother)
看板MATLAB
标题[讨论] fmincon求最佳解问题
时间Tue Oct 30 21:27:26 2018
我的主程式可以求得我空间节点分布关系的矩阵
接着求出这个矩阵的次小特徵值
然後这个主程式的变量为一个X的座标向量
现在想要用fmincon的工具求出我X的摆放位置
来使我的次小特徵值可以达到最大
我的主程式如下
clc
clear all
A=[];
b=[];
x0=[0;0;0]
X = fmincon(@myfun,x0,A,b)
然後这是myfun的内容
f=myfun(X)
.
.
.
.
输入X会得出一个L矩阵
[V,Eig]=eig(L);
f=-Eig(2,2); %这个为我想要让他得到最大值的解 因要求最大解所以有加负号
end
虽然可以成功执行
但是找出来的X值都会是我设定的x0
Command Window内没有看到他去做迭代的过程
直接显示
Optimization completed because at the initial point, the objective function
is non-decreasing
in feasible directions to within the default value of the optimality
tolerance, and
constraints are satisfied to within the default value of the constraint
tolerance.
麻烦懂这个工具的高手拯救一下了!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.116.92.20
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/MATLAB/M.1540906049.A.802.html
1F:推 sunev: 没有constaint 干嘛不用fminunc ? 10/30 22:40
2F:推 sunev: x0给太烂,导致x0变一点点目标无变化,做不下去 10/30 22:45
3F:→ asiabanana: 其实是有限制式的 想先试试看没有限制是跑不跑得出来 10/31 00:36
4F:→ asiabanana: 我明天会试试看另一个函式! 10/31 00:36
5F:推 profyang: 你的X的每个分量值差很多吗?之前试过把它normalize到一 10/31 17:41
6F:→ profyang: 个比较接近的范围就解决了 给你参考而已 我也不确定 10/31 17:42
7F:→ asiabanana: 我现在的问题是他每步迭代的值太小 所以跳不出变化 10/31 23:02
8F:→ asiabanana: 除非我的初值设得十分接近 不然完全跑不动 10/31 23:02
9F:→ asiabanana: 现在再想有没有方法可以调整他的stepsize 10/31 23:03
10F:推 sunev: 你有自己算过stepsize要多大才合理吗?我怀疑你的函数根本 11/01 14:04
11F:→ sunev: 是类似step function 11/01 14:05
12F:→ asiabanana: 我自己大概算过 我的stepsize大约是0.5~1 11/01 15:02
13F:→ asiabanana: 但是command window里每次迭代都是0.0001 变化太小 11/01 15:03
14F:→ asiabanana: 如果可以让我迭代次数达我自己设置的值应该就解决了 11/01 15:49
15F:推 sunev: 如果你确定你的问题不是离散形的话,改x的scale大概是一个 11/02 08:49
16F:→ sunev: 办法,不然就是生出一个gradient 11/02 08:50
17F:推 profyang: 我上面的意思就是改x的scale 例如把x全部除以一个合理的 11/02 22:18
18F:→ profyang: 数 在稍微变动一下你的函数 出来结果一样就好 11/02 22:19
19F:→ profyang: 要不然就像上面说的自己写gradient 用数值的grad也可以 11/02 22:19
20F:→ profyang: 但一样就是你去近似微分的dx的scale要合理 11/02 22:20
21F:推 sherees: 有点久的文了 不知道原PO有没有被回答到 11/19 11:33
22F:→ sherees: 推测可能是起始落在 saddle point 求不出导数所以卡住 11/19 11:34
23F:→ sherees: 可以先试试normalization(这部分你可能需要研究一下自 11/19 11:36
24F:→ sherees: 定义函数在各个维度的scaling) 11/19 11:36
25F:→ sherees: 另外就是起始值给noise 11/19 11:37