我正在开发一个交互式作业调度应用程序.给定一组具有相应容量/可用性配置文件的资源,一组要在这些资源上执行的作业以及一组约束,这些约束确定作业顺序和作业的最早/最晚开始/结束时间我想让用户手动移动周围的工作.基本上我希望用户能够"抓住"作业网络的节点并在不违反任何约束的情况下及时向前/向后拖动它.
该图显示了一个简单的示例配置.最后的三角形作业表示所有作业的最新完成时间,作业之间的连接线对作业施加顺序,灰色/绿色条表示资源可用性和负载.
您可以拖动任何作业来压缩计划.请注意,由于容量配置文件不同,作业的长度会发生变化.
我已经实现了一种有效的ad-hock算法.但是仍然存在失败并违反某些限制的情况.然而,由于作业车间调度是一个研究很充分的领域,有很多算法和启发式方法可以找到一般的NP难问题的最优(或相当好)解决方案 - 我认为解决方案应该存在于我更容易的子集中.我已经研究了约束编程主题甚至基于物理的解决方案(通过静态关节连接的刚体),但到目前为止找不到合适的东西.任何指针/提示/提示/搜索关键词对我来说?
language-agnostic algorithm scheduling graph constraint-programming
我没有在这个课程中发现任何错误,但Netbeans在该课程上不断显示红色符号.上课是
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package ea;
/**
*
* @author riyad
*/
import java.util.Random;
import java.util.BitSet;
public class Individual
{
BitSet variable;
double x;
double fitness;
double sharedFitness;
final int SIZE;
Random generator = new Random();
public Individual(int SIZE)
{
this.variable = new BitSet(SIZE);
this.fitness = 0;
this.sharedFitness = 0;
this.SIZE = SIZE;
for(int i=0; i<SIZE; i++)
{
if(generator.nextBoolean())
{
variable.set(i);
}
else
{ …Run Code Online (Sandbox Code Playgroud) 我是java的新手.说,我有一个班级个人.我想要打印
Individual ind = new Individual();
System.out.println(ind);
Run Code Online (Sandbox Code Playgroud)
上面的代码给出了如下输出:
Individual@1922221
Run Code Online (Sandbox Code Playgroud)
我在面试中被问到一个问题如果我们在try和catch块之间放置finally块会发生什么情况我会回答在这种情况下编译器会认为没有catch块并且它将直接执行finally块.然后他问为什么不能在try和catch块之间放置代码?
你能帮我么...
我想修改llvm指令的调试信息,以便随后将修改后的调试信息传递给可执行二进制文件.因此,如果我在二进制文件上使用"addr2line"实用程序,它将返回我修改的调试信息.
我尝试使用以下代码段进行更改:
MDNode *N = Inst->getMetadata("dbg");
DebugLoc Loc = DebugLoc::get(newLine, newCol, N);
Inst->setDebugLoc(Loc);
Run Code Online (Sandbox Code Playgroud)
我通过使用读回DebugLoc
const DebugLoc D = Inst->getDebugLoc();
unsigned Line = D.getLine();
outs() << Line <<"\n";
Run Code Online (Sandbox Code Playgroud)
但我无法正确设置调试信息.如何通过llvm pass正确更改调试信息?
根据我教C++的经验,操作员重载是导致学生最悲伤的主题之一.甚至在stackoverflow上查看问题:例如,将+运算符设为外部或成员?如何处理对称性等,似乎很麻烦.
当我从C++迁移到Java时,我担心我会错过这种能力,但除了像[]或()之类的运算符之外,我真的不觉得需要重载运算符.事实上,我觉得没有它们的程序更具可读性.
注意:我把它作为社区维基.我们来讨论一下.我想听听意见.
我遇到了几个关于OCL表达式的问题.在阅读了一些大学幻灯片和Google搜索后,我仍然无法正确理解它.
我想知道你们中是否有人知道我应该阅读的任何好资源来理解这些东西.
困扰我的限制因素:
我有第一个:
上下文部
inv self.stuff - > forAll(manager = self.staff.manager)
第二个:
上下文公司
inv self.employee - > select(manager = manager.manager) - > isEmpty()
第三个:
上下文公司
inv self.employee - > select(salary> manager.salary) - > isEmpty()
但我不认为这些是正确的.我最不确定的是,在实例2和3中,我是否将个体员工与他们的实际经理/经理薪水进行比较.
所以我正在实现一个启发式算法,我遇到过这个功能.
我有一个1到n的数组(C,0到n-1,w/e).我想选择一些我将复制到另一个数组的元素.给定参数y,(0 <y <= 1),我希望得到平均值为(y*n)的数字分布.这意味着每当我调用此函数时,它会给出一个介于0和n之间的数字,这些数字的平均值为y*n.
根据作者,"l"是一个随机数:0 <l <n.在我的测试代码中,它当前生成0 <= l <= n.我有正确的代码,但我现在已经搞乱这几个小时了,而且我懒得把它编码回来.
所以我编写了函数的第一部分,对于y <= 0.5,我将y设置为0.2,并将n设置为100.这意味着它必须返回0到99之间的数字,平均为20.并且结果不是0和n,但有些漂浮.更大的n是,这个浮子越小.
这是C测试代码."x"是"l"参数.
//hate how code tag works, it's not even working now
int n = 100;
float y = 0.2;
float n_copy;
for(int i = 0 ; i < 20 ; i++)
{
float x = (float) (rand()/(float)RAND_MAX); // 0 <= x <= 1
x = x * n; // 0 <= x <= n
float p1 = (1 - y) / (n*y);
float p2 = …Run Code Online (Sandbox Code Playgroud) 我正在编写一个程序来实现我在文献中找到的算法.在这个算法中,我需要一个while循环;
while(solution has changed){
updateSolution();
}
Run Code Online (Sandbox Code Playgroud)
为了检查while条件是否满足,我创建了一个名为copy的Object(与解决方案类型相同).在更新解决方案之前,此副本是解决方案的副本.因此,如果解决方案发生了变化,则会满足while循环中的条件.
但是,我在执行while循环时找到两个对象条件的最佳解决方案时遇到了一些问题,因为我从一个空解决方案(结果集)开始,并且副本在那时也是空的(都使用构造函数调用班级).这意味着当执行while循环时,两个对象都是相等的,因此while循环中的所有语句都不会被执行.
我现在的解决方案是创建一个在while循环之前设置为true的虚拟变量,并在其中设置为false.我怀疑这是最好的解决方案,所以我想知道是否有这个问题的标准解决方案(某种方式迫使程序始终运行while循环的第一次迭代)?
代码现在是:
SolutionSet solution = new SolutionSet();
SolutionSet copy = new SolutionSet();
boolean dummy = true;
while((!solution.equals(copy)) || dummy){
dummy = false;
copy = solution.copy();
solution.update() // here some tests are done and one object may be added to solution
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用导入CSV文件:ArraylistStringTokenizer
public class Test
{
public static void main(String [] args)
{
List<ImportedXls> datalist = new ArrayList<ImportedXls>();
try
{
FileReader fr = new FileReader("c:\\temp.csv");
BufferedReader br = new BufferedReader(fr);
String stringRead = br.readLine();
while( stringRead != null )
{
StringTokenizer st = new StringTokenizer(stringRead, ",");
String docNumber = st.nextToken( );
String note = st.nextToken( ); /** PROBLEM */
String index = st.nextToken( ); /** PROBLEM */
ImportedXls temp = new ImportedXls(docNumber, note, index);
datalist.add(temp);
// read …Run Code Online (Sandbox Code Playgroud) java ×5
c++ ×2
algorithm ×1
ant-colony ×1
arraylist ×1
constraints ×1
csv ×1
graph ×1
heuristics ×1
import ×1
iteration ×1
llvm ×1
llvm-ir ×1
modeling ×1
montecarlo ×1
netbeans ×1
object ×1
probability ×1
scheduling ×1
try-catch ×1
uml ×1
while-loop ×1