一些数学经验总结——关于将原一元二次函数增加一些限制条件后最优结果的对比(主要针对公平关切相关的建模)

本文主要是介绍一些数学经验总结——关于将原一元二次函数增加一些限制条件后最优结果的对比(主要针对公平关切相关的建模),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.没有分段的情况

原函数为一元二次凹函数(开口向下),如下:

f_0(x)=(ax-b)(d-cx), where\ a>0,b>0,c>0, d>0, and\ \frac{b}{a} < \frac{d}{c}.

因为要使得其存在正解,必须满足\frac{b}{a} < x < \frac{d}{c},那么\frac{b}{a} < \frac{d}{c}

上述函数的最优结果为:x^*=\frac{a d+b c}{2 a c}f(x^*)=\frac{a^2 d^2-2 a b c d+b^2 c^2}{4 a c}

对应的mathematica代码如下:

Clear["Global`*"]
f0[x_, a_, b_, c_, d_] := (a*x - b)*(d - c*x);(*(b c+a d)/(2 a c)*)
Maximize[{f0[x, a, b, c, d], a > 0 && b > 0 && c > 0 && d > 0}, x]

对应的mathematica结果如下:

2. 两个分段的情况

其中,

(1)第一个分段的函数为原函数;

(2)第二分段的函数为原函数的变体,即:
(i)第一因式与原函数的第一因式一样,即都为ax-b;

(ii)第二因式在原函数的第二因式基础上减去一部分(即ex-f),即为(d-cx)-(ex-f)

