Matlab 优化工具箱目标函数写法
我现在需要做一个线性规划。目前函数是这样的:目标函数建立了一个m文件:function[output]=Caly(x,A,B)%A和B是固定的两个值,因为每次优化都需要导...
我现在需要做一个线性规划。目前函数是这样的:目标函数建立了一个m文件:
function [ output] = Caly(x,A,B )
%A和B是固定的两个值,因为每次优化都需要导入不同的A和B,所以只能这么写了。
for i=1:A
output=x(1)+B*x(2);
end
我希望对这里面的x进行优化,怎么处理?
x有个范围,是整数。
急求帮助!
感谢各位网友热心回答,针对我没有描述清楚的问题,我再补充说明一下:
一. 是这样的,问题的关键是我如何修改或者能够使用matlab解决我这个目标函数优化问题,也许是我的定义有误,他可能不是个线性规划问题,仅仅是需要拿matlab解决的优化问题。
二. 我想说明的问题是A、B都是已知的参数。
假设A=[10,5,6……],B=[1,2,3;4,5,6;……]
假设其中x1,x2的取值范围是[10,100],和[0,1000]
即第一次优化目标函数时,A=10,B=[1,2,3]
第二次优化这个目标时,A=5,B=[4,5,6]
三. 抱歉,函数没写清楚。
function [ output] = Caly(x,A,B )
output=0;
for i=1:A
output=output+x(1)+B*x(2);
end
output;
end 展开
function [ output] = Caly(x,A,B )
%A和B是固定的两个值,因为每次优化都需要导入不同的A和B,所以只能这么写了。
for i=1:A
output=x(1)+B*x(2);
end
我希望对这里面的x进行优化,怎么处理?
x有个范围,是整数。
急求帮助!
感谢各位网友热心回答,针对我没有描述清楚的问题,我再补充说明一下:
一. 是这样的,问题的关键是我如何修改或者能够使用matlab解决我这个目标函数优化问题,也许是我的定义有误,他可能不是个线性规划问题,仅仅是需要拿matlab解决的优化问题。
二. 我想说明的问题是A、B都是已知的参数。
假设A=[10,5,6……],B=[1,2,3;4,5,6;……]
假设其中x1,x2的取值范围是[10,100],和[0,1000]
即第一次优化目标函数时,A=10,B=[1,2,3]
第二次优化这个目标时,A=5,B=[4,5,6]
三. 抱歉,函数没写清楚。
function [ output] = Caly(x,A,B )
output=0;
for i=1:A
output=output+x(1)+B*x(2);
end
output;
end 展开
2个回答
2014-05-15
展开全部
很多条件不明确:
1、【每次优化都需要导入不同的A和B】,到底A和B是什么?
2、【x有个范围,是整数】,也就是说还有其他约束条件,为什么不给出来?
3、我很怀疑,这样的目标函数还算是线性规划吗?当然,由于前面说的【x是整数】,已经决定了这是整数规划问题。
更多追问追答
追问
一.是这样的,也许是我的定义有误,他可能不是个线性规划问题,仅仅是需要拿matlab解决的优化问题。
二. 我想说明的问题是A、B、x的取值范围都是已知的参数。
假设A=[10,5,6……],B=[1,2,3;4,5,6;……]
假设其中x1,x2的取值范围是[10,100],和[0,1000]
即第一次优化目标函数时,A=10,B=[1,2,3]
第二次优化这个目标时,A=5,B=[4,5,6]
等等……
追答
1、还是没说清楚A和B到底是什么。
猜测:A是一个向量,B是矩阵,A的元素个数和B的行数相同,每次调用取A的一个元素和B的一行?A的元素是整数吗?
那么,目标函数的代码
for i=1:A
output=output+x(1)+B*x(2);
end
又怎么理解?B*x(2)不成向量了?
2、所谓【第一次优化】【第二次优化】是什么意思?
对同一个问题,有多组数据,进行多次优化,得到多组结果?如果是这个意思,可以做,方法或者是用附加参数的方式,或者用嵌套函数(nested function)。
在优化过程中,每次调用目标函数都换一组数据?如果是这个意思,很遗憾,应该是做不到的,因为MATLAB的优化函数都是把所有的条件一次性提交,而且一个优化步骤可能多次调用目标函数,用户是无法分辨优化进行到哪一步的。而且,目标函数的参数反复变化,可能导致问题根本无法收敛。
建议楼主把原始问题贴出来,你建立的模型可能从思路上就是错的,那样再怎么做也无法得到正确答案的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询