24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1720  |  回复: 9

chaojiali

木虫 (小有名气)

[求助] 请教有关线性规划的问题已有4人参与

线性规划要求目标函数和约束条件都是线性的,即不允许出现变量相乘或者相除的情况。
我现在基于混合整数线性规划改写一个模型,约束条件都是线性的(假设决策变量是a,b),目标函数我写出来后尽管没有a,b相乘的形式,但是却出现了绝对值符号,形如:
a+b+|a-b|+1,那么这样的目标函数还算是线性的吗,我这样写出来的一个规划模型还能按照线性规划求解吗?
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

小姑娘昕

新虫 (初入文坛)

【答案】应助回帖

感谢参与,应助指数 +1
这样算呐,a+b+|a-b|+1这里的绝对值可以分开I讨论嘛,这样是一次的依然是线性的呀,在编写程序的时候你也可以应用max(a,b)=1/2(|a+b|-|a-b|)以及min的表示~
做艰难的事,圆遥远的梦。
2楼2015-08-04 17:19:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

shuxue0

木虫 (正式写手)

【答案】应助回帖


感谢参与,应助指数 +1
chaojiali: 金币+1, 有帮助 2015-08-04 19:40:07
不是线性规划了,但是可以分类讨论,每类都是线性规划

[ 发自小木虫客户端 ]
3楼2015-08-04 17:42:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chaojiali

木虫 (小有名气)

引用回帖:
2楼: Originally posted by 小姑娘昕 at 2015-08-04 17:19:33
这样算呐,a+b+|a-b|+1这里的绝对值可以分开I讨论嘛,这样是一次的依然是线性的呀,在编写程序的时候你也可以应用max(a,b)=1/2(|a+b|-|a-b|)以及min的表示~

去绝对值符号,分开讨论的话还是线性规划,是这么个意思吧?
4楼2015-08-04 19:42:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

peterflyer

木虫之王 (文学泰斗)

peterflyer


【答案】应助回帖

感谢参与,应助指数 +1
有绝对值符号会导致数学处理的困难,如不易求导数等。因此严格来讲不属线性规划问题。

[ 发自手机版 http://muchong.com/3g ]
5楼2015-08-04 21:42:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

suntree4152

铁虫 (正式写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
chaojiali: 金币+3, ★★★很有帮助 2015-08-04 23:01:54
chaojiali: 金币+6, ★★★★★最佳答案 2015-08-07 11:08:52
是可以的,只需增加一个附加变量c,令c=|a-b|, 则 argmin(a, b) a+b+|a-b|+1 就等价为:
argmin(a, b, c) a+b+c+1, subject to c>=a-b, c>=b-a         (1)
(1)为线性规划形式
6楼2015-08-04 22:52:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chaojiali

木虫 (小有名气)

引用回帖:
5楼: Originally posted by peterflyer at 2015-08-04 21:42:08
有绝对值符号会导致数学处理的困难,如不易求导数等。因此严格来讲不属线性规划问题。

我的a,b两个变量只有0和1两个取值可能,用绝对值符号只是为了获得我想要的组合情况,即我只需要a和b都为1的情况,所以写成了(a+b-1+|a+b-1|)/2。我还以为写了绝对值之后就避免了a和b相乘的情况,变成线性的了。
7楼2015-08-04 22:58:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chaojiali

木虫 (小有名气)

引用回帖:
6楼: Originally posted by suntree4152 at 2015-08-04 22:52:16
是可以的,只需增加一个附加变量c,令c=|a-b|, 则 argmin(a, b) a+b+|a-b|+1 就等价为:
argmin(a, b, c) a+b+c+1, subject to c>=a-b, c>=b-a         (1)
(1)为线性规划形式

我不懂argmin()这个函数什么意思,请点拨一下。另外,我感觉你是通过引入了一个与a,b有关的变量去绝对值,同时增加了约束条件。关于你的那个约束条件,为什么这样写呢?因为我验证的话c要么等于(a-b),要么等于(b-a),一般表示等的关系不是习惯用“≥”配合“≤”去逼吗?

我现在的形式是(a+b-1+|a+b-1|)/2,依你的方法,应该设c=|a+b-1|,然后转化为(a+b+c-1)/2,那么这里c的约束改如何去写呢?
8楼2015-08-04 23:14:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

suntree4152

铁虫 (正式写手)

引用回帖:
8楼: Originally posted by chaojiali at 2015-08-04 23:14:45
我不懂argmin()这个函数什么意思,请点拨一下。另外,我感觉你是通过引入了一个与a,b有关的变量去绝对值,同时增加了约束条件。关于你的那个约束条件,为什么这样写呢?因为我验证的话c要么等于(a-b),要么等于( ...

argmin 的意思是minimize with respect to arguments, argmin(a, b, c) f(a, b, c), s.t. g(a, b, c)<=0是指以a, b, c为自变量的约束最优化,其中目标函数为f, 约束函数为g.单纯从约束条件 “c>=a-b, c>=b-a”看, c的取值是大于或等于|a-b|,在结合最小化目标函数"min a+b+c+1"c不能取大于|a-b|的数,只能取值为|a-b|。

你目前的形式的转换也完全类似,就是引入新变量c后在附加的约束条件里面把c描述为大于等于替换的绝对值项,这个就留给你当练习了
9楼2015-08-05 09:15:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

kubilife

新虫 (小有名气)

也遇到这样的困惑了

[ 发自手机版 http://muchong.com/3g ]
10楼2016-01-19 15:44:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 chaojiali 的主题更新
信息提示
请填处理意见