java - 用 java 或 c# 表示 ampl 模型代码?

标签 java c# ampl code-conversion

我用 ampl 模型软件解决了一个问题。我需要将代码转换为 java 或 c# 以打印出结果。我如何在 java 中表示 ampl 模型代码。有图书馆吗?如何在 Java 和 C# 中表示目标函数和最大化函数? 请帮我解决这个问题。

我的 AMPL 代码:

param i;    #Supply
param j;    #Demand
param k;    #Time

var x{1..i,1..j,1..k} binary;

maximize z_flow : sum{a in 1..k} (x[1,1,a]+x[1,5,a] +  x[2,1,a]+x[2,3,a] + x[3,2,a]+x[3,3,a] + x[4,1,a]+ x[4,2,a] + x[4,4,a] + x[5,2,a]+x[5,3,a]);

subject to supply1cons{a in 1..k} : (x[1,1,a] + x[1,5,a]) <= 1;
subject to supply2cons{a in 1..k} : (x[2,1,a] + x[2,3,a]) <= 1;
subject to supply3cons{a in 1..k} : (x[3,2,a] + x[3,3,a]) <= 1;
subject to supply4cons{a in 1..k} : (x[4,1,a] + x[4,2,a] + x[4,4,a]) <= 1;
subject to supply5cons{a in 1..k} : (x[5,2,a] + x[5,3,a]) <= 1;

subject to demand1cons{a in 1..k} : (x[1,1,a] + x[2,1,a] + x[4,1,a]) <= 1;
subject to demand2cons{a in 1..k} : (x[3,2,a] + x[4,2,a] + x[5,2,a]) <= 1;
subject to demand3cons{a in 1..k} : (x[2,3,a] + x[3,3,a] + x[5,3,a]) <= 1;
subject to demand4cons{a in 1..k} : (x[4,4,a]) <= 1;
subject to demand5cons{a in 1..k} : (x[1,5,a]) <=1;

subject to cap1 : sum{a in 1..k}(x[1,1,a]) = 2;
subject to cap2 : sum{a in 1..k}(x[1,5,a]) = 8;
subject to cap3 : sum{a in 1..k}(x[2,1,a]) = 3;
subject to cap4 : sum{a in 1..k}(x[2,3,a]) = 4;
subject to cap5 : sum{a in 1..k}(x[3,2,a]) = 1;
subject to cap6 : sum{a in 1..k}(x[3,3,a]) = 7;
subject to cap7 : sum{a in 1..k}(x[4,1,a]) = 5;
subject to cap8 : sum{a in 1..k}(x[4,2,a]) = 2;
subject to cap9 : sum{a in 1..k}(x[4,4,a]) = 6;
subject to cap10 : sum{a in 1..k}(x[5,2,a]) = 4;
subject to cap11 : sum{a in 1..k}(x[5,3,a]) = 3;

最佳答案

AMPL 是一种建模语言,您可以通过合理的努力创建模型。

然后,AMPL 环境调用一个求解器(如果您愿意,可以作为后端)真正解决您的问题。 AMPL 不能解决您的问题。

幸好你的问题很简单,建模语言部分可以放弃。尽管如此,您仍然需要一个可以为您解决问题的求解器。

你的问题是二进制整数规划问题。任何可以处理整数变量的线性规划求解器都是候选者。求解器通常用 C 或 C++ 编写,因此您需要一个具有 Java 或 C# 接口(interface)的求解器。

最后,您将使用求解器附带的 API 编写/构建您的问题。


候选人:

另见

关于java - 用 java 或 c# 表示 ampl 模型代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13827531/

相关文章:

java - Collectors.groupingBy 和 map

java - Java 中的清除 protected 双向链表

c# - 创建 DynamicMethod 以在任何类型上设置只读字段

c# - 尽管产生了意外的堆栈溢出

c# - OWIN 启动 : Entry point was not found

AMPL 变量定义

java - 覆盖另一个项目中的 Java 类

java - 用正则表达式分割字符串

python - 将类型实例转换为字典

python - pyomo 中的无效索引/值错误,有什么提示吗?