(3)其中分段点为减去部分为零时候的x值(即ex-f=0\Rightarrow x=\frac{f}{e}

\begin{array}{l} F(x) = \left\{ {\begin{array}{*{20}{c}} {​{f_0}(x)}&{x \le \frac{​{​{f_1}}}{​{​{e_1}}}}\\ {​{f_{1}}(x)}&{x > \frac{​{​{f_1}}}{​{​{e_1}}}} \end{array}} \right. = \left\{ {\begin{array}{*{20}{c}} {(ax - b)(d - cx)}&{x \le \frac{​{​{f_1}}}{​{​{e_1}}}}\\ {(ax - b)[(d - cx) - ({e_1}x - {f_1})]}&{x > \frac{​{​{f_1}}}{​{​{e_1}}}} \end{array}} \right.\\ = \left\{ {\begin{array}{*{20}{c}} {(ax - b)(d - cx)}&{x \le \frac{​{​{f_1}}}{​{​{e_1}}}}\\ {(ax - b)[(d + {f_1}) - (c + {e_1})x]}&{x > \frac{​{​{f_1}}}{​{​{e_1}}}.} \end{array}} \right. \end{array}

where\ a>0,b>0,c>0, d>0, \frac{b}{a} < \frac{d}{c}, e_1>0, f_1>0, and\ \frac{b}{a} < \frac{​{d + {f_1}}}{​{c + {e_1}}}.

针对第一分段f_0(x),在无限制条件情况下,最优结果为:x^*=\frac{a d+b c}{2 a c}f_0(x^*)=\frac{a^2 d^2-2 a b c d+b^2 c^2}{4 a c}

针对第二分段f_1(x),在无限制条件情况下,最优结果为:{x^*} = \frac{​{(ad + bc) + (a{f_1} + b{e_1})}}{​{2(ac + a{e_1})}}f_1(x^*)={\frac{​{​{​{(b(c + e_1) - a(d + f_1))}^2}}}{​{4a(c + e_1)}}}

外生参数的大小关系(可以利用mathematica验证):

(1)成立的一些:

(i)\frac{b}{a}<\frac{a d+b c}{2 a c}<\frac{d}{c}

(ii)\frac{b}{a} < \frac{​{\left( {bc + ad} \right) + \left( {b{e_1} + af_1} \right)}}{​{2\left( {ac + a{e_1}} \right)}} < \frac{​{d + {f_1}}}{​{c + {e_1}}}

(2)不成立的一些:

(i)\frac{​{ad + bc}}{​{2ac}} < \frac{​{​{f_1}}}{​{​{e_1}}} < \frac{​{(ad + bc) + (a{f_1} + b{e_1})}}{​{2(ac + a{e_1})}}

(ii)\frac{​{​{f_1}}}{​{​{e_1}}} < \frac{​{ad + bc}}{​{2ac}} < \frac{​{(ad + bc) + (a{f_1} + b{e_1})}}{​{2(ac + a{e_1})}}

mathematica的代码如下:

Clear["Global`*"]
f0[x_, a_, b_, c_, d_] := (a*x - b)*(d - c*x);(*(b c+a d)/(2 a c)*)
f1[x_, a_, b_, c_, d_, e1_, f1_] := (a*x - b)*((d - c*x) - (e1*x - f1));(*((b c+a d)+(b e+a f))/(2 (a c+a e) )*)
(*f1[x_,a_,b_,c_,d_,e1_,f1_]:=(a*x-b)*((d+f1)-(c+e1)*x);*)Fx[x_, a_, b_, c_, d_, e1_, f1_] := Piecewise[{{f0[x, a, b, c, d], x <= f1/e1}, {f1[x, a, b, c, d, e1, f1], x > f1/e1}}];Reduce[a > 0 && b > 0 && c > 0 && d > 0 && e1 > 0 && f1 > 0 && b/a < d/c && b/a < (d + f1)/(c + e1)]Reduce[a > 0 && b > 0 && c > 0 && d > 0 && e1 > 0 && f1 > 0 && b/a < d/c && b/a < (d + f1)/(c + e1) && b/a < (b c + a d)/(2 a c) < d/c]
Reduce[a > 0 && b > 0 && c > 0 && d > 0 && e1 > 0 && f1 > 0 && b/a < d/c && b/a < (d + f1)/(c + e1) && b/a < ((b c + a d) + (b e1 + a f1))/(2 (a c + a e1) ) < (d + f1)/(c + e1)]
Reduce[a > 0 && b > 0 && c > 0 && d > 0 && e1 > 0 && f1 > 0 && b/a < d/c && b/a < (d + f1)/(c + e1) && (b c + a d)/(2 a c) < f1/e1 < ((b c + a d) + (b e1 + a f1))/(2 (a c + a e1) )]
Reduce[a > 0 && b > 0 && c > 0 && d > 0 && e1 > 0 && f1 > 0 && b/a < d/c && b/a < (d + f1)/(c + e1) && f1/e1 < (b c + a d)/(2 a c) < ((b c + a d) + (b e1 + a f1))/(2 (a c + a e1) )](*Reduce[a>0&&b>0&&c>0&&d>0&&e1>0&&f1>0&&b/a<d/c&&b/a<(d+f1)/(c+e1)&&(\
b c+a d)/(2 a c)>f1/e1&&f1/e1<((b c+a d)+(b e1+a f1))/(2 (a c+a e1) \
)&&f1[((b c+a d)+(b e1+a f1))/(2 (a c+a e1) ),a,b,c,d,e1,f1]>f0[(b \
c+a d)/(2 a c),a,b,c,d]]*)

比较重要的结论

(1)当\frac{​{ad + bc}}{​{2ac}} \le \frac{​{​{f_1}}}{​{​{e_1}}},那么最优的结果为${x^*} = \frac{​{ad + bc}}{​{2ac}}$

(2)当\frac{​{ad + bc}}{​{2ac}} > \frac{​{​{f_1}}}{​{​{e_1}}}

(2.1)当\frac{​{(ad + bc) + (a{f_1} + b{e_1})}}{​{2(ac + a{e_1})}} \le \frac{​{​{f_1}}}{​{​{e_1}}},那么最优的结果为{x^*} = \frac{​{​{f_1}}}{​{​{e_1}}},注意{f_0}(\frac{​{ad + bc}}{​{2ac}}) > {f_0}(\frac{​{​{f_1}}}{​{​{e_1}}})

(2.2)当\frac{​{(ad + bc) + (a{f_1} + b{e_1})}}{​{2(ac + a{e_1})}} > \frac{​{​{f_1}}}{​{​{e_1}}},那么最优的结果为{x^*} = \frac{​{(ad + bc) + (a{f_1} + b{e_1})}}{​{2(ac + a{e_1})}},注意{f_0}(\frac{​{ad + bc}}{​{2ac}}) > {f_1}(\frac{​{(ad + bc) + (a{f_1} + b{e_1})}}{​{2(ac + a{e_1})}})(可以利用mathematica验证)。

那么,总而言之,我们可以得出F(x)\leq f_0(x),当且仅当${x^*} = \frac{​{ad + bc}}{​{2ac}}$时,等号取到,即F(x)= f_0(x)

mathematica的代码如下:

Clear["Global`*"]
f0[x_, a_, b_, c_, d_] := (a*x - b)*(d - c*x);(*(b c+a d)/(2 a c)*)
f1[x_, a_, b_, c_, d_, e1_, f1_] := (a*x - b)*((d - c*x) - (e1*x - f1));(*((b c+a d)+(b e+a f))/(2 (a c+a e) )*)
(*f1[x_,a_,b_,c_,d_,e1_,f1_]:=(a*x-b)*((d+f1)-(c+e1)*x);*)Fx[x_, a_, b_, c_, d_, e1_, f1_] := Piecewise[{{f0[x, a, b, c, d], x <= f1/e1}, {f1[x, a, b, c, d, e1, f1], x > f1/e1}}];(*Reduce[a>0&&b>0&&c>0&&d>0&&e1>0&&f1>0&&b/a<d/c&&b/a<(d+f1)/(c+e1)]Reduce[a>0&&b>0&&c>0&&d>0&&e1>0&&f1>0&&b/a<d/c&&b/a<(d+f1)/(c+e1)&&b/\
a<(b c+a d)/(2 a c)<d/c]
Reduce[a>0&&b>0&&c>0&&d>0&&e1>0&&f1>0&&b/a<d/c&&b/a<(d+f1)/(c+e1)&&b/\
a<((b c+a d)+(b e1+a f1))/(2 (a c+a e1) )<(d+f1)/(c+e1)]
Reduce[a>0&&b>0&&c>0&&d>0&&e1>0&&f1>0&&b/a<d/c&&b/a<(d+f1)/(c+e1)&&(b \
c+a d)/(2 a c)<f1/e1<((b c+a d)+(b e1+a f1))/(2 (a c+a e1) )]
Reduce[a>0&&b>0&&c>0&&d>0&&e1>0&&f1>0&&b/a<d/c&&b/a<(d+f1)/(c+e1)&&f1/\
e1<(b c+a d)/(2 a c)<((b c+a d)+(b e1+a f1))/(2 (a c+a e1) )]*)Reduce[a > 0 && b > 0 && c > 0 && d > 0 && e1 > 0 && f1 > 0 && b/a < d/c && b/a < (d + f1)/(c + e1) && (b c + a d)/(2 a c) > f1/e1 && f1/e1 < ((b c + a d) + (b e1 + a f1))/(2 (a c + a e1) ) && f1[((b c + a d) + (b e1 + a f1))/(2 (a c + a e1) ), a, b, c, d, e1, f1] > f0[(b c + a d)/(2 a c), a, b, c, d]]

3. 三个分段的情况

其中,

(1)第一个分段的函数为原函数;

(2)第二分段的函数为原函数的变体,即:
(i)第一因式与原函数的第一因式一样,即都为ax-b;

(ii)第二因式在原函数的第二因式基础上减去一部分(即ex-f),即为(d-cx)-(e_1x-f_1)

(3)其中第二分段点为减去部分为零时候的x值(即e_1x-f_1=0\Rightarrow x=\frac{f_1}{e_1}

(4)第三分段的函数为原函数的变体,即:
(i)第一因式与原函数的第一因式一样,即都为ax-b;

(ii)第二因式在原函数的第二因式基础上减去一部分(即e_2x - f_2),即为(d-cx)-(e_2x-f_2)

(5)其中第三分段点为减去部分为零时候的x值(即e_2x-f_2=0\Rightarrow x=\frac{f_2}{e_2}

\begin{array}{l} G(x) = \left\{ {\begin{array}{*{20}{c}} {​{f_0}(x)}&{x \le \frac{​{​{f_1}}}{​{​{e_1}}}}\\ {​{f_1}(x)}&{\frac{​{​{f_1}}}{​{​{e_1}}} < x \le \frac{​{​{f_2}}}{​{​{e_2}}}}\\ {​{f_2}(x)}&{x > \frac{​{​{f_2}}}{​{​{e_2}}}} \end{array}} \right. = \left\{ {\begin{array}{*{20}{c}} {(ax - b)(d - cx)}&{x \le \frac{​{​{f_1}}}{​{​{e_1}}}}\\ {(ax - b)[(d - cx) - ({e_1}x - {f_1})]}&{\frac{​{​{f_1}}}{​{​{e_1}}} < x \le \frac{​{​{f_2}}}{​{​{e_2}}}}\\ {(ax - b)[(d - cx) - ({e_2}x - {f_2})]}&{x > \frac{​{​{f_2}}}{​{​{e_2}}}} \end{array}} \right.\\ = \left\{ {\begin{array}{*{20}{c}} {(ax - b)(d - cx)}&{x \le \frac{​{​{f_1}}}{​{​{e_1}}}}\\ {(ax - b)[(d + {f_1}) - (c + {e_1})x]}&{\frac{​{​{f_1}}}{​{​{e_1}}} < x \le \frac{​{​{f_2}}}{​{​{e_2}}}}\\ {(ax - b)[(d + {f_2}) - (c + {e_2})x]}&{x > \frac{​{​{f_2}}}{​{​{e_2}}}.} \end{array}} \right. \end{array}

where\ a>0,b>0,c>0, d>0, \frac{b}{a} < \frac{d}{c}, e_1>0, f_1>0, \frac{b}{a} < \frac{​{d + {f_1}}}{​{c + {e_1}}}, e_2>0, f_2>0, \frac{b}{a} < \frac{​{d + {f_2}}}{​{c + {e_2}}}, and\ \frac{​{​{f_1}}}{​{​{e_1}}} < \frac{​{​{f_2}}}{​{​{e_2}}}.

针对第一分段f_0(x),在无限制条件情况下,最优结果为:x^*=\frac{a d+b c}{2 a c}f_0(x^*)=\frac{a^2 d^2-2 a b c d+b^2 c^2}{4 a c}

针对第二分段f_1(x),在无限制条件情况下,最优结果为:{x^*} = \frac{​{(ad + bc) + (a{f_1} + b{e_1})}}{​{2(ac + a{e_1})}}f_1(x^*)={\frac{​{​{​{(b(c + e_1) - a(d + f_1))}^2}}}{​{4a(c + e_1)}}}

针对第三分段f_2(x),在无限制条件情况下,最优结果为:{x^*} = \frac{​{(ad + bc) + (a{f_2} + b{e_2})}}{​{2(ac + a{e_2})}}f_2(x^*)={\frac{​{​{​{(b(c + e_2) - a(d + f_2))}^2}}}{​{4a(c + e_2)}}}

外生参数的大小关系(可以利用mathematica验证):

(1)成立的一些:

(i)\frac{b}{a}<\frac{a d+b c}{2 a c}<\frac{d}{c}

(ii)\frac{b}{a} < \frac{​{\left( {bc + ad} \right) + \left( {b{e_1} + af_1} \right)}}{​{2\left( {ac + a{e_1}} \right)}} < \frac{​{d + {f_1}}}{​{c + {e_1}}}

(iii)\frac{b}{a} < \frac{​{\left( {bc + ad} \right) + \left( {b{e_2} + af_2} \right)}}{​{2\left( {ac + a{e_2}} \right)}} < \frac{​{d + {f_2}}}{​{c + {e_2}}}

(2)不成立的一些:

(i)\frac{​{ad + bc}}{​{2ac}} < \frac{​{​{f_1}}}{​{​{e_1}}} < \frac{​{(ad + bc) + (a{f_1} + b{e_1})}}{​{2(ac + a{e_1})}}

(ii)\frac{​{​{f_1}}}{​{​{e_1}}} < \frac{​{ad + bc}}{​{2ac}} < \frac{​{(ad + bc) + (a{f_1} + b{e_1})}}{​{2(ac + a{e_1})}}

(i)\frac{​{ad + bc}}{​{2ac}} < \frac{​{​{f_2}}}{​{​{e_2}}} < \frac{​{(ad + bc) + (a{f_2} + b{e_2})}}{​{2(ac + a{e_2})}}

(ii)\frac{​{​{f_2}}}{​{​{e_2}}} < \frac{​{ad + bc}}{​{2ac}} < \frac{​{(ad + bc) + (a{f_2} + b{e_2})}}{​{2(ac + a{e_2})}}

比较重要的结论

(1)当\frac{​{ad + bc}}{​{2ac}} \le \frac{​{​{f_1}}}{​{​{e_1}}},那么最优的结果为${x^*} = \frac{​{ad + bc}}{​{2ac}}$

(2)当\frac{​{ad + bc}}{​{2ac}} > \frac{​{​{f_1}}}{​{​{e_1}}}

(2.1)当\frac{​{(ad + bc) + (a{f_1} + b{e_1})}}{​{2(ac + a{e_1})}} \le \frac{​{​{f_1}}}{​{​{e_1}}},那么第一分段与第二分段对比下最优的结果为{x^*} = \frac{​{​{f_1}}}{​{​{e_1}}},注意{f_0}(\frac{​{ad + bc}}{​{2ac}}) > {f_0}(\frac{​{​{f_1}}}{​{​{e_1}}})

(2.2)当\frac{​{(ad + bc) + (a{f_1} + b{e_1})}}{​{2(ac + a{e_1})}} > \frac{​{​{f_1}}}{​{​{e_1}}},那么第一分段与第二分段对比下最优的结果为{x^*} = \frac{​{(ad + bc) + (a{f_1} + b{e_1})}}{​{2(ac + a{e_1})}},注意{f_0}(\frac{​{ad + bc}}{​{2ac}}) > {f_1}(\frac{​{(ad + bc) + (a{f_1} + b{e_1})}}{​{2(ac + a{e_1})}})(可以利用mathematica验证);

(3)当\frac{​{ad + bc}}{​{2ac}} > \frac{​{​{f_2}}}{​{​{e_2}}}

(3.1)当\frac{​{(ad + bc) + (a{f_2} + b{e_2})}}{​{2(ac + a{e_2})}} \le \frac{​{​{f_2}}}{​{​{e_2}}},那么第一分段与第三分段对比下最优的结果为{x^*} = \frac{​{​{f_2}}}{​{​{e_2}}},注意{f_0}(\frac{​{ad + bc}}{​{2ac}}) > {f_0}(\frac{​{​{f_1}}}{​{​{e_1}}})

(3.2)当\frac{​{(ad + bc) + (a{f_2} + b{e_2})}}{​{2(ac + a{e_2})}} > \frac{​{​{f_2}}}{​{​{e_2}}},那么第一分段与第三分段对比下最优的结果为{x^*} = \frac{​{(ad + bc) + (a{f_2} + b{e_2})}}{​{2(ac + a{e_2})}},注意{f_0}(\frac{​{ad + bc}}{​{2ac}}) > {f_2}(\frac{​{(ad + bc) + (a{f_2} + b{e_2})}}{​{2(ac + a{e_2})}})(可以利用mathematica验证)。

那么,总而言之,我们可以得出G(x)\leq f_0(x),当且仅当${x^*} = \frac{​{ad + bc}}{​{2ac}}$时,等号取到,即G(x)= f_0(x)

该结论可以扩展到N个分段的情况下,也就是N个分段的函数的最优结果不会优于原函数f_0(x)的最优结果。

这篇关于一些数学经验总结——关于将原一元二次函数增加一些限制条件后最优结果的对比(主要针对公平关切相关的建模)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1147868

相关文章

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

使用Python实现Word文档的自动化对比方案

《使用Python实现Word文档的自动化对比方案》我们经常需要比较两个Word文档的版本差异,无论是合同修订、论文修改还是代码文档更新,人工比对不仅效率低下,还容易遗漏关键改动,下面通过一个实际案例... 目录引言一、使用python-docx库解析文档结构二、使用difflib进行差异比对三、高级对比方

GO语言中函数命名返回值的使用

《GO语言中函数命名返回值的使用》在Go语言中,函数可以为其返回值指定名称,这被称为命名返回值或命名返回参数,这种特性可以使代码更清晰,特别是在返回多个值时,感兴趣的可以了解一下... 目录基本语法函数命名返回特点代码示例命名特点基本语法func functionName(parameters) (nam

Python Counter 函数使用案例

《PythonCounter函数使用案例》Counter是collections模块中的一个类,专门用于对可迭代对象中的元素进行计数,接下来通过本文给大家介绍PythonCounter函数使用案例... 目录一、Counter函数概述二、基本使用案例(一)列表元素计数(二)字符串字符计数(三)元组计数三、C

Spring创建Bean的八种主要方式详解

《Spring创建Bean的八种主要方式详解》Spring(尤其是SpringBoot)提供了多种方式来让容器创建和管理Bean,@Component、@Configuration+@Bean、@En... 目录引言一、Spring 创建 Bean 的 8 种主要方式1. @Component 及其衍生注解

从基础到进阶详解Python条件判断的实用指南

《从基础到进阶详解Python条件判断的实用指南》本文将通过15个实战案例,带你大家掌握条件判断的核心技巧,并从基础语法到高级应用一网打尽,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录​引言:条件判断为何如此重要一、基础语法:三行代码构建决策系统二、多条件分支:elif的魔法三、

Python中的filter() 函数的工作原理及应用技巧

《Python中的filter()函数的工作原理及应用技巧》Python的filter()函数用于筛选序列元素,返回迭代器,适合函数式编程,相比列表推导式,内存更优,尤其适用于大数据集,结合lamb... 目录前言一、基本概念基本语法二、使用方式1. 使用 lambda 函数2. 使用普通函数3. 使用 N

MySQL中REPLACE函数与语句举例详解

《MySQL中REPLACE函数与语句举例详解》在MySQL中REPLACE函数是一个用于处理字符串的强大工具,它的主要功能是替换字符串中的某些子字符串,:本文主要介绍MySQL中REPLACE函... 目录一、REPLACE()函数语法:参数说明:功能说明:示例:二、REPLACE INTO语句语法:参数

Java实现本地缓存的四种方法实现与对比

《Java实现本地缓存的四种方法实现与对比》本地缓存的优点就是速度非常快,没有网络消耗,本地缓存比如caffine,guavacache这些都是比较常用的,下面我们来看看这四种缓存的具体实现吧... 目录1、HashMap2、Guava Cache3、Caffeine4、Encache本地缓存比如 caff

python中update()函数的用法和一些例子

《python中update()函数的用法和一些例子》update()方法是字典对象的方法,用于将一个字典中的键值对更新到另一个字典中,:本文主要介绍python中update()函数的用法和一些... 目录前言用法注意事项示例示例 1: 使用另一个字典来更新示例 2: 使用可迭代对象来更新示例 3: 使用