使用优化工具箱在非线性矩阵操作

1视图(30天)
我在寻找优化问题如下,我不知道如何优化通过Matlab代码或工具箱。
我有一个最小成本的问题
参数如下所示:
BidPrices =(4735, 4730, 4727, 410409 .7,409, 59岁,58.8,58.5);%的参数包括投标价格列3证券。
BidQuantity = (7000, 2500, 1081, 320, 1500, 25000, 754000, 20000, 101026];%为每个投标报价数量
OpenPrice = (4735; 410; 59.1)%的公开价格
重量= (0.5;0.25;0.25)
数量= 0(三3)%变量最小化
f = Qunatity * BidPrices%函数最小化
约束:
%积极的非零数量浮点数值用
数量> = 0
数量=整数
%数量不能超过收购数量
(数量:1)< = BidQuantity (: 1);
(数量:2)< = BidQuantity (:, 2);
(数量:3)< = BidQuantity (:, 3);
%的总指数的变化从OpenPrice高于1%
%的第一步:定义活动价格矩阵也因为从bid1 bid2数量改变的价格指数
I = 1:长度(OpenPrice)
如果数量(我,1)> 0 & &数量(我,2)> 0
EffectivePrice(我,1)= 0
其他的
EffectivePrice(我,1)= 0
结束
如果EffectivePrice(我,1)= = 0 & &数量(我,2)= = 0 & &数量(我,3)= = 0
EffectivePrice(我,2)= 0
其他的
EffectivePrice(我,2)= 0
结束
如果EffectivePrice(我,1)= = 0 & &数量(我,3)> 0
EffectivePrice(我,3)= 1
其他的
EffectivePrice(我,3)= 0
结束
结束
%步骤2:定义约束
约束= ((EffectivePrice * BidPrices *权重)/ (OpenPrice *权重))1 < = 0.01
%如何正确地把它写在Matlab代码以便Matlab可以解决吗?我没有成功的工具。
1评论
马特·J
马特·J 2017年1月5日
f = Qunatity * BidPrices%函数最小化
这是一个3 * 3矩阵值数量,所以还不清楚“最小化”意味着什么

登录置评。

答案(2)

马特·J
马特·J 2017年1月4日
您将使用INTLINPROG Optimziation工具箱
9日评论
Yossi
Yossi 2017年1月5日
你能请帮我演示如何改述最后约束(限制的1%)

登录置评。


沃尔特·罗伯森
沃尔特·罗伯森 2017年1月5日
你有
约束= ((EffectivePrice * BidPrices *权重)/ (OpenPrice *权重))1 < = 0.01
在任何一个时候,EffectivePrice是试验值和BidPrices和权重的向量和OpenPrice输入。
所以开始做一些代数:
((EffectivePrice * BidPrices *权重)/ (OpenPrice *权重))1 < = 0.01
impies
((EffectivePrice * BidPrices *权重)/ (OpenPrice *权重))< = 1.01
意味着
((EffectivePrice * BidPrices *权重)< = 1.01 * (OpenPrice *权重)
意味着
EffectivePrice < = 1.01 * (OpenPrice *权重)/ (BidPrices *权重)
右边的一切都提前知道,所以它可以作为upperbound计算。
现在我们遇到的问题OpenPrice和权重都是3 x 1所以你不能“*”在一起。如果我们想这公式
1.01 * (OpenPrice。*权重)/ (BidPrices *权重)
然后我们得到
ans =
0.505346858984519 0 0
0.0218787974850742 0 0
0.00315374861309241 0 0
现在我们通过代码我们可以看到EffectivePrice是一个二进制变量,值0除了在EffectivePrice(我,1)= = 0 & &数量(我,3)> 0。我们可以看到,所有的约束值0或小于1的值。需要二进制值,这告诉我们,EffectivePrice必须恒等于0。
这个分析假设当你写
约束= ((EffectivePrice * BidPrices *权重)/ (OpenPrice *权重))1 < = 0.01
,即使(EffectivePrice * BidPrices *权重)/ (OpenPrice *权重))是一个3 x 3矩阵,,你想要“1”适用于所有9项。计算不同如果“1”应该成为眼睛(3)
…你还没有解释如何“最小化”f = Qunatity * BidPrices 3 x 3
1评论
Yossi
Yossi 2017年1月7日
“EffectivePrice”,条件是,第二个报价应该有效只有在第一次报价的数量填满。因此,我不确定在园艺学会是一个真正的约束条件。关于函数的极小化,我想要改变的成本1%的价格(这要花钱在购买第一,第二,第三的报价),可能性也会被减到最小。这是我写的错了吗?

登录置评。

类别

找到更多的在线性规划和整数线性规划帮助中心文件交换

s manbetx 845

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!