我有一个由一些变量和线性约束定义的线性问题,我想知道每个变量的可能值区间。
例如,对于变量a、b和c,以及约束a>b、b>c和a+b+c=100,我们有:
a in [33.33-100] b in [0-50] c in [0-33.33]
现在,我的解决方案是使用的线性规划求解器,并将每个变量设置为优化函数,使其最大化,具有上界,然后最小化,使其具有其下界。
这使我在每个变量中重复两次求解步骤,这可能不是最优的。
有人知道有一个工具专门用来寻找线性规划变量可能的解区间吗?
我正在尝试学习如何有效地使用R中的apply系列。我有以下数字向量
>aa
[1] 0.047619 0.000000 NaN 0.000000 0.000000 0.000000 0.000000 0.000000
[9] NaN NaN 0.000000 NaN NaN NaN NaN NaN
[17] 0.000000 0.000000 NaN NaN NaN NaN NaN NaN
[25] NaN 0.100000 0.000
我试图使用python/scipy计算两个极限之间的积分。
我正在使用在线计算器双重检查我的结果(,),当我设定了某些限制时,我的结果不同意。
所用的代码是:
import scipy as sp
import numpy as np
def integrand(x):
return np.exp(-0.5*x**2)
def int_test(a,b):
# a and b are the lower and upper bounds of the integration
return sp.integrate.quad(integrand,a,b)
当设定(a,
我使用lmfit来寻找拟合的置信区间,但它经常给我一个错误:ValueError: f(a) and f(b) must have different signs
下面是一个最小的工作示例(运行几次就会得到错误):
import lmfit
import numpy as np
def residual(p, X):
a1, a2, t1, t2 = [i.value for i in p.values()]
return a1*np.exp(-x/t1)+a2*np.exp(-x/t2)-y
if __name__ == '__main__'
我问题的一部分是最小化某些数字的加权和的绝对值。我必须找到重量。
假设我有一组A,a1,a2,a3和a4,使得(a1,a2 > 0),(a3,a4 < 0)
最小重量为0.1 (10%),最大为0.4 (40%)。我在寻找权重w,其方式是加权和为零;如果不可能为零,则最接近于零。可以使用一个简单的线性模型来实现这一点:
Minimise E
E >= SUM w * a
E >= -(SUM w * a)
SUM w = 1
w >= 0.1 for all w
w <= 0.4 for all w
一个简单的线性规划就足以很快地找到解。但是,我非常想找到
我想知道为什么下面的线性规划会有区别。它们是用编写的。我假设x=1将是这两种情况下的最佳解决方案。
方案A:
min: x;
x >= 1;
bin x;
输出:
Value of objective function: 0
Actual values of the variables:
x 0
程序B(模拟具有整数约束和两个附加约束的二进制约束):
min: x;
x >= 1;
x <= 1;
x >= 0;
int x;
输出:
Value of objective function: 1.000000
我想生成一个分区列表,而不必手动键入它们,我还可以选择要创建多少个分区。我使用的是按范围划分。请看下面的例子。
P_PARTITION_20120830 VALUES LESS THAN ('2012-08-30')
P_PARTITION_20120930 VALUES LESS THAN ('2012-09-30')
P_PARTITION_20121030 VALUES LESS THAN ('2012-10-30')
...
and so on
这就是我到目前为止所想出来的。
select 'P_PARTITION_'
我正在尝试创建一个随机数生成器,它首先交换最小值和最大值,然后再次交换它们(返回到它们的原始状态?)。我的另外两个问题是:如何判断交换是否实际发生(因为它似乎是一个不可见的过程),以及无论选择哪两个值作为最小值和最大值,随机数输出始终为1。
#include <string>
#include <cstdlib>
#include <iostream>
using namespace std;
int minimum;
int maximum;
//Swap function
void swap (int& minimum, int& m
想象一下,我是一家面包店,试图用有限的配料最大限度地增加馅饼的数量。
下面的每个饼图配方A, B, C, and D只能生成一个饼图:
A = i + j + k
B = t + z
C = 2z
D = 2j + 2k
*食谱总是具有线性形式,如上图所示。
我有以下成分:
4 of i
5 of z
4 of j
2 of k
1 of t
我想要一个算法来最大化我的馅饼产量,因为我的配料数量有限。
这些示例输入的最优解将产生以下数量的馅饼:
2 x A
1 x B
2 x C
0 x D
= a total of 5 pies
我可以通过选择所有组合中最大的生产者来很容易地解决这个问题,但
我需要一个LP,你可以把两个非常数相乘。下面是我正在尝试执行的以下代码:
import cvxpy as cvx
a = cvx.Variable()
b = cvx.Variable()
c = cvx.Variable()
obj = cvx.Maximize(((0.4270437386 * a) + (0.1737677971 * b) + (0.21763175116 * c) - 0.03) / (((((2 * a * 0.424718270) * b) * (0.195770376 ** 0.5)) * (0.022090814 ** 0.5)) * ((2 * c *