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
展开
 我来答
匿名用户
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的优化函数都是把所有的条件一次性提交,而且一个优化步骤可能多次调用目标函数,用户是无法分辨优化进行到哪一步的。而且,目标函数的参数反复变化,可能导致问题根本无法收敛。

 

建议楼主把原始问题贴出来,你建立的模型可能从思路上就是错的,那样再怎么做也无法得到正确答案的。

如风清澈x
2014-05-15 · 超过43用户采纳过TA的回答
知道答主
回答量:131
采纳率:0%
帮助的人:69.6万
展开全部
没太看懂你在函数中写的i是什么意思。。。
线性规划的话,对于x没有约束的么。。 不然怎么优化。
追问
抱歉,函数没写全:
i的意思是希望做一个循环,让这个表达式算A次。
function [output] = Caly(x,A,B)

output=0;
for i=1:A
output=output+x(1)+B*x(2);
end
output;
end
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式