如何在JUNG图形可视化中使用自定义顶点标签?
我遵循Jung 2.0 Tutorial,我发现setVertexLabelTransformer()可以用来标记顶点,但据我所知,这些标签无法自定义.
例如,下面的代码生成三个顶点,顶点标签1,2,4:
import edu.uci.ics.jung.algorithms.layout.CircleLayout;
import edu.uci.ics.jung.algorithms.layout.Layout;
import edu.uci.ics.jung.graph.Graph;
import edu.uci.ics.jung.graph.SparseMultigraph;
import edu.uci.ics.jung.visualization.BasicVisualizationServer;
import java.awt.Dimension;
import javax.swing.JFrame;
public class SimpleGraphView {
Graph<Integer, String> g;
public SimpleGraphView() {
g = new SparseMultigraph<Integer, String>();
g.addVertex((Integer)1);
g.addVertex((Integer)2);
g.addVertex((Integer)4);
}
public static void main(String[] args) {
SimpleGraphView sgv = new SimpleGraphView();
Layout<Integer, String> layout = new CircleLayout(sgv.g);
layout.setSize(new Dimension(800,800));
BasicVisualizationServer<Integer,String> vv =
new BasicVisualizationServer<Integer,String>(layout);
vv.setPreferredSize(new Dimension(850,850));
JFrame frame = new JFrame("Simple Graph View");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(vv);
frame.pack(); …Run Code Online (Sandbox Code Playgroud) 我试图通过使用Hill Climbing算法来理解禁忌搜索,以解决旅行商问题.
我理解'纯' 爬山算法,但Tabu搜索如何改变这个算法对我来说不是很清楚.
爬山示范:
让我们说,我们给了6个城市A,B,C,D,E,F,我们随机选择一个初始状态:(A,B,C,D,E,F),旅行费用为120.
然后我将选择一组邻近状态(通过将第一个元素与第二,第三,第四等交换),并计算每个状态的旅行成本:
(B,A,C,D,E,F) = 110 /* <120; mark as optimal */
(C,B,A,D,E,F) = 127
(D,B,C,A,E,F) = 145
(E,B,C,D,A,F) = 102 /* <110; mark as optimal */
(F,B,C,D,E,A) = 80 /* <102; mark as optimal */
Run Code Online (Sandbox Code Playgroud)
现在我们找到了局部最优:(F,B,C,D,E,A).
Tabu搜索如何改变上述算法?如果你能展示一两次迭代,我将非常感谢.
我有一个JavaScript函数,它不能提供我想要的结果.
这是代码(它是JavaScript函数的一部分):
<%
String myStringVariable = "no";
%>
alert("yes"); // This alert gets shown.
alert(<%=myStringVariable%>); // But this alert doesn't get shown.
Run Code Online (Sandbox Code Playgroud)
我不明白为什么第二个警报不起作用.有人可以找出原因吗?
我有一个方法,它采用Object类型的参数.
protected Object foo(Object data) {
Double[] values = (Double[]) data; //Line-A
return Math.sqrt(Math.pow(values[0] - values[3], 2)
+ Math.pow(values[1] - values[4], 2)
+ Math.pow(values[2] - values[5], 2));
}
Run Code Online (Sandbox Code Playgroud)
在运行时,此函数在Line-A处抛出异常:
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.Double;
Run Code Online (Sandbox Code Playgroud)
我怎样才能使这个功能起作用?
我们可以假设以下内容吗?
data)的参数是类型Object[],我无法更改其类型.鉴于这些假设,我怎样才能使这个功能起作用?
java ×2
algorithm ×1
casting ×1
javascript ×1
jsp ×1
jung ×1
optimization ×1
swing ×1
tabu-search ×1
visualizer ×1