作业帮 > 综合 > 作业

Matlab 优化工具箱目标函数写法

来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/17 17:07:59
Matlab 优化工具箱目标函数写法
我现在需要做一个线性规划.目前函数是这样的:目标函数建立了一个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
Matlab 优化工具箱目标函数写法
很多条件不明确: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的优化函数都是把所有的条件一次性提交,而且一个优化步骤可能多次调用目标函数,用户是无法分辨优化进行到哪一步的。而且,目标函数的参数反复变化,可能导致问题根本无法收敛。 建议楼主把原始问题贴出来,你建立的模型可能从思路上就是错的,那样再怎么做也无法得到正确答案的。
再问: 能否站内信我,我们详细交流一下。谢谢 双月r
再答: 我觉得是这样:你如果能静下心来,好好梳理一下思路,应该是能够把问题表达清楚的;但如果以现在这样的草率态度,我和你反复互动,会浪费很多时间。

你不妨看一看我上面回答你的内容,无论是表述还是排版,我都是认真对待的,连错别字都尽量避免,目的就是能尽量准确地把问题指出,避免无谓的反复。将心比心,态度稍微认真一些,尽可能表达清楚,是做研究的基本要求,也是对别人的起码尊重。

忠言逆耳,希望不会引起你的不快。但假如你对我所说的很介意,那我也就没什么可说的了。