我对我正在编写的CPLEX代码有一些疑问。代码本身(模型)似乎写得很好,但在填充数据时,我有一个错误。注意:模型中没有约束,因为我正在尝试对模型进行一次尝试,只是为了看看它是否有效。
代码如下:
using CP;
// NETWORK+PARAMETERS
int trucks=...; // set of trucks
range truck= 1..trucks;
int capacity [truck]=...; // capacity of a truck
tuple nodeinfo {
string name; // name of a node
int starttime; // available start time
int endtime; // available end time
float demand; // demand from a node
}
{nodeinfo} departurenode=...; //size=4
{nodeinfo} arrivalnode=...; //size=4
{nodeinfo} startingnode=...; //size=4
// OPTION 2: vector of nodes
//each node has tuple structure nodeinfo
//length of the vector is length of dataset
//read data from dataset
//void* node = new {nodeinfo} [k];
tuple arc {
nodeinfo departurenode; //departure node of an arc
nodeinfo arrivalnode; // arrival node of an arc
nodeinfo startingnode; // starting node of an arc
int traveltime; // travel time of an arc
}
{arc} arcs=...; //number of arcs (24)
float cost [arcs][truck]; //cost of using an arc by a truck
// option2: int arc[i in departurenode,j in arrivalnode,k in startingnode]=...; //arcs (size=24)
// how can i create a setof arcs taking into account the info from each arc??
// VARIABLES
dvar boolean x [arcs,truck]; // 1 if truck uses the arc, 0 otherwise (array of size 24x7)
dvar int+ arrivaltime [arrivalnode,truck]; //arrival time of a truck at a node (array size of 4x7)
// OBJECTIVE FUNCTION
dexpr float totalcost =
sum (i in arcs, j in truck) x [i,j] * cost [i,j];
minimize totalcost;
// CONSTRAINTS
subject to {}
execute {
writeln(arcs);
};
以下是数据:
trucks= 2;
departurenode= [[A,0,10000,0],[B,0,10000,0],[C,0,10000,10],[D,0,10000,10]];
arrivalnode= [[A,0,10000,0],[B,0,10000,0],[C,0,10000,10],[D,0,10000,10]];
startingnode=[[A,0,10000,0],[B,0,10000,0],[C,0,10000,10],[D,0,10000,10]];
arcs= [[<A,0,10000,0>,<A,0,10000,0>,<C,0,10000,10>,5], [<A,0,10000,0>,<A,0,10000,0>,<D,0,10000,10>,5],
[<B,0,10000,0>,<B,0,10000,0>,<C,0,10000,10>,5], [<B,0,10000,0>,<B,0,10000,0>,<D,0,10000,10>,5],
[<C,0,10000,0>,<C,0,10000,0>,<A,0,10000,10>,5], [<C,0,10000,0>,<C,0,10000,0>,<B,0,10000,10>,5],
[<D,0,10000,0>,<D,0,10000,0>,<A,0,10000,10>,5], [<D,0,10000,0>,<D,0,10000,0>,<B,0,10000,10>,5]]
cost= [<1,1>,<1,1>,<1,1>,<1,1>,<1,1>,<1,1>,<1,1>,<1,1>]
*注意:在行程时间(最后一个间隙值=5)之前的每个弧间隙中,必须是来自出发节点、到达节点和开始节点的数据,但未显示,我不知道为什么*
另一个疑问是:关于模型的约束,我不知道如何将它们写入CPLEX。
1) 开始时间
2) x*(到达时间(节点i)旅行时间)
3)将每辆卡车的可变到达时间初始化为0。(在模拟开始时)
4)每个到达节点的需求必须等于(所选弧*卡车容量)的总和
太谢谢你了。
让我来帮助您理解语法。
在. mod中
备注:
//int capacity [truck]=...; // capacity of a truck
因为它没有在.dat
中定义,并写入:
float cost [arcs][truck]=...;
因为那一个在<代码>中。dat。
这个dat应更改为:
trucks= 2;
departurenode= {<A,0,10000,0>,<B,0,10000,0>,<C,0,10000,10>,<D,0,10000,10>};
arrivalnode= {<A,0,10000,0>,<B,0,10000,0>,<C,0,10000,10>,<D,0,10000,10>};
startingnode={<A,0,10000,0>,<B,0,10000,0>,<C,0,10000,10>,<D,0,10000,10>};
arcs= {<<A,0,10000,0>,<A,0,10000,0>,<C,0,10000,10>,5>, <<A,0,10000,0>,<A,0,10000,0>,<D,0,10000,10>,5>,
<<B,0,10000,0>,<B,0,10000,0>,<C,0,10000,10>,5>, <<B,0,10000,0>,<B,0,10000,0>,<D,0,10000,10>,5>,
<<C,0,10000,0>,<C,0,10000,0>,<A,0,10000,10>,5>, <<C,0,10000,0>,<C,0,10000,0>,<B,0,10000,10>,5>,
<<D,0,10000,0>,<D,0,10000,0>,<A,0,10000,10>,5>, <<D,0,10000,0>,<D,0,10000,0>,<B,0,10000,10>,5>};
cost= [[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1]];
然后你将能够跑步,然后提高。
我已经删除了所有Azure虚拟机,现在我正在尝试从经典存储帐户中删除vhds容器存储blob。它给了我这个错误: Blob上当前有一个租约,请求中没有指定租约ID 我发现一篇文章提到了这个错误:https://blogs.technet.microsoft.com/thbrown/2015/04/04/there-is-currently-a-lease-on-the-blob-and-no-le
我正试图在模拟器中运行一个应用程序,但收到以下错误消息: 我以前在谷歌搜索时没有看到任何关于这一点的参考。 该应用程序使用Xcode6测试版,在Swift中链接到一个Obj-C静态库。在设备上运行良好。 有什么想法吗?
我试图使用Python、OpenCv2和LBPH实现人脸识别(从这里下载) 我的python版本是2.7.14 PIP版本是9.0.3 而OpenCV版本是3.4.0 我的代码是 当我运行任何人脸识别文件(如Recogniser\u Image\u All\u Algorithms.py)时,都会出现此错误 Traceback(最近的调用最后):文件Recogniser_Image_All_Alg
为什么会出现以下情况 导致以下错误 无法将类型“m”与“IO”匹配。“m”是一个刚性类型变量,由类型签名绑定:foo::forall(m::*- 据我所知,既然IO()应该等于MonadIO,MonadIO约束不应该允许这样做吗?
无法在 AnjularJS 应用程序中看到拖动的元素,即使执行了拖放操作且没有任何错误。 代码如下: 以下是执行和执行的不同方法,没有错误: 还执行了JavaScript方法:但是没有运气,它也执行没有错误,但无法执行拖放操作在UIenter图像描述在这里 上述所有方法和命令都是编译和执行的,没有任何错误,但无法在UI中执行拖放操作(请帮助)。 尝试了所有可能的组合,我知道任何人都可以让我知道我错
显示APII错误的图像制作了一个静止的API,它正在操作文件,然后将文件上传到第三方,然后它将有两个数据库操作。第一个是选择,第二个是插入。 在少数情况下,我得到200,但在某些情况下,我得到400。现在,当我得到400时,控制只在选择方法之前出现,该方法没有错误。 所以,看起来请求正在获得超时或其他什么。有人能建议正确的方法吗?我应该在哪里更改超时? 成功日志-[2019-04-11 10:09