我正在研究一个二进制线性程序问题。
我对任何计算机语言都不是很熟悉(刚学了几个月的 Java 和 C++),但我可能不得不使用计算机,因为问题相当复杂。
第一步是为(至少 8 X 8)矩阵 M 中的每个条目声明变量 m_ij。然后我将矩阵的每个元素的相应值分配给这些变量中的每一个。
接下来是生成其他变量集 x_ij1、x_ij2、x_ij3、x_ij4 和 x_ij5,只要 m_ij 的值不为 0。x_ijk 变量的值是 0 或 1,我不必为x_ijk 变量。
可能最简单的方法是为每个变量声明并分配一个值,例如
int* m_11 = 5, int* m_12 = 2, int* m_13 = 0, ... int* m_1n = 1
int* m_21 = 3, int* m_12 = 1, int* m_13 = 2, ... int* m_2n = 3
然后选择不为0的变量,并相应地声明x_ij1~x_ij5。
但这可能工作量太大,特别是因为我要为这个问题考虑许多不同的矩阵。
有没有办法自动做到这一点?
我知道一点 Java 和 C++,我正在考虑在 C++ 中使用 lp_solve 包(解决二进制整数线性程序问题),但如果我能轻松做到这一点,我愿意使用任何其他语言或程序。
我确信一定有某种方法可以做到这一点(可能使用循环,我猜?),这是一个非常简单的任务,但我只是不知道,因为我没有太多的编程语言。
我的一个团队编写了一个程序,用于生成满足我们需要的某些条件的随机矩阵,所以如果我可以使用该矩阵作为我的输入,它可能是理想的,但到目前为止,任何方法都可以。
比如说,如果有办法用 MS excel 来做,比如将矩阵条目放入 excel 文件中的单元格,然后将其导入 C++ 并自动生成变量并为其赋值,那么这将大大简化任务交易!