我怎样才能得到好的解决方案?? 我需要一个乘积 od 矩阵和变量向量的最小化并尝试这些线我只得到最佳解决方案是 0...
!pip install gekko
from gekko import GEKKO
import numpy as np
import pandas as pd
lista1 = [0,1,2,3,4,3,2,1,2]
lista2 = [1,0,1,2,3,3,2,2,1]
lista3 = [2,1,0,1,2,3,3,3,2]
lista4 = [3,2,1,0,1,2,1,2,2]
lista5 = [4,3,2,1,0,1,2,3,3]
lista6 = [3,3,3,2,1,0,1,2,2]
lista7 = [2,2,3,1,2,1,0,1,1]
lista8 = [1,2,3,2,3,2,1,0,2]
lista9 = [2,1,2,2,3,2,1,2,0]
df_distancias = pd.DataFrame(list(zip(lista1,lista2,lista3,lista4,lista5,lista6,lista7,lista8,lista9)),columns=['col1','col2','col3','col4','col5','col6','col7','col8','col9'])
df_distancias
func_obj = df_distancias.to_numpy()
func_obj
m = GEKKO()
q = m.Array(m.Var,(9,6),lb=0,ub=1,integer=True)
producto_matricial = np.dot(func_obj,q)
m.Minimize(sum(producto_matricial[i,j]*q[i,j] for i in range(9) for j in range(6)))
vector_columna = m.Param(value=[3,5,4,4,4,3])
vector_fila = m.Param(value=[4,3,2,4,2,2,2,2,2])
vector_fila
for i in range(6):
m.Equation(m.sum(q[i,j] for j in range(9))==vector_columna[i])
for i in range(9):
m.Equation(m.sum(q[i,j] for j in range(6))==vector_fila[i])
m.options.SOLVER = 1
我需要最小化矩阵和变量向量的乘积并尝试这些线我只得到最佳解决方案是 0 ...
我试图用 GEKKO 包解决 MILNP,但我无法在这个小例子中得到正确的解决方案……我得到的解决方案是 0。 当我的目标函数是(方矩阵 * 变量向量)的矩阵乘积时,我需要知道如何解决非线性规划优化问题。我将需要它用于一个巨大的维度,但是有一个简单的例子是很好的