是否可以在scipy.optimize.linprog中的相等矩阵中包含条件?

时间:2019-01-25 18:10:37

标签: python scipy mathematical-optimization

我正在设置一个简单的线性优化,其中我将C * x最小化,其中C是成本,x是取决于多个约束的变量。主要的等式约束是x [2] = x [1] + x [25],或者-x [1] + x [2] -x [25] = 0。

但是实际上,x [25]的实际值将取决于x [25]是正还是负。因此,它应该更像这样:

if x[25]>0  
-x[1]+x[2]-1.11*x[25]=0  
if x[25]<0  
-x[1]+x[2]-0.9*x[25]=0  

因此,简而言之,有人知道scipy.optimize,linprog是否能够包含输入矩阵值的条件,在这种情况下为A_eq? 这是我的代码示例:

import numpy as np 
import scipy.optimize as spo
f=np.concatenate(np.zeros((24,1)),cost.reshape((24,1))
A=np.vstack((-np.identity(24),np.identity(24)))
b=np.vstack((Max_x,Min_x))
#Aeq repeats several times, but is the same throughout for loop
Aeq=np.append(np.append(np.array([-1,1]),np.zeros((1,22))),np.array(-1)) 
#the last value is what I want to make conditional on the value of x
beq=np.zeros((25,1)) 
bounds_x=np.tile((None,None),24,1)
res=spo.linprog(f,A_ub=A,b_ub=b,A_eq=Aeq,B_eq=beq,bounds=bounds_x)

所以我要更改的主要内容是Aeq  Aeq的最终值是eff,eff取决于x的符号。

0 个答案:

没有答案